我正在用python写一个国际象棋游戏。当检查国王时,我需要过滤掉可能的动作,阻止检查或移动国王。我想编写一个函数来返回可能的阻塞动作,以阻止检查。函数将如下所示:
def getBlockingCheckMoves(pieceField,kingPos)
对于一个车来说,一个很长的解决方案看起来像这样:
- 查看x坐标是否相同,返回由y的范围组成的元组,并使用正确的增量。
- 如果y坐标相同,则返回由x的范围组成的元组。
醇>
使用itertools是否有更多的pythonic方法来实现这一目标?
编辑:我的长版
if pieceField[0] == kingPos[0]:
if pieceField[1] < kingPos[1]:
return [(pieceField[0],x) for x in range(pieceField[1],kingPos[1])]
else:
return [(pieceField[0],x) for x in range(pieceField[1],kingPos[1],-1)]
if pieceField[1] == kingPos[1]:
if pieceField[0] < kingPos[0]:
return [(x,pieceField[1]) for x in range(pieceField[0],kingPos[0])]
else:
return [(x,pieceField[1]) for x in range(pieceField[0],kingPos[0],-1)]