我有连接四种类型游戏的评估功能。我不明白评估函数何时给出负值。我的评估函数基本上为每次移动分配一个值,psuedocode可能更容易显示
if player has 4 in a row
return 5000;
if player has 3 in a row
return 4000;
if opponent has 3 in a row or 3 in a column
return 4000;
if opponent a disjoint 3 in a row or column //ie xx x
return 4000;
if opponent has in row with spaces on both sides// ie ' 'OO' '
return 100;
if opponent has two in arrow w/o spaces on both sides // ie XOO
return 95;
这是基本思想,但由于没有负值,min函数总是返回0;
我在这里缺少什么?
答案 0 :(得分:0)
首先,您的评估函数不必给出负值。这只是一个简单的惯例,对于一个玩家来说是好的,对于玩家一个是积极的,对于玩家二是好的是负的,同样好的是零。这不应该导致你的min函数返回零。如果你发布你的min函数,也许我们可以帮助你。我个人经验的怀疑(我也做了一个连接四引擎)是min函数将默认值设置为零。这只适用于max函数。 min函数默认值必须设置为一个非常高的数字(在评估数字为5000的情况下)。否则,它所看到的所有动作都将永远不会为零。只是一个猜测