Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Первоначальная расстановка в Пятнашки


Pat ©   (26.08.16 09:19

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


Pat ©   (26.08.16 17:37[1]

Временно решил проблему следующим образом: заполняю массив собранного поля, и в случайном порядке перемещаю фишки


Rouse_ ©   (26.08.16 21:53[2]

Ты эта - чет/нечет считаешь? Там половина не рабочих


Pat ©   (28.08.16 00:22[3]

Я знаю, что там половина не рабочих расстановок.
Все варианты подсчета, которые я находил в инете, при проверке не работают. То ли я не так понимаю.
Давай алгоритм, буду думать.


Наиль ©   (28.08.16 08:27[4]

Лучше не заморачиваться, а делать обратную перестановку. Т.е. сдвигать фишки так как это делает игрок, только от начального положения и рандомно. Для компьютера 1000 сдвигов не проблема, займёт доли секунды.

Хотя, можно проверить любую начальную позицию на правильность. Просто нужно проверить количество парных перестановок, необходимых для того, чтобы фишки стали по порядку. Если число перестановок нечётное, то расклад не верный. Парная перестановка - это снятие с поля двух фишек и смена их местами.
Т.е. первым ходом снимаем с поля единичку и ставим на её место фишку которая стоит на первом месте. Единичку ставим на освободившееся место. Потом повторяем тоже самое для двойки и т.д.
До конца не уверен, давно это было.


Д7   (28.08.16 12:59[5]


> заполняю массив собранного поля, и в случайном порядке перемещаю
> фишки


Вообще-то именно так и делают большинство реализаций этой игры. Проще, без заморочек.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо