在国际象棋中获得敌人可能的移动到2D阵列
我有三个阵列,
chess = [["c","d","e","f","g","e","d","c"],
["b","b","b","b","b","b","b","b"],
["a","a","a","a","a","a","a","a"],
["a","a","a","a","a","a","a","a"],
["a","a","a","a","a","a","a","a"],
["a","a","a","a","a","a","a","a"],
["h","h","h","h","h","h","h","h"],
["i","j","k","l","m","k","j","i"]]
('a'是空的,'b'是一个黑色的棋子等)以及另外两个8x8阵列,它们都被称为whiteMoves和blackMoves的False。 我想要的是一个功能
def getEnemyMoves():
global chess, whiteMoves, blackMoves
doSomethingToWhiteMoves()
doSomethingToBlackMoves()
例如这些:
我尝试了许多不同的方式来做到这一点,但它们非常复杂,没有一个完全奏效。 这是在我的国际象棋比赛结束之前唯一要做的事情。
遍历棋盘上的棋子。 对于每件作品,根据该作品的移动规则缩小目标广场的范围:
对于每个这样的候选人移动,测试是否有其他限制阻止候选人移动:
如果将这两个通道合并为一个通道,则可以节省一些CPU周期:
这些事情很复杂。 例如在最终决定采取行动之前,你必须测试国王是否在检查。
链接地址: http://www.djcxy.com/p/84667.html上一篇: Get enemy's possible moves in chess to a 2D array
下一篇: Persistent Socket for Chess Board Games logic (Android)