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

Публикация № 1848125 18.04.23

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

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

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

Об игре

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

 
 Пример игры

Управление:

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.

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

 

    

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

   

Скачать файлы

Наименование Файл Версия Размер
Головоломка Пентамино:

.erf 21,92Kb
3
.erf 21,92Kb 3 Скачать

Специальные предложения

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

См. также

Плоский "Кубик Рубика"

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Вы можете собрать кубик Рубика? Я - только с помощью инструкции:). Попробуйте справиться с его плоским аналогом.

1 стартмани

29.05.2023    1013    3    Alxby    2    

7

Пасьянс Марии Стюарт (пасьянс Медичи) - попробуй изменить свою судьбу

Игры Платформа 1С v8.3 Россия Абонемент ($m)

Игра - пасьянс Марии Стюарт. Есть возможность создавать свои расклады, обмениваться раскладами и менять картинки карт.

1 стартмани

05.05.2023    1737    1    sandr13    0    

7

Тетрис

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Когда под рукой только 1С и как-то нужно скоротать время, можно поиграть в Тетрис.

1 стартмани

29.04.2023    2060    5    user1693438    0    

9

"Жизнь" Конвея и другие клеточные автоматы

Игры Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Я думаю, нет нужды представлять математика Джона Конвея и его "Game of Life" - игру "Жизнь". Предлагаю вспомнить эту игру, а также другие "жизне"-подобные клеточные автоматы. К статье приложен файл с реализацией этой игры.

1 стартмани

22.03.2023    3547    6    Alxby    16    

17

Игра Жук. Заставь его бегать как можно дольше!

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

10.03.2023    2701    2    kyzma-kyzmi4    2    

12

Игра "Только вперед!" + мини-библиотека для игр по сети

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Правила этой игры поймет любой дошкольник, но выиграть в нее по силам не каждому взрослому...

1 стартмани

01.03.2023    3791    2    Alxby    9    

20

Карточная игра "Подкидной дурак"

Игры Платформа 1С v8.3 Абонемент ($m)

Продолжаем тему игр на платформе 1С:Предприятие, классический "Подкидной дурак".

1 стартмани

20.02.2023    1782    4    oldcopy    6    

9

Игра "Змейка" на 1С (управляемые формы)

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

27.01.2023    4466    15    APTEM_SLV    18    

18

Девятка (Девятки) - карточная игра для платформы 1С на управляемых формах с открытым кодом

Игры Платформа 1С v8.3 Управляемые формы Абонемент ($m)

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

1 стартмани

25.01.2023    2112    1    GODCRM    3    

9

Игра "Девятнадцать"

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

19.01.2023    3714    11    Alxby    40    

28

Игра Балда (одномерный вариант)

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

05.12.2022    3105    2    Alexei_Siva    1    

15

Сетевая игра "Захват клеток"

Игры 8.3.14 Конфигурации 1cv8 ИТ-компания Россия Абонемент ($m)

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

1 стартмани

12.09.2022    5545    12    Sergey_Borisovi4    9    

33

Игра "5 Букв" для мобильного приложения

Игры Мобильная платформа Абонемент ($m)

Игра 5 Букв (русский аналог Wordle) - в виде мобильного приложения - в архиве имеются исходники, с помощью которых вы можете пересоздать игру или, возможно, как-то ее улучшить, а также собранные установочные файлы для установки на телефон с Android.

1 стартмани

30.06.2022    3231    0    o.kovalev    0    

6

Портирование простой браузерной игрушки Flappy Birds (JavaScript) на 1С через внешнюю обработку

Игры Платформа 1С v8.3 8.3.14 Бесплатно (free)

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

08.06.2022    3566    109    serverstar    1    

14

Карточная игра "Дурак"

Игры Платформа 1С v8.3 Россия Абонемент ($m)

Сверху скрытые карты компьютера. Посередине поле боя, куда ходят игрок и компьютер. Снизу карты игрока. При нажатии на кнопку начать, происходит раздача карт и определение козырной масти. У кого из игроков более младший козырь, тот и ходит.

1 стартмани

07.06.2022    6544    19    user676027_svikator    16    

46

Игра «Шестикратный NERDLE» на 1С

Игры 8.3.6 Конфигурации 1cv8 Абонемент ($m)

Новый вариант популярной игры NERDLE на 1С.

1 стартмани

11.04.2022    2783    1    Obertone    0    

9

Игра «NERDLE» на 1С

Игры 8.3.6 Конфигурации 1cv8 Абонемент ($m)

Утром в интернете - вечером на мониторе. Новая игра на 1С.

1 стартмани

05.04.2022    3017    3    Obertone    1    

8

Игра WORDLE на 1С

Игры 8.3.6 Конфигурации 1cv8 Бесплатно (free)

Утром в газете - вечером в куплете. Новая игра на 1С.

14.01.2022    5115    70    afk    8    

14

RoboZZle для управляемых форм

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

RoboZZle - игра для программистов, для тех, кто хочет стать таковым и просто для людей, любящих подумать. Эта игра позволяет начать мыслить алгоритмически, просчитывать шаги наперед и научиться таким основам программирования, как рекурсия, циклы, условия, стек вызовов и т.д.

2 стартмани

22.12.2021    3482    2    Caliban    4    

5

Игра про крипового колобка из 80-х

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Аркадный платформер в виде внешней обработки для 1С:Предприятие 8. Помоги колобку добраться до крыши общаги!

1 стартмани

16.12.2021    3301    1    sa1m0nn    1    

6

Игра "Тетрис"

Игры Платформа 1С v8.3 Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

Классическая игра в тетрис.

1 стартмани

12.08.2021    4502    3    van010190    0    

6

Майнкрафт и 1С

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Создай свой мир через 1С.

4 стартмани

16.07.2021    5817    1    SerVer1C    0    

12

"Уголки" на 1С

Игры Платформа 1С v8.3 Узбекистан Абонемент ($m)

Игра "Уголки" на 1С - ностальгия детства !!!

1 стартмани

09.06.2021    7411    6    royaljon    5    

19

Игра "Змейка" на управляемых формах (клиент)

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Пишем игру с динамическим обновлением игрового поля и управлением с клавиатуры на управляемых формах, отправляем на github.

1 стартмани

07.06.2021    6034    3    alexey_kurdyukov    0    

7

Игра "The Game"

Игры Платформа 1С v8.3 Россия Бесплатно (free)

Движок RPG игры на языке 1С.

04.06.2021    15682    297    user1051565    22    

79

Игра "King's Bounty"

Игры Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

Легендарная игра "King's Bounty" теперь и на 1С!

3 стартмани

26.05.2021    8860    32    Caliban    25    

51

Самые красивые шахматы для 1С на управляемых формах

Игры Платформа 1С v8.3 8.3.14 Россия Абонемент ($m)

Здравствуйте, представляем Вашему вниманию классическую игру – Шахматы! Написана игра средствами 1С, на управляемых формах. Программный код представляет собой с аккуратностью составленную систему, содержащую лаконичные логические приемы и описательные имена переменных, объектов и функций. Программа полностью отлажена и многократно протестирована. Оригинальный авторский дизайн фигур, иконок и кнопок приятен глазу. Игра содержит большое количество функций, настроек и режимов игры, включая сетевую игру, тренировку с ботом или игру на двоих. Не упустите возможность найти ряд технических решений, применимых для реализации различных задач, а также поиграть в вечную игру с отличным оформлением! Желающие научиться программировать на управляемых формах могут многое почерпнуть в этой конфигурации.

5 стартмани

18.02.2021    10370    23    compmir    32    

65

Прототип игры Морской бой

Игры Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Решенное тестовое задание при приеме на работу в крупный франч. Всё сделано строго по ТЗ. Обработка включена в конфигурацию, и может запускаться как внутри, так и как внешняя. Для правильной работы потребуется опубликовать веб-сервис. Использованы механизмы веб-сервисов, XDTO, запросов, управляемых форм.

1 стартмани

28.12.2020    6200    1    Sungang    0    

5

Морской бой для 1С: 8.3

Игры Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

30.11.2020    6350    298    AlexDen    6    

14

Сапер на управляемых формах

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Обнаружил, что на компе нет стандартных игр, включая сапера. Написал свою версию.

1 стартмани

23.09.2020    6828    1    VitSim    5    

6

Морской бой в 1С (обычные и управляемые формы)

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Классическая популярная игра "Морской бой" для 1С (обычные и управляемые формы)

1 стартмани

15.06.2020    6186    9    Denr83    0    

16

Гороскоп (виджет) для поднятия настроения на карантине (расширение конфигурации)

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

'Первые шаги', работа с расширением конфигурации, картинками, запросами к базе, запросами к RSS, сохранением настроек, импортом экспортом и т.д. - все на стандартном функционале 1С.

1 стартмани

24.03.2020    9699    1    ef1    12    

15

Майнкрафт

Игры Платформа 1С v8.3 Бесплатно (free)

Не знаю, кто как расслабляется после работы, а я играю в Майнкрафт. Эта нелепая поначалу игра всё же затянула и меня полгода назад. И вот, результат игрищ программиста 1С в Майнкрафте.

24.03.2020    9933    68    PLAstic    17    

37

Ханойские башни

Игры Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Решение головоломки "Ханойская башня" с визуализацией в среде 1С.

5 стартмани

23.12.2019    10647    3    13vap    0    

7

Игра шашки

Игры Платформа 1С v8.3 Абонемент ($m)

Игра "Шашки" на управляемых формах. Все замечания и пожелания приветствуются!

1 стартмани

21.10.2019    8520    3    Robertik    3    

7

Блэк Джек

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Блэк джек, написанный на платформе 1С 8.2 (обычные формы).

1 стартмани

07.10.2019    10471    1    Azamatex    2    

5

Игра "Арканоид" (Javascript фреймворк Phaser). HTML 5 Сanvas + WebGL. Управляемые формы (ТОНКИЙ, ТОЛСТЫЙ клиент), Обычные формы

Игры Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Общеизвестная игра "Арканоид", доступная для запуска в 1с. Выполнена в виде обработки, запускаемой из папки, в которой расположены файлы проекта (html, js файла и картинки) Любые конфигурации на обычных формах, управляемых формах (Тонкий + Толстый клиент). УПП, БП 2.0, 3.0. После открытия обработки нажимаем мышью на область экрана игры, точнее, нажимаем на кнопку "СТАРТ" (области игры). Начинается игра. Управление мышью.

1 стартмани

04.05.2019    13070    8    pvlunegov    2    

7

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

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Игра Змейка с автопилотом реализована в парадигме автоматного программирования.

1 стартмани

23.04.2019    13093    2    RonX01    17    

14

Розыгрыш к 1 апреля (№2) [Расширение] УТ11

Игры Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Меняем язык надписей на формах для пользователя с помощью сервиса яндекс-переводчик.

1 стартмани

26.03.2019    11101    5    noprogrammer    2    

8