我实际上正在开发一款棋盘游戏,它是TIC-TAC-TOE
游戏的变体。游戏的具体内容如下:
1。该游戏在n
x n
主板上播放,n
变量。
2。如果玩家成功放置第一个k
对齐,k
是变量,则该玩家获胜。
3. 对齐由水平,垂直或对角线中的l
标记( X 或 O )构成。 l
已修复。
4. 如果n
x n
网格已满(没有玩家可以添加 X 或 O < / strong>)并且没有任何玩家成功放置k
路线以便绘制游戏。
我正在使用minmax
alpha-beta prunning
算法。这是我的第一个人工智能程序,我不知道如何创建算法使用的评估函数。我在网上看到了一些使用材料加权来评估位置的例子,但我不能在我的情况下应用它。实际上,我正在使用一个radom评估函数,它返回-100
和100
之间的值。
float Conf_eval(Configuration c)
{
return (rand()%201)-100;
}
如何评估给定的电路板配置?
答案 0 :(得分:0)
在Artificial Intelligence - A Modern Approach
一书中对此进行了详尽的讨论根据书籍系列,还有优秀的implementations可用(这是java,还有python,你可以谷歌更多)。包括tic-tac-toe(和alpha-beta修剪剂)。
如果您将min-max algorithm与alpha-beta prunning一起使用,则可以使用已排序的&#34;操作&#34;列表除了你的启发式函数之外还能表现得更好(一个简单的实用程序 -function会将1分配给胜利,0分配给一个平局,-1分配给损失 - 这些都是min的叶子节点-max扩展树)。
要对您可以执行的操作进行排序,比如说,更喜欢将符号( X , O )添加到明确到胜利路径的操作。这最终会导致更好的结果。