Показать сообщение отдельно
Старый 24.11.2008, 03:28
Mnilionic вне форума Посмотреть профиль Отправить личное сообщение для Mnilionic Найти все сообщения от Mnilionic
  № 2  
Ответить с цитированием
Mnilionic
 
Аватар для Mnilionic

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
самое простое перебором.
например, номера полей можно задать так:
по игрику десятки по иксу единицы - пример 23: второй ряд, третий столб
после чего циклами перебрать все направления:
для проверок нужных клеток получаем их номера +-10 по вертикали, +-1 по горизонту, по диагонялям соотвественно и десятки и единицы менять.
Кол-во вхождений цикла ограничивается:
1 кол-вом ходов
2 пока не выйдем за рамки поля
3 пока не достигнем целевой клетки с которой можем произвести действие

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

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

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