Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Поиск вариантов хода (http://www.flasher.ru/forum/showthread.php?t=118416)

oCa 23.11.2008 12:21

Поиск вариантов хода
 
Вложений: 1
Всем моё почтение!
Прошу помощи в поиске пути (хотя бы направления куда копать) для решения следующей задачи:
(Пояснения во вложении)

Дано:
1. Поле (MxN), разбитое на клетки, у каждой клетки имеется свой номер, и соответственно можно определить номер строк и столбца (координаты);
2. Узлы (игроки), находящиеся строго в центре клеток. Имеют номера и координаты (номера ячеек 17 и 25);
3. K - кол-во ходов (здесь, на рисунке - K=3).
4. Некий предмет, который находится у игрока. Известны координаты - совпадают с координатами игрока (у игрока на клетке 25).


Найти
1. Клетки куда можно сходить (бросить предмет). (Зелёные клетки)

Ограничения
1. Ходы возможны только по направлениям ферзя и на кол-во К-клеток. 2. Если на пути встречается другой игрок, то передав ему предмет, он может кинуть последний на оставшееся кол-во клеток (от первого игрока можно бросить по темным линиям, от второго - светлым).
3. Отдать обратно предмет нельзя (клетка 33)

Может есть какие идеи? Рекурсия или каждое направление рассматривать отдельно? Словом, в затруднении...

Mnilionic 24.11.2008 03:28

самое простое перебором.
например, номера полей можно задать так:
по игрику десятки по иксу единицы - пример 23: второй ряд, третий столб
после чего циклами перебрать все направления:
для проверок нужных клеток получаем их номера +-10 по вертикали, +-1 по горизонту, по диагонялям соотвественно и десятки и единицы менять.
Кол-во вхождений цикла ограничивается:
1 кол-вом ходов
2 пока не выйдем за рамки поля
3 пока не достигнем целевой клетки с которой можем произвести действие

по восем цыклов на объект. кол-во цыклов можно снижать если попадается достаточное условие. Например в шашках при проверки наличия ходов, нужно обрывать проверку при первом положительном результате.

Я так делал шашки когда-то: проверял наличие хода вообще, подсказку для движения выбранной шашки/дамки, блокировка хода если была возможность "сожрать" противника и несколько разных опций в зависимости от выбора правил игры. :)

Возможно это делается по-умному, какими-нибудь битовыми операциями и матрицами...

oCa 24.11.2008 18:08

Спасибо за помощь!
В целом пришел к такому же исходу - перебор по 8 циклам (направлениям).


Часовой пояс GMT +4, время: 21:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.