Add task
This commit is contained in:
parent
31986d0b39
commit
9b9ecdd4c3
81
snake.md
Normal file
81
snake.md
Normal file
@ -0,0 +1,81 @@
|
||||
# Игра змейка
|
||||
|
||||
### Игра
|
||||
|
||||
Змейка это ...
|
||||
Прямоугольное поле и змейка представляющая из себя последовательность клеток.
|
||||
У змейки есть голова и хвост - первая и последняя ее клетка.
|
||||
Каждый тик игры змейка продвигается головой по текущему направлению. Вторая клетка змейки встаёт на место головы. Третья на место второй итд.
|
||||
Змейка умирает если встречается со своим телом.
|
||||
Направление можно выбрать с помощью клавиш WASD.
|
||||
Змейка не может повернуть головой на 180 градусов.
|
||||
Некоторые клетки поля могут содержать препятствие или яблоко.
|
||||
При поедании Яблока змейка увеличивается в размере тогда и только тогда когда ХВОСТ достигает клетки яблока.
|
||||
При наползании на препятствие змейка умирает.
|
||||
Мир закольцован - выползание за экран телепортирует голову змейки на соответсвующее поле противоположной стороны.
|
||||
Змейку можно ускорить зажатием пробела (ползет быстро тогда и только тогда когда пробел зажат).
|
||||
|
||||
### Критерии оценивания
|
||||
|
||||
По каждому критерию оценка ставится независимо от 0 до 15. Итоговая оценка равна средней оценке по критериям.
|
||||
|
||||
1) Играбельность/Визуал
|
||||
2) Архитектура системных вызовов
|
||||
3) Код игры
|
||||
|
||||
За валидную игру (запускается, как-то играется) оценка не может быть ниже 4.
|
||||
|
||||
#### Играбельность/Визуал
|
||||
|
||||
Смотрится картинка, звук, реакция на нажатия клавиш (в том числе нескольких одновременно).
|
||||
|
||||
На 10 обязательно наличие
|
||||
|
||||
1) Меню со стартом и рестартом
|
||||
2) Не примитивные фигуры
|
||||
3) Звук поедания
|
||||
4) Возможность регулировки скорости (через зажатие клавиши пробел)
|
||||
5) Счет очков в углу экрана
|
||||
6) Регулировка количества яблок на арене (по дефолту 5)
|
||||
|
||||
#### Архитектура системных вызовов
|
||||
|
||||
Смотрится какое API для взаимодействия с устройствами вы придумали
|
||||
|
||||
На 10 обязательно:
|
||||
|
||||
1) Аналог getc который помнит не одно последнее нажатие на клавиатуру, а как минимум 32 последних нажатия/отжатия
|
||||
2) Системный вызов получения реального времени (все тики должны занимать одинаковое время вне зависимости от скорости вычислений)
|
||||
3) Системный вызов проигрывания звука
|
||||
4) Системный вызов переключение экрана в режим 13h с выбором адреса в юзерспейсе
|
||||
5) Системный вызов переключения обратно в режим вывода на консоль (после завершения программы ОС должна продолжить работу в штатном режиме)
|
||||
6) Системный вызов ожидания/сна
|
||||
|
||||
#### Код игры
|
||||
|
||||
Код должен быть читаем, понятен и аккуратен.
|
||||
|
||||
На 10 обязательно наличие автоигры, где змейка сама себя проходит (по нажатию на клавишу). В режиме автоигры змейка обязана дойти до конца (заполнить все поле).
|
||||
|
||||
Доп баллы возможны если змейка в режиме автоигры делает это быстро при наличии не более 5 яблок на поле.
|
||||
|
||||
Генерация яблок обязана быть псевдослучайной.
|
||||
|
||||
### FAQ
|
||||
|
||||
#### Можно ли писать на C++?
|
||||
|
||||
Да, для этого создайте в user папке snake.cpp
|
||||
|
||||
#### Можно ли использовать много файлов для игры?
|
||||
|
||||
Нужно. Создавайте хедеры и си файлы в папке user (или подпапке). В Makefile добавьте сборку.
|
||||
|
||||
#### Создал в `user` `snake.c` а пишет что `run snake` не найдено...
|
||||
|
||||
Поправьте Makefile чтобы собирался файл `snake`, а также добавьте его в `USERPROGS`
|
||||
|
||||
#### Какой размер поля должен быть?
|
||||
|
||||
Разрешение экрана режима 13h 320x200 px. Важно чтобы поле состояло из квадратных клеток.
|
||||
Минимальный размер квадрата 4px. Рекомендуемый - 10px.
|
||||
Loading…
x
Reference in New Issue
Block a user