Динозаврик из Google перешёл в консоль

Всем привет! За год обучения программированию, я ни разу не делал консольные игры, просто было не интересно, но недавно решил сделать и мой выбор пал на динозаврика из гугла:

f25201699770c125ae96068a8ad55448.png

Конечно мы не сможем сделать такое же в консоли, но примерный геймплей сделаем:

b919478b274d10ab7c08a30512c3d683.png

Для начала разобьём по пунктам, что нам надо:
1. Что бы двигалось поле
2. Что бы был счётчик
3. Что бы мы могли прыгать
4. Ну и конечно же смерть персонажа

Такое написать не очень сложно, так что даже ребёнок поймёт как это сделать.

Начнём писать сам код.

Изначально нам нужно объявить карту нашей игры:

2д карта игры

2д карта игры

Карта нашей игры — это двумерный массив, который состоит из 4 строк и 14 строк.
На первой строке у нас подобие неба.
На второй строке у нас пустая строка, в будущем туда будет перемещаться наш динозаврик.
На третьей строке у нас находиться динозаврик, а именно доллар, и много пробелов. Пробелы нужны для ограничения будущих препятствий, потому что если если эти ячейки не будут заняты, то мы не сможешь различать по столбцам где находиться препятствие, и всё будет сходиться к »$|».
На четвёртой строке у нас находиться наша дорога, она будет статичной всё время.

Далее нам нужна функция для вывода матрица:

Функция вывода матрицы в консоль

Функция вывода матрицы в консоль

Тут всё элементарно. Наша матрица состоит из строк и столбцов, значит и нужно проходить сначала по столбцу, а потом по строке.

Так же после каждой строки, нужно перенести строку вниз, для этого существует endl.
В итоге при запуске программы должно выйти вот так:

Карта игры

Карта игры

Но карта дело одно, нужно как то играть начать.
Сначала создадим бесконечный цикл в main, это позволит нам запустить игру без конца
Далее алгоритм будет такой:
Сначала выведем матрицу
Потом остановим поток (работу программы) с помощью sleep (400)
И далее очистим консоль.

Кстати, вместо обычной очистки system («cls»), мы будем пользоваться вот такой функцией:

Функция очистка

Функция очистка

В итоге код в main будет такой:

Новый main

Новый main

Теперь при запуске программы, она не будет завершать код.

Далее реализуем прыжок динозаврика

Новый main

Новый main

Прыжок будет на кнопку «W», где сначала мы через форы проводим значок доллара вверх, а потом вниз, попутно удаляя прошлых динозавриков.

Так же добавим флаг для выбора.

Изначально флаг фолз, и если мы нажмём прыжок, то у нас флаг превратиться в тру, и тогда мы не зайдём в другой if, который отвечает за простой.

Под простоем понимается что наш игрок ничего не нажимает, а игра всё равно идёт

Ура, мы можем прыгать, но нужны теперь препятствия.

Движения карты

Движения карты

Эта функция, с шансом 20 процентов, создаёт препятствие и потом проверяет на то, нет ли рядом ещё препятствий (это нужно что бы игроку было куда прыгать) и если все условия прошли нормально, то создаём наш объект на третьей строке.
Следующий фор просто прогоняет третью строку, двигая препятствие к игроку

Препятствия есть, теперь добавить смерть
Я добавил ещё один if в функцию вывода, перед выводом самой карты, потому что — зачем выводить карту, если ты уже проиграл?

Вывод карты

Вывод карты

Теперь есть смерть, прыжки, препятствия, осталось только счётчик.
Для этого добавляем ещё одну строку и в первом столбце напишем «Счёт:»

Новая карта

Новая карта

Далее создадим в main переменную с названием count и после сделаем вот так:

Добавления в код счётчика

Добавления в код счётчика

И такое добавим везде, где есть вывод матрицы в main.

Ну и всё, теперь вы сможете играть в динозаврика у себя в консоли!

Весь код есть на github
Так же, если вдруг у вас что-то не работает, то можете написать мне в телеге

© Habrahabr.ru