2010-02-24 59 views
1

我想写AI国际象棋,我有一个问题。 我准备好了棋子移动规则,并且我正在尝试移除无效的棋子(让棋子等着)。 我写的东西是这样的:AI国际象棋有效举动

ValidateMove(board); 
{ 
for(i=0;i<64;i++) 
if(board[i]==king.opposite) kingpos=board[i]; 

createmoves(board); 

if (moves.contains(kingpos)) return false; 
} 

不过,我使用的是极大极小+α,β和验证正在我的搜索很慢。

回答

5

而不是检查'检查'每一个动作,只是设置失去你的国王给予无穷分数并结束游戏,那么算法将永远不会选择一个移动,让国王失去,除非没有选择。

只要注意stalemate这将需要特殊处理,因为根据上述算法会导致损失,但根据标准的国际象棋规则,它被称为平局。

+0

这并不在博弈树的叶节点的工作。 OTOH离开叶子越远,影响就越小。 – phkahler 2010-02-24 22:08:16

+1

如果你的国王在树上很早就被捕获了,那么你就不那么好了......那么你最终可能会搜索大量无效位置 – tbischel 2010-07-19 23:33:49