Game.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include <iostream>
  2. #include <windows.h>
  3. #include "Const.h"
  4. #include "Field.h"
  5. #include "Food.h"
  6. #include "Snake.h"
  7. #include "Game.h"
  8. #include "winconsole.h"
  9. int timeout = 500; //Таймаут задержки между шагами игры; > 100 (ms), 1000 - будет задерживать выполнение программы на 1 секунду
  10. int game_on;//Признак продолжения игры
  11. void init_game()//Устанавливаются начальные значения параметров игры.
  12. {
  13. srand(time(0));//установка начала последовательности, генерируемой функ­цией rand()
  14. init_snake();//Инициализация массива индексов положения змейки (snake_size с консоли)
  15. system("cls");//полная очистка консоли
  16. start_snake();//Задание рандомного начального положения головы змейки
  17. init_field();//Инициализация поля (символы заполнения поля и границ)
  18. set_snake();//Змейка устанавливается в игровом поле
  19. print_field();//печать поля
  20. std::cout << "Press any key" << std::endl;//5) Вывод приглашения к игре.
  21. }
  22. void set_snake()//Змейка устанавливается в игровом поле
  23. {
  24. field[snake_x[0]] = head_symbol;//устаановка головы
  25. // установка хвоста, если есть
  26. for (int i = 1; i < snake_size; i++)
  27. {
  28. field[snake_x[L - i]] = tail_symbol;
  29. }
  30. }
  31. void clear_snake()//Очищается позиция змейки в массиве
  32. {
  33. //чистим "хвост"
  34. field[snake_x[L - snake_size]] = field_symbol;
  35. }
  36. void set_food() // Еда устанавливается в игровом поле.
  37. {
  38. if (!food_flag && snake_size < L)//если нет еды и змейка не достигла максимального размера
  39. {
  40. do
  41. {
  42. generate_food();
  43. } while (field[food_x] != field_symbol);
  44. field[food_x] = food_symbol;
  45. food_flag = true;
  46. }
  47. }
  48. void check_eating()//Выполняется проверка того, что змейка съела еду.
  49. {
  50. if (field[snake_x[0]] == food_symbol)//впереди еда
  51. {
  52. food_flag = false;//еды нет
  53. snake_size++; //увеличение размера змейки
  54. }
  55. }
  56. void check_snake()//Выполняется проверка того, что змейка встретилась с границей поля.
  57. {
  58. //if (field[snake_x[0]] == border_symbol) //голова встретилась с границей
  59. if (snake_x[0] == columns-1) //голова встретилась с границей
  60. {
  61. }
  62. }
  63. void check_game()//Проверка завершения игры.
  64. {
  65. if (!food_flag && snake_size == L)//если нет еды и змейка максимального размера
  66. {
  67. std::cout << "The End" << std::endl;//вывести сообщение об окончании игры
  68. exit(0);//выйти из программы
  69. }
  70. }