Update from 12
This commit is contained in:
parent
e78f187cda
commit
8912bb7190
10 changed files with 130 additions and 130 deletions
|
|
@ -1,6 +1,8 @@
|
|||
# BrickGame Тетрис
|
||||
Резюме: в данном проекте тебе предстоит реализовать игру «Тетрис» на языке программирования С с использованием структурного подхода.
|
||||
|
||||
💡 [Нажми сюда](https://new.oprosso.net/p/4cb31ec3f47a4596bc758ea1861fb624), **чтобы поделиться с нами обратной связью на этот проект**. Это анонимно и поможет нашей команде сделать обучение лучше. Рекомендуем заполнить опрос сразу после выполнения проекта.
|
||||
|
||||
## Содержание
|
||||
|
||||
- [BrickGame Тетрис](#brickgame-тетрис)
|
||||
|
|
@ -72,13 +74,13 @@ BrickGame — популярная портативная консоль 90-ых
|
|||
- Достигнут другой берег — состояние, которое наступает при достижении лягушкой верхней другого берега.
|
||||
- Игра окончена — состояние, которое наступает после достижения другого берега или смерти последней лягушки.
|
||||
|
||||
Пример реализации фроггера с использованием КА вы можете найти в папке `code-samples`.
|
||||
Пример реализации фроггера с использованием КА ты можешь найти в папке `code-samples`.
|
||||
|
||||
### Тетрис
|
||||
|
||||

|
||||
|
||||
«Тетрис», наверное, одна из самых популярных игр для консоли Brickgame. Нередко и саму консоль называют тетрисом. Цель игры — в наборе очков за построение линий из генерируемых игрой блоков. Очередной блок, сгенерированный игрой, начинает опускаться вниз по игровому полю, пока не достигнет нижней границы или не столкнется с другим блоком. Пользовать может поворачивать фигуры и перемещать их по горизонтали, стараясь составлять ряды. После заполнения ряд уничтожается, игрок получает очки, а блоки, находящиеся выше заполненного ряда опускаются вниз. Игра заканчивается, когда очередная фигура останавливается в самом верхнем ряду.
|
||||
«Тетрис», наверное, одна из самых популярных игр для консоли Brickgame. Нередко и саму консоль называют тетрисом. Цель игры — в наборе очков за построение линий из генерируемых игрой блоков. Очередной блок, сгенерированный игрой, начинает опускаться вниз по игровому полю, пока не достигнет нижней границы или не столкнется с другим блоком. Пользователь может поворачивать фигуры и перемещать их по горизонтали, стараясь составлять ряды. После заполнения ряд уничтожается, игрок получает очки, а блоки, находящиеся выше заполненного ряда, опускаются вниз. Игра заканчивается, когда очередная фигура останавливается в самом верхнем ряду.
|
||||
|
||||
Для формализации логики данной игры можно представить следующий вариант конечного автомата:
|
||||
|
||||
|
|
@ -90,7 +92,7 @@ BrickGame — популярная портативная консоль 90-ых
|
|||
- Спавн — состояние, в которое переходит игра при создании очередного блока и выбора следующего блока для спавна.
|
||||
- Перемещение — основное игровое состояние с обработкой ввода от пользователя — поворот блоков/перемещение блоков по горизонтали.
|
||||
- Сдвиг — состояние, в которое переходит игра после истечения таймера. В нем текущий блок перемещается вниз на один уровень.
|
||||
- Соединение — состояние, в которое преходит игра после «соприкосновения» текущего блока с уже упавшими или с землей. Если образуются заполненные линии, то она уничтожается и остальные блоки смещаются вниз. Если блок остановился в самом верхнем ряду, то игра переходит в состояние «игра окончена».
|
||||
- Соединение — состояние, в которое преходит игра после «соприкосновения» текущего блока с уже упавшими или с землей. Если образуются заполненные линии, то она уничтожается, и остальные блоки смещаются вниз. Если блок остановился в самом верхнем ряду, то игра переходит в состояние «игра окончена».
|
||||
- Игра окончена — игра окончена.
|
||||
|
||||
## Chapter II <div id="chapter-ii"></div>
|
||||
|
|
@ -103,13 +105,13 @@ BrickGame — популярная портативная консоль 90-ых
|
|||
- Программа должна быть разработана на языке Си стандарта C11 с использованием компилятора gcc.
|
||||
- Программа должна состоять из двух частей: библиотеки, реализующей логику игры тетрис, и терминального интерфейса с использованием библиотеки `ncurses`.
|
||||
- Для формализации логики игры должен быть использован конечный автомат.
|
||||
- Библиотека должна иметь функцию, принимающая на вход ввод пользователя, и функцию, выдающую матрицу, которая описывает текущее состояние игрового поля, при каждом ее изменении.
|
||||
- Библиотека должна иметь функцию, принимающую на вход ввод пользователя, и функцию, выдающую матрицу, которая описывает текущее состояние игрового поля при каждом ее изменении.
|
||||
- Код библиотеки программы должен находиться в папке `src/brick_game/tetris`.
|
||||
- Код с интерфейсом программы должен находиться в папке `src/gui/cli`.
|
||||
- Сборка программы должна быть настроена с помощью Makefile со стандартным набором целей для GNU-программ: all, install, uninstall, clean, dvi, dist, test, gcov_report. Установка должна вестись в любой другой произвольный каталог.
|
||||
- Программа должна быть разработана в соответствии с принципами структурного программирования.
|
||||
- При написании кода придерживайся Google Style.
|
||||
- Должно быть обеспечено покрытие библиотеки unit-тестами, с помощью библиотеки `check` (тесты должны проходить на ОС Darwin/Ubuntu). Покрытие библиотеки с логикой игры тестами должно составлять не меньше 80 процентов.
|
||||
- Должно быть обеспечено покрытие библиотеки unit-тестами с помощью библиотеки `check` (тесты должны проходить на ОС Darwin/Ubuntu). Покрытие библиотеки с логикой игры тестами должно составлять не меньше 80 процентов.
|
||||
- В игре должны присутствовать следующие механики:
|
||||
- Вращение фигур;
|
||||
- Перемещение фигуры по горизонтали;
|
||||
|
|
@ -158,5 +160,3 @@ BrickGame — популярная портативная консоль 90-ых
|
|||
### Часть 3. Дополнительно. Механика уровней
|
||||
|
||||
Добавь в игру механику уровней. Каждый раз, когда игрок набирает 600 очков, уровень увеличивается на 1. Повышение уровня увеличивает скорость движения фигур. Максимальное количество уровней — 10.
|
||||
|
||||
💡 [Нажми сюда](https://forms.yandex.ru/cloud/65d4a02673cee73bdc52da80/)**, чтобы поделиться с нами обратной связью на этот проект**. Это анонимно и поможет нашей команде сделать твоё обучение лучше.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue