Подготовка проекта
Создан пустой проект в Visual Studio (версия не критична). Добавлен пустой файл Game.cpp, в который включена библиотека iostream и объявлено пространство имён std. Создана основная функция main с возвращаемым значением 0.
#include <iostream>
using namespace std;
int main() {
return 0;
}
Функции и переменные игры
Для организации кода созданы функции setup(), draw(), input() и logic(), отвечающие за настройку, отрисовку, обработку ввода и игровую логику соответственно. Добавлена булева переменная game_over, изначально равная false, сигнализирующая о начале игры. В функции setup ей присваивается значение false.
bool game_over = false;
Определены следующие переменные:
- width (const int): Ширина игрового поля (20).
- height (const int): Высота игрового поля (20).
- x, y (int): Координаты змейки.
- fruit_x, fruit_y (int): Координаты фрукта.
- score (int): Текущий счёт игрока.
Для управления направлением движения змейки используется перечисление EDirection:
enum EDirection { STOP = 0, LEFT, RIGHT, UP, DOWN };
EDirection dir;
Основной цикл игры
В функции main, после вызова setup(), используется цикл while, работающий пока game_over равно false. Внутри цикла вызываются функции draw(), input() и logic(), обеспечивая игровой процесс.
int main() {
setup();
while (!game_over) {
draw();
input();
logic();
}
return 0;
}
Инициализация переменных:
- dir устанавливается в STOP.
- x и y устанавливаются в центр игрового поля (width / 2, height / 2).
- fruit_x и fruit_y инициализируются случайными значениями (реализация не показана).
- score устанавливается в 0.
Функция draw()
Функция draw() очищает терминал (system("cls") для Windows, system("clear") для Linux/macOS) и рисует границы игрового поля с помощью символа #. Пробелы используются для заполнения внутреннего пространства карты.
void draw() {
system("cls"); // или system("clear")
for (int i = 0; i < height + 2; i++) {
for (int j = 0; j < width + 2; j++) {
if (i == 0 || i == height + 1 || j == 0 || j == width + 1)
cout << "#";
else
cout << " ";
}
cout << endl;
}
}
В этом уроке создана базовая игровая карта для игры «Змейка». В последующих уроках будет реализована игровая логика, управление змейкой и обработка столкновений.