Skip to content

Latest commit

 

History

History
47 lines (38 loc) · 2.83 KB

README.md

File metadata and controls

47 lines (38 loc) · 2.83 KB

sudoku

Build and Run

stack build

stack exec sudoku-exe

Команды для управления игрой

  • Перезапускать игру
    • Создать новую игру с тем же уровнем сложности Shift + N
    • Создать новую игру с менее сложным уровнем Shift + E
    • Создать новую игру с более сложным уровнем Shift + H
  • Вводить числа
    • Цифры на кватиатуре 1 - 9
    • Цифры нарисованные под полем игры
  • Закрыть приложение Esc

Краткое описание структуры проекта

Проект логически разбит на 3 модуля.

  1. Generator - модуль, в котором создается игровое поле. Вдохновлялся этой статьей.
  2. UI - модуль, в котором собирается интерфейс
  • MainUI - главный файл, в который передается сгенерированная игра и генеруется интерфейс.
  • FieldRender - отрисовывает игровое поле
  • InformationRender - отрисовывает текущую информацию об игре
  1. Файлы Sudoku и EventHandler занимаются созданием игры и обработки событий.

Подробнее про процесс создание игры

Сначала вызывается функция makeNewGame, которая генерируется рандомную бесконечную последовательность для создания игры. Эта функция вызывается ровно один раз за все время работы приложения. Она генерирует две последовательности GeneratorStep для создания поля и CellIndex для скрытия подсказок. Далее с этими параметрами будем работать в GeneratorEnv.

После регенации случайным последовательностей создаются поле для игры FieldGenerator и выбираются подсказки GameGenerator.

Потом вызывается runUI для создания интерфейса. Все UI события обрабатываются здесь.