我想要實現使用極小的點和噴砂遊戲的AI(http://en.wikipedia.org/wiki/Dots_and_Boxes)的Java極小
這是我到目前爲止有:
public Line makeMove(GameState gs) {
if (gs.getRemainingLines().size() == 1) {
return gs.getRemainingLines().get(0);
}
if (gs.getPlayer() == 1) {
int minscore = -1;
GameState g = gs.clone();
Line lnew = null;
List<Line> l = gs.getRemainingLines();
for (Line l2 : l) {
g.addLine(l2);
if (evaluate(g) > minscore) {
minscore = (evaluate(g));
lnew = l2;
}
}
return lnew;
} else {
int maxscore = 999;
GameState g = gs.clone();
Line lnew = null;
List<Line> l = gs.getRemainingLines();
for (Line l2 : l) {
g.addLine(l2);
if (evaluate(g) < maxscore) {
maxscore = (evaluate(g));
lnew = l2;
}
}
return lnew;
}
}
然而,它不斷返回null
,我不認爲我正確地阻止minimax。任何人都可以給我一些指點。
getRemainingLines()
返回仍然可能的移動列表。
evaluate()
返回分數的整數。
你可以跟蹤你的評價功能? –
你的空指針異常是什麼樣的?你可以包含堆棧跟蹤嗎? –