Skip to content

Latest commit

 

History

History
22 lines (18 loc) · 3.33 KB

README-ru.md

File metadata and controls

22 lines (18 loc) · 3.33 KB

Игра "15" - Lite

License Version

Данная демонстрационная программа представляет собой реализацию игры "15" на языке программирования C++ в функционально-ориентированном стиле с разбивкой на функциональные слои.

Интерфейс программы сделан минималистичным, но понятным: Screenshot of the program window

Особенности

  1. Использование раздельных шаблонных классов (модулей) для разделения областей ответственности модулей.
  2. Событийно-ориентированный подход благодаря использованию CallBack-функций.
  3. Использование чистого WINAPI (без ALT и MFC) при работе с графикой.
  4. Использование исключительно WINGDI (вместо GDI+) для отрисовки любых примитивов, а также текста.
  5. Исключительно пользовательская отрисовка (кнопки, предоставляемые системой, не использовались).
  6. Реализация сохранения истории таким образом, что в одном байте помещаются данные о 4 ходах.
  7. Для вывода текста используются функции, поддерживающие юникод, что упрощает локализацию.
  8. Два алгоритма проверки выигрыша: классический и snake. Первый активен по умолчанию, а второй можно активировать, если раскомментировать строки кода с пометкой SnakeAlg. Этот алгоритм определяет выигрыш, если от клетки "1" можно добраться до "15" переходя по соседним клеткам (например, вокруг клетки "1" выполняется поиск клетки "2", затем вокруг клетки "2" поиск клетки "3" и так далее). Алгоритм SnakeAlg выключен по умолчанию из-за того, что нарушает правила классической игры.
  9. Хороший структурный шаблон для реализации любой несложной "пассивной" игры (т.е. такой игры, где все события генерируются исключительно пользователем, внутриигровых событий нет).

Чтобы упростить внесение изменений, была составлена UML диаграмма: UML diagram (SVG)