Игра, конечно, очень занятная ! Говорю как обладатель советского пентамино в коробочке и играмши в него немало.
По алгоритму тоже сомневаюсь что для произвольного "поля" можно найти достаточную комбинацию. Поэтому предложу пойти от противного:
1. Генерируем затравку поля, т.е. примерную фигуру - квадрат круг и т.п. и примерный размер и фишки (например обязательные дырки)
2. берём цикл с рандомом и начинаем сращивать разные фигуры (желательно начиная с пента а вероятность более мелких меньше) в монолитную структуру, с учётом только обязательных дырок. если образуются нежелательные дырки - перебрасываем фигуру.
3. растим фигуру в примерно том виде, ка к задал п.1.
4. не доходя до конечного размера начинаем уже добиваться симметрии общей картины (чтобы не выглядело банальной кашей), т.е. из чего-то аморфного добиваем до адеквата, подстригая где надо и тыкая более простые фигурки.
В итоге получим что-то подобное фигуре затравке но со своими особенностями, массив заполняющих фигур в итоге и выдаём игроку (может для разных уровней сложности подбавить фигурок).
У способа есть очевидный дисбаланс решения - строго будет известно что у простых фигур вероятность быть по краям оч высокая.
По интерфейсу - не знаю, вроде ничего так, может пасьянсовый будет действительно удобнее, насчёт поворота - может продублировать на что-то кроме мышки (пробел наверное). Сделать подсветку границ фигур для более удобного поиска на поле, ну и конечно в банке фигур как-то сделать чтобы наложение фигур не убивало глаза. Прокрутка имхо вообще лишняя - сделать просто более норм банк, и помельче, да и колво фигур в банке будет меньше при экономном алгоритме.
А вот что реально меня раздосадовало, так это бесконечность игры, я бы хотел видеть, что вот такие-то уровни я уже прошёл, а ещё если уже фигуры наставлены - то спрашивать о переключении уровня. Ну и переиграть уровень при этом отдельной опцией тогда сделать.
Ну и озвученные уровни сложности, которые можно и при нынешнем рандоме сделать, просто уменьшив набор генерируемых фигур, для самого сложного оставляя, например, 110% кубиков в сумме по фигурам по отношению к клеткам поля.
Есть ещё такой вопрос, думаю, исходник без озвученного алгоритма несложный, планируете ли открывать общественности ?
|