Головоломка Пентамино

18.04.23

Задачи пользователя - Игры

Широко известная головоломка, основанная на составлении фигур из составных частей. В данной реализации в качестве фигуры используется прямоугольник, а в качестве составных частей - пентамино, тетрамино или гексамино. Реализованы классические варианты головоломки и вариант со случайной генерацией фигур.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Головоломка Пентамино:
.erf 21,92Kb
17 Скачать бесплатно

Об игре

Пентамино - фигура, состоящая из пяти квадратов, соединенных сторонами. Является частным случаем полимино. Другие разновидности полимино - тетрамино и гексамино, из, соответственно, четырех и шести квадратов. В процессе игры необходимо набор фигур "уложить" в прямоугольник заданного размера. Сделать это, зачастую, весьма непросто!

 
 Пример игры

Управление:

1. с помощью мыши:

  • "захват" и "освобождение" фигуры - клик мышью в клетку фигуры
  • перемещение - клик в другую клетку поля
  • поворот и отражение фигуры - кнопки командной панели

2. с помощью клавиатуры:

  • "захват" и "освобождение" фигуры - <enter> в выделенной ячейке - клетке фигуры
  • перемещение - <стрелки клавиатуры>
  • поворот фигуры - клавиши <A> и <Z>
  • отражение фигуры - клавиши <S> и <X>

Всего может быть 12 различных фигур пентамино. Из них можно сложить прямоугольники (площадью 60 квадратов): 6×10, 5×12, 4×15 и 3×20. Из полного набора гексамино (35 возможных фигур) или тетрамино (5 фигур) сложить какой-либо прямоугольник нельзя, но это можно сделать, взяв неполный набор, или добавив к набору дополнительные фигуры. Разумеется, прямоугольники можно складывать из произвольного набора фигур, в том числе повторяющихся. В игре реализованы классические головоломки пентамино 6×10, 5×12, 4×15 и 3×20, тетрамино 4×6, а также, самый интересный, пользовательский вариант.

В пользовательском режиме можно выбрать: вид фигуры (тетрамино, пентамино или гексамино), размер поля-прямоугольника (а значит, и количество фигур) и сложность. Сложность определяет возможность использовать повороты и отражения фигур. Набор фигур генерируется случайным образом. 

Генерация фигур

Вот как раз генерация набора фигур - самая интересная и сложная задача. В чем сложность? А в том, что у головоломки обязательно должно быть решение, т.е. все фигуры гарантированно должны поместиться в прямоугольник. Как этого добиться? Ну, во-первых, можно попытаться математически доказать разрешимость головоломки при заданном наборе фигур. Я не знаю как это сделать:), кто захочет - может попробовать. Во-вторых можно написать алгоритм, "решающий" эту задачу, это тоже весьма интересно. Но я пошел по третьему пути - от обратного, т.е. не составлять прямоугольник, а наоборот, случайным образом разбить исходный прямоугольник на составные части заданного размера. Расскажу поподробнее.

1. Генерация начинается со случайной расстановки "затравок" - по одной клетке от каждой фигуры:

2. Далее фигуры начинают "расти", к фигурам добавляются новые клетки из числа еще не занятых:

3. Возможна ситуация, когда фигуре расти некуда - все соседние клетки уже заняты. Например, для красной фигуры:

4. Единственный выход - красная должна "отобрать" клетку у другой фигуры. Какую угодно отбирать нельзя. Знаком "+" помечены "критические" клетки - те, без которых фигура разваливается на несвязанные части. Их трогать запрещено.

Здесь красная фигура "отобрала" клетку у оранжевой, а оранжевая - у красной.

5. Далее красная фигура "отбирает" клетку у синей, и синяя восстанавливается до нужного размера.

 

Как видим, итераций до окончания может пройти достаточно много, до нескольких десятков (зависит от количества фигур). Но насколько надежен этот алгоритм? Можно ли быть уверенным, что он всегда завершиться с нужным результатом? К сожалению ,нет.

На первой картинке желтая и синяя фигуры не смогут "вырваться" с нижнего края. На второй картинке ни одна из фигур не сможет занять свободные, белые клетки. 

Решением этой проблемы служит автоматический перезапуск алгоритма после некоторого числа итераций, например 100.

 

Головоломка тестировалась в тонком клиенте 8.3.22.1709.

Как всегда, приветствуются замечания / дополнения / комментарии.

 

    

 
 Некоторые из прочих моих публикаций  

   

Вступайте в нашу телеграмм-группу Инфостарт

Игра головоломка пентамино тетрамино гексамино

См. также

Игры 1С:Предприятие 8 Россия Бесплатно (free)

Преврати свой 1С с обычными формами в мощную игровую консоль! И пусть баланс подождет!

13.10.2025    9145    167    slava_1c    14    

44

Игры 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Расставьте на поле стены так, чтобы жук ходил по полю как можно дольше. Делитесь результатом с друзьями.

10.03.2023    5250    7    kyzma-kyzmi4    2    

13

Игры 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Игра Змейка, сделанная на 1С. В игре 7 уровней, но игра сделана так, что любой разработчик без проблем сможет нарисовать любую карту на свой вкус, для этого достаточно добавить макет и закрасить красным цветом границы и препятствия!

27.01.2023    8922    29    APTEM_SLV    16    

19

Игры 1С:Предприятие 8 Бесплатно (free)

Популярная карточная игра Девятка (Девятки, Domino, Spoof, Fan Tan, Parliament, Sevens) для любой 1С конфигурации (даже абсолютно пустой) для любой версии платформы 8, поддерживающей управляемые формы(тонкий клиент, веб-клиент).

25.01.2023    4309    20    ai1cPro    3    

9

Игры 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Представляю вашему вниманию игру из школьных времен - "девятнадцать". Когда-то не один десяток листков в клеточку были исписаны во время этой игры...

19.01.2023    7073    18    Alxby    40    

30

Игры 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Бесплатно (free)

Одномерный или "устный" вариант игры Балда.

05.12.2022    6029    4    Alexei_Siva    1    

39

Игры Программист 1С 8.3 1C:Бухгалтерия ИТ-компания Россия Бесплатно (free)

Сетевая игра "Захват клеток" с возможностью играть на время, а также с поддержкой игры оффлайн против компьютера.

12.09.2022    8803    18    Sergey_Borisovi4    10    

34

Игры 1С:Предприятие 8 1С 8.3 Бесплатно (free)

В раннюю бытность мою, лет 5 назад увлекалась JS. И вот захотелось мне вспомнить несколько стареньких проектов. И вдохнуть в них новую жизнь, скрестив старое и новое - JS и 1С. И вот что у меня получилось. Реализовано все одной внешней обработкой.

08.06.2022    5785    198    serverstar    2    

17
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 1103 18.04.23 18:50 Сейчас в теме
Норм! Но с визуализацией в 1с всё печально.
2. Alxby 1150 18.04.23 19:23 Сейчас в теме
(1)Это точно. Проблемы в общем-то две: мало возможностей графического изображения элементов (спрайтов и т.п.) и низкая скорость отрисовки - сделать хотя бы PacMana только средствами 1С не выйдет.
mrChOP93; aSHA-1; +2 Ответить
3. Adrenal1n 4 24.04.23 13:17 Сейчас в теме
(2) На самом деле сделать пакмэна не получится в первую очередь потому что нет игрового шага, другим языком нет таймера. Будь таймер - можно было на табличном документе перемещать картинку и получать анимацию. Обработчик ожидания, как самый похожий механизм все равно не подходит, потому что работает только во время бездействия системы. Другой вопрос, что это все (включая саму игру) на самом деле и не нужно в реальном мире и делается просто ради забавы.
4. Alxby 1150 24.04.23 15:36 Сейчас в теме
(3)Это тоже. Но я имел в виду именно скорость отрисовки - в пакмане персонажи двигаются с разными скоростями, т.е. скорость отрисовки должна позволить эту разницу увидеть. Я пробовал в табличном документе просто перемещать спрайт, даже без обработчика ожидания, - результат неудовлетворительный. А если говорить о забавах - так они - существенная часть реального мира, игроделы там делают реальные деньги))).
5. leosoft 169 29.05.23 13:13 Сейчас в теме
Здравствуйте! У меня почему-то не активны все кнопки (поворот и далее).
Активна только новая игра.
6. leosoft 169 29.05.23 13:17 Сейчас в теме
(5) Включил вариант пентамимо - появились! Интересная игрушка, спасибо!
8. Alxby 1150 29.05.23 19:12 Сейчас в теме
(5) Возможность поворота зависит от сложности - с поворотами сложнее.
7. leosoft 169 29.05.23 13:45 Сейчас в теме
А если случайно куда-то переместил фигурку - есть кнопка или горячая клавиша "отката"?
9. Alxby 1150 29.05.23 19:14 Сейчас в теме
(7)Нет, да она и не нужна. В любой момент фигуру можно переместить обратно. Это же не шашки/шахматы - сходил не туда - и всё, мат.
10. Viktor_Ermakov 402 13.03.25 15:21 Сейчас в теме
а тут не ДокументHTML используется?
11. Alxby 1150 13.03.25 18:03 Сейчас в теме
(10) Нет, ДокументHTML не используется. Это не спортивно:) Тогда уж лучше сразу на js игру писать...
12. Viktor_Ermakov 402 13.03.25 18:13 Сейчас в теме
(11) А я за скрещивание и красоту))
13. Alxby 1150 13.03.25 19:43 Сейчас в теме
(12) Когда красота важна, а средствами платформы ее достичь не удается, то HTML c js спасает, кто спорит. Но в данном случае острой необходимости в ней нет. Когда-то игры работали вообще исключительно в текстовом режиме, в лучшем случае с псевдографикой, и геймплей при этом отнюдь не страдал.
14. Viktor_Ermakov 402 13.03.25 20:48 Сейчас в теме
(13) Так и я не спорю ни с чем. Раньше и компьютеров не было, в карты играли, а геймплей был тот же))
Но я предпочитаю ориентироваться не на то что было, а на то что будет, это уже философия пошла :-)
Для отправки сообщения требуется регистрация/авторизация