如何检查国际象棋中的将棋?

问题描述 投票:0回答:2

现在,我有一个方法boolean方法,如果国王在检查中,则返回true;如果国王不在检查中,则返回false。

我也有一种方法可以将威胁国王的棋子的所有坐标转换为2d数组列表,另一种方法可以将所有可能的移动都转换为另一个2d数组列表。

现在,我不知道要去哪里。您可以编写伪代码来说明如何进行编程以检查将死吗?

java algorithm chess
2个回答
1
投票

写一个确定国王是否在检查中的函数:

def inCheck(...):
  for each opponent piece:
    can that piece take the king?

然后编写一个执行此操作的函数:

def checkMate():
  is inCheck():
    for each legal move:
      is still inCheck() after making the move?

0
投票

蛮力进场:如果某个玩家国王处于检定状态,则尝试对该玩家所有剩余部分进行所有可能的移动。如果所有举动也导致国王受到控制,那么玩家将处于同伴状态。

这是checkmate的定义:

[Checkmate [...]是国际象棋[...]的游戏位置,其中棋手的国王处于受检状态(被擒获威胁),无法消除威胁。

即没有任何行动可以使国王不受到控制。

对比:

[如果玩家没有受到控制但没有合法举动,则为僵局,并且游戏立即以平局结束。

© www.soinside.com 2019 - 2024. All rights reserved.