Пятнашки с решением (7.7)

Сообщество - Игры

Анализируем алгоритм пятнашек

Дизайн игры взят из подборки Ёпрста. Начальная расстановка делается псевдослучайным перемешиванием, так что решение всегда существует (см комм. 17 к //infostart.ru/projects/4970/ )

В алгоритме имеется глюк: кнопка Решить иногда срабатывает не с первого раза.

Буду благодарен за усовершенствование алгоритма.

Глюк устранен благодаря подсказке Ёпрста Smile

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

Наименование Файл Версия Размер
Игра
.1248161517 581,50Kb
30.10.09
106
.1248161517 581,50Kb 106 Скачать

См. также

Комментарии
1. Вячеслав Н. Бойко (boy13) 167 21.07.09 11:38 Сейчас в теме
можно было бы еще двигать шашки нажимая на них самих... :)
2. Александр Рытов (Арчибальд) 2660 21.07.09 11:44 Сейчас в теме
(1) В той подборке, которую я упомянул, были и такие. Но меня картинки интересовали.
3. Ёпрст (Ёпрст) 1021 21.07.09 12:35 Сейчас в теме
(2) Ну и ? Клик на картинке легко ловится...
:)
5. Александр Рытов (Арчибальд) 2660 21.07.09 13:12 Сейчас в теме
(3) Это ты знаешь. И я где-то видел, но забыл где.
(4) Есть такой глюк. Надоело ловить его. А на пошаговом решении не затыкается...
6. Ёпрст (Ёпрст) 1021 21.07.09 13:22 Сейчас в теме
(5) смотри у меня в профиле покерок или грибочки - там реализовано :)...
всё штатно.
8. Александр Рытов (Арчибальд) 2660 21.07.09 13:43 Сейчас в теме
(6) Во-во. В грибах я его и видел...
4. Ёпрст (Ёпрст) 1021 21.07.09 12:38 Сейчас в теме
Решить работает с 2-3 раза :))..
А так неплохо..
7. Ёпрст (Ёпрст) 1021 21.07.09 13:40 Сейчас в теме
Да... посмотрел код, так и не вкурил, чего ты там не мог побороть глюк ???
:))

Процедура Решить()
....Для Ф = 1 По 9 цикл
..........Если Место(Ф)<>Ф Тогда
................Сообщить("Фишка "+Ф);
................СледШаг(Ф);
................Решить();
................Прервать;
..........КонецЕсли;
....КонецЦикла;

и усё работает...
Арчибальд; +1 Ответить
9. Александр Рытов (Арчибальд) 2660 21.07.09 13:48 Сейчас в теме
10. Александр Рытов (Арчибальд) 2660 21.07.09 14:03 Сейчас в теме
(7) А вот так - да
//__________________________________________________________­___________________
Функция Шаг(номХода)
Если номХода < 10 Тогда
Возврат номХода;
ИначеЕсли номХода = 10 Тогда
Возврат 13;
ИначеЕсли номХода = 11 Тогда
Возврат 10;
ИначеЕсли номХода = 12 Тогда
Возврат 14;
ИначеЕсли номХода = 13 Тогда
Возврат 11;
КонецЕсли;
КонецФункции
//__________________________________________________________­___________________
Процедура Решить()
Для Ф = 1 По 13 цикл
Если Место(Шаг(Ф))<>Шаг(Ф) Тогда
Сообщить("Фишка "+Шаг(Ф));
СледШаг(Шаг(Ф));
Решить();
Прервать;
КонецЕсли;
КонецЦикла;
Если Место(16) = 15 Тогда Влево(); ИначеЕсли Место(16) = 12 Тогда Вверх(); КонецЕсли;
КонецПроцедуры
11. Ёпрст (Ёпрст) 1021 21.07.09 14:06 Сейчас в теме
(10) ну. у меня и как в (7) работает.. я дальше даже не смотрел..
12. Ёпрст (Ёпрст) 1021 21.07.09 14:06 Сейчас в теме
+11 И это...ниже код там просто не писал.. он там так и остался..
13. Александр Рытов (Арчибальд) 2660 21.07.09 14:13 Сейчас в теме
(12) Кок в (7) работает, если затык до 9.
За подсказку по-любому спасибо.
14. Юрий Тимофеев (Tatitutu) 3672 16.12.09 16:30 Сейчас в теме
15. Алексей Слепых (inkko) 25.12.10 20:29 Сейчас в теме
При перемещении младших фишек из неродного Столба и не с нижнего Ряда создаёт дополнительное движение Вниз() при достижении фишкой родного для неё Столба, но недостижении родного Ряда.
Например, Фишка1 движется из ячейки 11. Когда дойдет до Столба[1] Ряда[3] Алгоритм опускает её на ячейку 13. После этого нормально поднимает по рдномк Столбу. Куча лишних перемещений создаётся :(
16. Александр Рытов (Арчибальд) 2660 28.12.10 09:28 Сейчас в теме
(15) Возможно, не помню уже. Не хотелось нагромождать проверки всяческие...
Оставьте свое сообщение