123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #include <iostream>
- #include <windows.h>
- #include "Const.h"
- #include "Field.h"
- #include "Food.h"
- #include "Snake.h"
- #include "Game.h"
- #include "winconsole.h"
- int timeout = 500; //Таймаут задержки между шагами игры; > 100 (ms), 1000 - будет задерживать выполнение программы на 1 секунду
- int game_on;//Признак продолжения игры
- void init_game()//Устанавливаются начальные значения параметров игры.
- {
- srand(time(0));//установка начала последовательности, генерируемой функцией rand()
- init_snake();//Инициализация массива индексов положения змейки (snake_size с консоли)
- system("cls");//полная очистка консоли
- start_snake();//Задание рандомного начального положения головы змейки
- init_field();//Инициализация поля (символы заполнения поля и границ)
- set_snake();//Змейка устанавливается в игровом поле
- print_field();//печать поля
- std::cout << "Press any key" << std::endl;//5) Вывод приглашения к игре.
- }
- void set_snake()//Змейка устанавливается в игровом поле
- {
- field[snake_x[0]] = head_symbol;//устаановка головы
- // установка хвоста, если есть
- for (int i = 1; i < snake_size; i++)
- {
- field[snake_x[L - i]] = tail_symbol;
- }
- }
- void clear_snake()//Очищается позиция змейки в массиве
- {
- //чистим "хвост"
- field[snake_x[L - snake_size]] = field_symbol;
- }
- void set_food() // Еда устанавливается в игровом поле.
- {
- if (!food_flag && snake_size < L)//если нет еды и змейка не достигла максимального размера
- {
- do
- {
- generate_food();
- } while (field[food_x] != field_symbol);
- field[food_x] = food_symbol;
- food_flag = true;
- }
- }
- void check_eating()//Выполняется проверка того, что змейка съела еду.
- {
- if (field[snake_x[0]] == food_symbol)//впереди еда
- {
- food_flag = false;//еды нет
- snake_size++; //увеличение размера змейки
- }
- }
- void check_snake()//Выполняется проверка того, что змейка встретилась с границей поля.
- {
- //if (field[snake_x[0]] == border_symbol) //голова встретилась с границей
- if (snake_x[0] == columns-1) //голова встретилась с границей
- {
- }
- }
- void check_game()//Проверка завершения игры.
- {
- if (!food_flag && snake_size == L)//если нет еды и змейка максимального размера
- {
- std::cout << "The End" << std::endl;//вывести сообщение об окончании игры
- exit(0);//выйти из программы
- }
- }
|