По каждому критерию оценка ставится независимо от 0 до 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.