如何将数组索引转换为菜鸟和主教棋子的可能动作

时间:2018-11-07 20:47:44

标签: java arrays chess

我正在努力研究如何将2D数组中的索引号转换为可能的动作,以使菜鸟和主教移动。我想获得一个布尔表达式,以查看此举是否合法。抱歉,我是编程新手,非常感谢您的帮助

对于新手来说,我有

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

1 个答案:

答案 0 :(得分:1)

车子在水平和垂直方向上移动。因此,x坐标会发生变化,而y保持不变,或者y坐标会发生变化,而x坐标保持不变。

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

或者,您可以使用异或(XOR),这与上面的简明本质上是一样的东西。

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

如果其中一个为true,则XOR返回true,但不是两个都为true。

请记住,白嘴鸦还与国王有特殊的卡斯蒂林举动,您需要根据游戏的状态来满足这一要求(无论是新车还是国王都没有动弹,国王没有受到控制,等等) )

主教沿对角线移动,因此xFrom和xTo之间的差异必须在两个方向上与yFrom和yTo之间的差异相同。

因此,这应该可以实现主教的窍门:

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

当然,Rook和Bishop都有很多。您必须确保清除路径直到目标坐标,您必须确保目标坐标不会被同一位玩家占据,并且您必须检查此举是否使检查中的同一位玩家(无论如何都要进行任何移动)。