我正在努力解决如何将二维数组中的索引号转换为车和象移动的可能移动。我想得到一个布尔表达式来查看移动是否合法。抱歉,我是编程新手,非常感谢您的帮助
对于车,我有
if(Math.abs(xTo-xFrom)>1 &&. Math.abs(yTo-yFrom)==0){ }
车水平和垂直移动。所以要么x
坐标改变而y
保持不变,要么y
坐标改变而x
坐标保持不变。
if ((xFrom != xTo) && (yFrom == yTo) || (xFrom == xTo) && (yFrom != yTo))
或者,您可以使用异或(XOR),这与上面的内容基本相同,只是更简洁。
if ((xFrom != xTo) ^ (yFrom != yTo))
如果其中之一为真,则 XOR 返回真,但不是两者都为真。
请记住,车还有与国王的特殊城堡移动,您需要根据游戏状态(车和国王都没有移动,国王没有受到控制等)来迎合。
象对角线移动,所以 xFrom 和 xTo 之间的差异必须与 yFrom 和 yTo 之间的差异在两个方向上相同。
所以这应该对主教有用:
if (Math.abs(xTo - xFrom) == Math.abs(yTo - yFrom))
当然,Rook 和 Bishop 的内容还有很多。你必须确保直到目的地坐标的路径是畅通的,你必须确保目的地坐标没有被同一玩家的一块占据,你必须检查这个动作没有把王检查中的同一玩家(无论如何,您必须为任何棋子移动做)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句