Как преобразовать индексы массива в возможные ходы для шахматной фигуры ладьи и слона - PullRequest
0 голосов
/ 07 ноября 2018

Я изо всех сил пытаюсь понять, как преобразовать индексные числа в двумерном массиве в возможные ходы для перемещения ладьи и слона. Я хочу получить логическое выражение, чтобы увидеть, является ли ход законным. Извините, я новичок в программировании, я очень признателен за помощь

для ладьи, у меня есть

if(Math.abs(xTo-xFrom)>1 &&. Math.abs(yTo-yFrom)==0){ }

1 Ответ

0 голосов
/ 08 ноября 2018

Ладья движется горизонтально и вертикально. Таким образом, либо координата x изменяется с неизменной y, либо координата y изменяется с неизменной координатой x.

if ((xFrom != xTo) && (yFrom == yTo) || (xFrom == xTo) && (yFrom != yTo))

В качестве альтернативы, вы можете использовать исключающее ИЛИ (XOR), что по сути то же самое, что и выше, только более кратко.

if ((xFrom != xTo) ^ (yFrom != yTo))

XOR возвращает true, если один из них верен, но не оба.

Помните, что у Ладьи также есть специальный ход Роки с королем, который вам нужно будет обслуживать в зависимости от состояния игры (и ладья, и король не двигались, король не контролируется и т. Д.) .)

Слон движется по диагонали, поэтому разница между xFrom и xTo должна совпадать с разницей между yFrom и yTo в обоих направлениях.

Так что это должно сделать трюк для епископа:

if (Math.abs(xTo - xFrom) == Math.abs(yTo - yFrom))

Конечно, у Ладьи и Епископа гораздо больше. Вы должны убедиться, что путь свободен до координаты пункта назначения, вы должны убедиться, что координата пункта назначения не занята частью того же игрока, и вы должны убедиться, что ход не ставит короля тот же игрок в чеке (который вы должны сделать в любом случае для любого движения фигуры).

...