Update from 5

This commit is contained in:
Administrator 2024-03-05 15:01:52 +00:00
parent 83e6c9e1f0
commit a2bd5533ea

View file

@ -21,13 +21,13 @@
## Введение ## Введение
Для реализации игры "Тетрис" проект должен состоять из двух частей: библиотеки, реализующей логику работы игры, которую можно подключать к различным GUI в будущем, и терминального интерфейса, разработанного с использованием библиотеки `ncurses`. Логика работы библиотеки должна быть реализована с использованием конечных автоматов, одно из возможных описаний которого будет дано ниже. Для реализации игры «Тетрис» проект должен состоять из двух частей: библиотеки, реализующей логику работы игры, которую можно подключать к различным GUI в будущем, и терминального интерфейса, разработанного с использованием библиотеки `ncurses`. Логика работы библиотеки должна быть реализована с использованием конечных автоматов, одно из возможных описаний которого будет дано ниже.
## Chapter I <div id="chapter-i"></div> ## Chapter I <div id="chapter-i"></div>
## Общая информация ## Общая информация
### BrickGame ### BrickGame
BrickGame - популярная портативная консоль 90-ых годов с несколькими ~~тысячами~~ встроенными играми, разработанная в Китае. Изначально была копией разработанной в СССР и выпущенной Nintendo в рамках платформы GameBoy игры «Тетрис», но включала в себя также и множество других игр, которые добавлялись с течением времени. Консоль имела небольшой экранчик с игровым полем размера 10х20, представляющим из себя матрицу «пикселей». Справа от поля находилось табло с цифровой индикацией состояния текущей игры, рекордами и прочей дополнительной информацией. Самыми распространенными играми на BrickGame были: тетрис, танки, гонки, фроггер и змейка. BrickGame популярная портативная консоль 90-ых годов с несколькими ~~тысячами~~ встроенными играми, разработанная в Китае. Изначально была копией разработанной в СССР и выпущенной Nintendo в рамках платформы GameBoy игры «Тетрис», но включала в себя также и множество других игр, которые добавлялись с течением времени. Консоль имела небольшой экранчик с игровым полем размера 10х20, представляющим из себя матрицу «пикселей». Справа от поля находилось табло с цифровой индикацией состояния текущей игры, рекордами и прочей дополнительной информацией. Самыми распространенными играми на BrickGame были: тетрис, танки, гонки, фроггер и змейка.
![BrickGameConsole](misc/images/brickgame-console.jpg) ![BrickGameConsole](misc/images/brickgame-console.jpg)
@ -56,7 +56,7 @@ BrickGame - популярная портативная консоль 90-ых
![Фроггер](misc/images/frogger-game.png) ![Фроггер](misc/images/frogger-game.png)
«Фроггер» - одна из поздних игр, выходящих на консолях Brickgame. Игра представляет собой игровое поле, по которому движутся бревна, и, перепрыгивая по ним, игроку необходимо перевести лягушку с одного берега на другой. Если игрок попадает в воду или лягушка уходит за пределы игрового поля, то лягушка погибает. Игра завершается, когда игрок доводит лягушку до другого берега или погибает последняя лягушка. «Фроггер» одна из поздних игр, выходящих на консолях Brickgame. Игра представляет собой игровое поле, по которому движутся бревна, и, перепрыгивая по ним, игроку необходимо перевести лягушку с одного берега на другой. Если игрок попадает в воду или лягушка уходит за пределы игрового поля, то лягушка погибает. Игра завершается, когда игрок доводит лягушку до другого берега или погибает последняя лягушка.
Для формализации логики данной игры можно представить следующий вариант конечного автомата: Для формализации логики данной игры можно представить следующий вариант конечного автомата:
@ -64,13 +64,13 @@ BrickGame - популярная портативная консоль 90-ых
Данный КА имеет следующие состояния: Данный КА имеет следующие состояния:
- Старт - состояние, в котором игра ждет, пока игрок нажмет кнопку готовности к игре. - Старт состояние, в котором игра ждет, пока игрок нажмет кнопку готовности к игре.
- Спавн - состояние, в котором создается очередная лягушка. - Спавн состояние, в котором создается очередная лягушка.
- Перемещение - основное игровое состояние с обработкой ввода от пользователя - движение лягушки по полосе влево/право или прыжки вперед/назад. - Перемещение основное игровое состояние с обработкой ввода от пользователя движение лягушки по полосе влево/право или прыжки вперед/назад.
- Сдвиг - состояние, которое наступает после истечения таймера, при котором сдвигаются все объекты на полосах вправо, вместе с лягушкой. - Сдвиг состояние, которое наступает после истечения таймера, при котором сдвигаются все объекты на полосах вправо, вместе с лягушкой.
- Столкновение - состояние, которое наступает, если после прыжка лягушка попадает в воду или после смещения бревен лягушка оказывается за пределами игрового поля. - Столкновение состояние, которое наступает, если после прыжка лягушка попадает в воду или после смещения бревен лягушка оказывается за пределами игрового поля.
- Достигнут другой берег - состояние, которое наступает при достижении лягушкой верхней другого берега. - Достигнут другой берег состояние, которое наступает при достижении лягушкой верхней другого берега.
- Игра окончена - состояние, которое наступает после достижения другого берега или смерти последней лягушки. - Игра окончена состояние, которое наступает после достижения другого берега или смерти последней лягушки.
Пример реализации фроггера с использованием КА вы можете найти в папке `code-samples`. Пример реализации фроггера с использованием КА вы можете найти в папке `code-samples`.
@ -78,7 +78,7 @@ BrickGame - популярная портативная консоль 90-ых
![Тетрис](misc/images/tetris-game.png) ![Тетрис](misc/images/tetris-game.png)
«Тетрис», наверное, одна из самых популярных игр для консоли Brickgame. Нередко и саму консоль называют тетрисом. Цель игры - в наборе очков за построение линий из генерируемых игрой блоков. Очередной блок, сгенерированный игрой, начинает опускаться вниз по игровому полю, пока не достигнет нижней границы или не столкнется с другим блоком. Пользовать может поворачивать фигуры и перемещать их по горизонтали, стараясь составлять ряды. После заполнения ряд уничтожается, игрок получает очки, а блоки, находящиеся выше заполненного ряда опускаются вниз. Игра заканчивается, когда очередная фигура останавливается в самом верхнем ряду. «Тетрис», наверное, одна из самых популярных игр для консоли Brickgame. Нередко и саму консоль называют тетрисом. Цель игры в наборе очков за построение линий из генерируемых игрой блоков. Очередной блок, сгенерированный игрой, начинает опускаться вниз по игровому полю, пока не достигнет нижней границы или не столкнется с другим блоком. Пользовать может поворачивать фигуры и перемещать их по горизонтали, стараясь составлять ряды. После заполнения ряд уничтожается, игрок получает очки, а блоки, находящиеся выше заполненного ряда опускаются вниз. Игра заканчивается, когда очередная фигура останавливается в самом верхнем ряду.
Для формализации логики данной игры можно представить следующий вариант конечного автомата: Для формализации логики данной игры можно представить следующий вариант конечного автомата:
@ -86,12 +86,12 @@ BrickGame - популярная портативная консоль 90-ых
Данный КА состоит из следующих состояний: Данный КА состоит из следующих состояний:
- Старт - состояние, в котором игра ждет, пока игрок нажмет кнопку готовности к игре. - Старт состояние, в котором игра ждет, пока игрок нажмет кнопку готовности к игре.
- Спавн - состояние, в которое переходит игра при создании очередного блока и выбора следующего блока для спавна. - Спавн состояние, в которое переходит игра при создании очередного блока и выбора следующего блока для спавна.
- Перемещение - основное игровое состояние с обработкой ввода от пользователя - поворот блоков/перемещение блоков по горизонтали. - Перемещение основное игровое состояние с обработкой ввода от пользователя поворот блоков/перемещение блоков по горизонтали.
- Сдвиг - состояние, в которое переходит игра после истечения таймера. В нем текущий блок перемещается вниз на один уровень. - Сдвиг состояние, в которое переходит игра после истечения таймера. В нем текущий блок перемещается вниз на один уровень.
- Соединение - состояние, в которое преходит игра после «соприкосновения» текущего блока с уже упавшими или с землей. Если образуются заполненные линии, то она уничтожается и остальные блоки смещаются вниз. Если блок остановился в самом верхнем ряду, то игра переходит в состояние «игра окончена». - Соединение состояние, в которое преходит игра после «соприкосновения» текущего блока с уже упавшими или с землей. Если образуются заполненные линии, то она уничтожается и остальные блоки смещаются вниз. Если блок остановился в самом верхнем ряду, то игра переходит в состояние «игра окончена».
- Игра окончена - игра окончена. - Игра окончена игра окончена.
## Chapter II <div id="chapter-ii"></div> ## Chapter II <div id="chapter-ii"></div>
## Требования к проекту ## Требования к проекту
@ -122,12 +122,12 @@ BrickGame - популярная портативная консоль 90-ых
- Начало игры, - Начало игры,
- Пауза, - Пауза,
- Завершение игры, - Завершение игры,
- Стрелка влево - движение фигуры влево, - Стрелка влево движение фигуры влево,
- Стрелка вправо - движение фигуры вправо, - Стрелка вправо движение фигуры вправо,
- Стрелка вниз - падение фигуры, - Стрелка вниз падение фигуры,
- Стрелка вверх - ни используется в данной игре, - Стрелка вверх ни используется в данной игре,
- Действие (вращение фигуры). - Действие (вращение фигуры).
- Игровое поле должно соответствовать размерам игрового поля консоли - десять «пикселей» в ширину и двадцать «пикселей» в высоту. - Игровое поле должно соответствовать размерам игрового поля консоли десять «пикселей» в ширину и двадцать «пикселей» в высоту.
- Фигура, после достижения нижней границы поля или соприкосновения с другой фигурой, должна остановиться. После этого происходит генерация следующей фигуры, показанной на превью. - Фигура, после достижения нижней границы поля или соприкосновения с другой фигурой, должна остановиться. После этого происходит генерация следующей фигуры, показанной на превью.
- Интерфейс библиотеки должен соответствовать описанию, которое находится в materials/library-specification.md. - Интерфейс библиотеки должен соответствовать описанию, которое находится в materials/library-specification.md.
- Пользовательский интерфейс должен поддерживать отрисовку игрового поля и дополнительной информации. - Пользовательский интерфейс должен поддерживать отрисовку игрового поля и дополнительной информации.
@ -150,13 +150,13 @@ BrickGame - популярная портативная консоль 90-ых
Начисление очков будет происходить следующим образом: Начисление очков будет происходить следующим образом:
- 1 линия - 100 очков; - 1 линия 100 очков;
- 2 линии - 300 очков; - 2 линии 300 очков;
- 3 линии - 700 очков; - 3 линии 700 очков;
- 4 линии - 1500 очков. - 4 линии 1500 очков.
### Часть 3. Дополнительно. Механика уровней ### Часть 3. Дополнительно. Механика уровней
Добавь в игру механику уровней. Каждый раз, когда игрок набирает 600 очков, уровень увеличивается на 1. Повышение уровня увеличивает скорость движения фигур. Максимальное количество уровней - 10. Добавь в игру механику уровней. Каждый раз, когда игрок набирает 600 очков, уровень увеличивается на 1. Повышение уровня увеличивает скорость движения фигур. Максимальное количество уровней 10.
💡 [Нажми сюда](https://forms.yandex.ru/cloud/65d4a02673cee73bdc52da80/)**, чтобы поделиться с нами обратной связью на этот проект**. Это анонимно и поможет нашей команде сделать твоё обучение лучше. 💡 [Нажми сюда](https://forms.yandex.ru/cloud/65d4a02673cee73bdc52da80/)**, чтобы поделиться с нами обратной связью на этот проект**. Это анонимно и поможет нашей команде сделать твоё обучение лучше.