Пятнашки
На примере данной мини-игры рассмотрим один из важных вопросов игровых механик такой как - генерация карты случайным образом. Дело в том, что сгенерировать случайным образом расположение фишек не получится, это будет приводит в половине случаев к нерешаемым комбинациям, поэтому нам надо не только сгенерировать случайное расположение фишек, но и гарантировать что такое расположение является решаемым (существует набор ходов который приводит к победному состоянию) .
Самостоятельно вам нужно будет создать заготовку под игру. Вам нужно решить как вы будете представлять поле, как вы будете проверть куда передвигать фишку и существует ли допустимый ход для фишки на которую кликнул игрок. Продумайте проверку условий победы.
В первую очередь решите подводящую задачу, а именно: генерация поля со всеми установленными фишками на своих местах (1 в первой клетке, 2 во второй и так далее) и просто проверьте что перемещение фишек осуществляется правильно.
После того как вы самостоятельно сделаете подготовительную часть перейдем к рассмотрению генерации уровней.
Инициализация уровня (поля)
Основным моментом который нам нужно будет продумать это инициалиазция игрового поля. Если мы будем генерировать стартовые позиции фишек случаный образом то в половине случаев это будут не решаемые комбинации. Нужно либо генерировать фишки случайным образом накладывая на них проверку на решаемость, либо из решенного состояния делать ходы оставаясь все время в области допустимых состояний поля (feasible state / solution).
Рассмотрим все эти способы более подробно.
Второй способ хорош тем, что мы можем подсчитать количество необходимых ходов для завершения игры (подсчитано, что максимальное возможное количество ходов для решения этой игры равно 80). Тем самым (в будущем) мы сможем ввести уровни сложности игры (давать игроку право выбрать сложность игры). Для поиск стартового состояние воспользуемся одним из видом поиска (например, поиск в глубину) с запоминанием посещенных состояний.