Один метод, который, я добавлю, редко бывает самым эффективным, - это построить уровень в обратном порядке.
Это довольно просто сделать в этом случае. Вы просто начинаете с нуля и добавляете кликабельные группы с некоторой случайностью ... Я говорю некоторую случайность, поскольку вам может понадобиться добавить дополнительные блоки, чтобы убедиться, что все столбцы заполнены.
Но если подумать, даже тогда есть вероятность, что две кликабельные группы, которые вы добавите, соприкоснутся друг с другом и приведут к непредвиденному краху, что приведет к невозможности игры. Так что этот метод не гарантирует решаемой игры.
Вы можете взглянуть на исходный код для версии с открытым исходным кодом, такой как Тот же GNOME и посмотреть, как они это делают (если они вообще это делают!)