我正在编写一个游戏,它是五子棋的一个变种。 基本上就是在巨大的棋盘上玩的井字游戏。
想知道有没有人知道这个游戏的好的AI策略。 我目前的实现非常愚蠢,而且耗时很长(O(n^3),大约1-2秒才能走一步):
-(void) moveAI {
//检查敌人是否试图在水平、垂直或对角方向上连成一条线
//O(n^3 * 3)
[self checkEnemies];
//检查我们是否可以在水平、垂直或对角方向上连成一条线
//O(n^3 * 3)
[self checkIfWeCanMakeALine];
//否则就随机放一个棋子
[self put randomly];
}
回答:
对于五子棋,已经找到了制胜策略。 请参阅这篇论文:L. Victor Allis, H. J. van den Herik, M. P. H. Huntjens, 1993. Go-Moku and Threat-Space Search。 在我编写自己的程序时,它给了我很大的帮助。 通过这种方式,你将能够编写一个非常擅长攻击对手并找到获胜组合的程序。