gifts2017

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

Опубликовал Александр Рытов (Арчибальд) в раздел Сообщество - Игры

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

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

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

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

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

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

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

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