|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.10.2014, 01:15 | #1 |
Пользователь
Регистрация: 18.04.2014
Сообщений: 10
|
Нерешаемые комбинации в игре "Пятнашки"
Здравствуйте!
Пишу игру Пятнашки для тренировки. Комбинацию я делаю путем случайного перемешивания исходного массива чисел 0, 1, 2,.. 15. Прочитал, что в игре половина комбинаций нерешаема. Следовательно вопрос: как определить, что сгенерированная комбинация решаема и ее можно использовать? Как я понял из Википедии, можно сделать так: 1) идти по полю игры слева направо и сверху вниз; 2) если число костяшки i+1 меньше i-ой костяшки, то Ki = 1. Иначе Ki = 0; 3) сложить все Ki и добавить число e, равное номеру ряда, где находится пустая клетка (нумерация рядов с 1); 4) если полученное число четное, то комбинация решаема. Я прав? Последний раз редактировалось Punk1911; 25.10.2014 в 01:19. |
25.10.2014, 01:49 | #2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,551
|
А что если взять исходное значение поля и генерировать комбинацию путем случайных, но корректных ходов? Всегда будет получаться играбельная комбинация.
E-Mail: arigato.freelance@gmail.com
|
25.10.2014, 04:42 | #3 |
Пользователь
Регистрация: 18.04.2014
Сообщений: 10
|
Как в таком случае определять, что ход корректный и не приведет к нерешаемой комбинации?
|
25.10.2014, 11:54 | #4 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
да просто делай, как в педивикии написано, и всё.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
25.10.2014, 12:30 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Делал бы как Аригато предложил - обратные рандомные перемещения от собранной комбинации. Ходов 30 наверно хватило бы с избытком
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
25.10.2014, 13:26 | #6 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,551
|
Он не может привести к нерешаемой комбинации, потому как вы как бы играете, но наоборот, то есть всегда есть обратный путь. Ну а как проверить корректность хода - программно.
E-Mail: arigato.freelance@gmail.com
|
26.10.2014, 01:26 | #7 |
Пользователь
Регистрация: 18.04.2014
Сообщений: 10
|
Нашел решение. Код не мой.
Когда не знал, что у пятнашек есть нерешаемые комбинации, то подумал, что автор данного кода зря наворотил столько строк. Я ошибался! Тут как раз происходит расстановка костяшек от базовой позиции (1,2,3,..15, "пустышка") путем произвольных ходов. Всем спасибо! Код на C#: Shuffle.txt |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Таблица рекорда для игры "Пятнашки" в Delphi | Xario | Помощь студентам | 0 | 03.06.2014 14:18 |
Игра "Пятнашки" в стиле Metro | Proga073 | Фриланс | 2 | 30.11.2012 21:43 |
Разработка сетевого приложения "Пятнашки" на Си для Linux | dasha1711 | Помощь студентам | 0 | 23.11.2012 21:28 |
игра пятнашки и "собери картинку" | tatiana74 | Помощь студентам | 5 | 22.02.2010 14:07 |
игра "Пятнашки" на Visual C++ с использованием OpenGL | Mr.Happy | Фриланс | 3 | 16.12.2009 16:19 |