我正在努力研究如何将2D数组中的索引号转换为可能的动作,以使菜鸟和主教移动。我想获得一个布尔表达式,以查看此举是否合法。抱歉,我是编程新手,非常感谢您的帮助
对于新手来说,我有
if(Math.abs(xTo-xFrom)>1 &&. Math.abs(yTo-yFrom)==0){ }
答案 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都有很多。您必须确保清除路径直到目标坐标,您必须确保目标坐标不会被同一位玩家占据,并且您必须检查此举是否使检查中的同一位玩家(无论如何都要进行任何移动)。