如何检测跳棋中的僵局?

时间:2017-04-29 17:44:12

标签: java

对于我的学校项目,我正在创建一个跳棋游戏。我已经设法使所有这一切正常工作,直到现在我才意识到,如果一个玩家无法移动任何棋子,就有可能陷入僵局。我不确定我是否应该在这里或其他任何地方发布我的代码,但如果我必须请让我知道,我会。谢谢!

1 个答案:

答案 0 :(得分:0)

你必须有一些方法来分析棋盘并知道可能的合法移动(例如,棋子可以向前移动一个,除非它被另一块阻挡,主教对角线直到它被相同颜色或敌人的棋子挡住了所以on;请记住,你必须以不允许移动的方式过滤这些,这会使你进行检查。无论如何,我认为你拥有它,因为你不能允许玩家非法移动。

当你有可能合法移动的列表时,只需检查它是否为空(没有可能的移动),同时玩家不在支票中(因为在没有任何合法移动的支票中,在check-mate)。这就是

编辑:

  

刚才我意识到可能陷入僵局

在我看来,你可能已经忘记了其他一些"不常见的"国际象棋规则以下列出了您可能想要查看的内容:

  • Fifty-move rule
  • Three fold repetition
  • 材料不足(没有足够的东西将敌人放入检查配偶的情况,而假设你们两个都不会犯错误。当遇到这种情况时,它被认为是平局)
  • 在检查时的铸造规则(如果在铸造时国王将被检查,你不能在城堡中,即使在铸造的开始和结束时他也不会被检查
  • Pawn promotion和En passant,但这些是非常明显的规则,你可能已经实现了