Всем привет! За год обучения программированию, я ни разу не делал консольные игры, просто было не интересно, но недавно решил сделать и мой выбор пал на динозаврика из гугла:
![](https://habrastorage.org/getpro/habr/upload_files/f25/201/699/f25201699770c125ae96068a8ad55448.png)
Конечно мы не сможем сделать такое же в консоли, но примерный геймплей сделаем:
![](https://habrastorage.org/getpro/habr/upload_files/b91/947/8b2/b919478b274d10ab7c08a30512c3d683.png)
Для начала разобьём по пунктам, что нам надо:
1. Что бы двигалось поле
2. Что бы был счётчик
3. Что бы мы могли прыгать
4. Ну и конечно же смерть персонажа
Такое написать не очень сложно, так что даже ребёнок поймёт как это сделать.
Начнём писать сам код.
Изначально нам нужно объявить карту нашей игры:
![2д карта игры 2д карта игры](https://habrastorage.org/getpro/habr/upload_files/f68/708/f2d/f68708f2d19f154075783b8407b12fe9.png)
Карта нашей игры - это двумерный массив, который состоит из 4 строк и 14 строк.
На первой строке у нас подобие неба.
На второй строке у нас пустая строка, в будущем туда будет перемещаться наш динозаврик.
На третьей строке у нас находиться динозаврик, а именно доллар, и много пробелов. Пробелы нужны для ограничения будущих препятствий, потому что если если эти ячейки не будут заняты, то мы не сможешь различать по столбцам где находиться препятствие, и всё будет сходиться к "$|".
На четвёртой строке у нас находиться наша дорога, она будет статичной всё время.
Далее нам нужна функция для вывода матрица:
![Функция вывода матрицы в консоль Функция вывода матрицы в консоль](https://habrastorage.org/getpro/habr/upload_files/f84/f30/383/f84f3038378da602d53b14af9913b448.png)
Тут всё элементарно. Наша матрица состоит из строк и столбцов, значит и нужно проходить сначала по столбцу, а потом по строке.
Так же после каждой строки, нужно перенести строку вниз, для этого существует endl.
В итоге при запуске программы должно выйти вот так:
![Карта игры Карта игры](https://habrastorage.org/getpro/habr/upload_files/af0/6f8/ce7/af06f8ce7dc16562038e42ece902d488.png)
Но карта дело одно, нужно как то играть начать.
Сначала создадим бесконечный цикл в main, это позволит нам запустить игру без конца
Далее алгоритм будет такой:
Сначала выведем матрицу
Потом остановим поток(работу программы) с помощью sleep(400)
И далее очистим консоль.
Кстати, вместо обычной очистки system("cls"), мы будем пользоваться вот такой функцией:
![Функция очистка Функция очистка](https://habrastorage.org/getpro/habr/upload_files/551/aae/c49/551aaec498b98680d8ce3aa1ca92ccc3.png)
В итоге код в main будет такой:
![Новый main Новый main](https://habrastorage.org/getpro/habr/upload_files/acf/47d/e3a/acf47de3aeea7fa5ad14fad8d3570048.png)
Теперь при запуске программы, она не будет завершать код.
Далее реализуем прыжок динозаврика
![Новый main Новый main](https://habrastorage.org/getpro/habr/upload_files/c92/b25/67e/c92b2567e53f043aca4a31a6922688c8.png)
Прыжок будет на кнопку "W", где сначала мы через форы проводим значок доллара вверх, а потом вниз, попутно удаляя прошлых динозавриков.
Так же добавим флаг для выбора.
Изначально флаг фолз, и если мы нажмём прыжок, то у нас флаг превратиться в тру, и тогда мы не зайдём в другой if, который отвечает за простой.
Под простоем понимается что наш игрок ничего не нажимает, а игра всё равно идёт
Ура, мы можем прыгать, но нужны теперь препятствия.
![Движения карты Движения карты](https://habrastorage.org/getpro/habr/upload_files/dec/fac/afb/decfacafb6cbfea292c8d0dd33481c8a.png)
Эта функция, с шансом 20 процентов, создаёт препятствие и потом проверяет на то, нет ли рядом ещё препятствий( это нужно что бы игроку было куда прыгать) и если все условия прошли нормально, то создаём наш объект на третьей строке.
Следующий фор просто прогоняет третью строку, двигая препятствие к игроку
Препятствия есть, теперь добавить смерть
Я добавил ещё один if в функцию вывода, перед выводом самой карты, потому что - зачем выводить карту, если ты уже проиграл?
![Вывод карты Вывод карты](https://habrastorage.org/getpro/habr/upload_files/f69/132/90a/f6913290a4af7f6918914c538ac5ad1e.png)
Теперь есть смерть, прыжки, препятствия, осталось только счётчик.
Для этого добавляем ещё одну строку и в первом столбце напишем "Счёт:"
![Новая карта Новая карта](https://habrastorage.org/getpro/habr/upload_files/7ac/77c/cc1/7ac77ccc1ebbdc56e0522e491f4db266.png)
Далее создадим в main переменную с названием count и после сделаем вот так:
![Добавления в код счётчика Добавления в код счётчика](https://habrastorage.org/getpro/habr/upload_files/26b/0ed/32b/26b0ed32bee7c177b98fe2dcab6b9a63.png)
И такое добавим везде, где есть вывод матрицы в main.
Ну и всё, теперь вы сможете играть в динозаврика у себя в консоли!
Весь код есть на github
Так же, если вдруг у вас что-то не работает, то можете написать мне в телеге