Реализовать любую не слишком сложную игру в ОО-стиле. Например:
- Pacman.
- Арканоид.
- Тетрис.
- Сапёр.
- Морской бой.
Для создания интерфейса можно использовать библиотеку консольного вывода.
Замечания:
- Игровые объекты должны быть реализованы через классы.
- Движок игры важнее, чем интерфейс.
- Для реализации желательно, но необязательно использовать подход «Message Driven System».
Примечания
Игра Сапер.
- Игровое поле представляет собой квадрат 10х10 блоков (двумерный массив). Каждый блок - это объект, содержащий в себе информацию о том, есть ли в нем бомба, был ли он открыт и сколько бомб вокруг. Это логическое представление поля. Графическое - тоже двумерный массив, но содержащий в себе ссылки на загруженные картинки. Логическую и графическую части я выведу в отдельные классы.
- После первого хода расставляются бомбы с помощью рандомайзера. По умолчанию вероятность выпадения бомбы 1/4.
- Взаимодействие с пользователем: открыть ячейку, поставить на ячейку метку, убрать метку.
- Flood-fill алгоритм, с помощью которого открываются клетки рядом с пустой до тех пор, пока рядом не окажется клетка с бомбой.
- Должен присутствовать рестарт, который сбрасывает все флаги.
(Не обязательно, но может быть реализую):
- Стартовое меню
- Звуковое сопровождение
- Уровень сложности (изменение размера поля или увеличение вероятности выпадения бомбы)
Для графики использую библиотеку SDL 2.