Игра Змейка на C++: Урок 1 — Создание карты

Подготовка проекта

Создан пустой проект в 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;
    }
}

В этом уроке создана базовая игровая карта для игры «Змейка». В последующих уроках будет реализована игровая логика, управление змейкой и обработка столкновений.

Что будем искать? Например,программа