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