我正在制作一个Tic&脚趾游戏,包含一个PC播放器。它是一个3 x 3游戏板,然后包含9个按钮。一旦人类玩家点击按钮(这意味着标记'x'),PC播放器会自动选择下一个。请查看我为PC播放器开发的以下 代码,以选择合适的按钮来标记“o”。
if(buttons[1].getText().equals("O") && buttons[2].getText().equals("O") && buttons[3].getText().equals("")){
buttons[3].setText("O");
buttons[3].setEnabled(false);
} else if(buttons[4].getText().equals("O") && buttons[5].getText().equals("O") && buttons[6].getText().equals("")){
buttons[6].setText("O");
buttons[6].setEnabled(false);
} else if(buttons[7].getText().equals("O") && buttons[8].getText().equals("O") && buttons[9].getText().equals("")){
buttons[9].setText("O");
buttons[9].setEnabled(false);
}
我对此并不满意。这只是一小块,如果其他很长,请逐一检查每个按钮。我不能称之为AI。如果我使网格4 x 4,这意味着我需要编辑整个if else!
有没有更好的方法来选择PC播放器的“o”标记按钮?请帮忙!
更新
我不是在寻找获胜国家。我正在寻找一种算法或其他我可以消除if else的东西。
答案 0 :(得分:2)
你可以通过枚举所有游戏状态来解决井字游戏。你可以削减一些角落,但不是很多。
这是一个很好的图形表示,说明如何执行此操作。 http://xkcd.com/832/
答案 1 :(得分:1)
我(大约)在大学里为AI课程做了这件事。我使用的解决方案是创建几个函数,如findBestMove()
和isGameOver()
等.AI部分是辅助函数,如lastSuccessfulMoveForScenario()
。 Tic-Tac-Toe非常简单,我只是在之前的每次移动中都存储在内存中,是否会带来胜利。然后,我重播了成功的动作,并删除了表现不佳的动作。随着游戏的进行,AI在播放时变得越来越好。不确定这是否是您正在寻找的,但希望它有所帮助。
编辑:
我还应该指出,实际上只有少数人工智能有任何真正的决定。很明显,你必须阻止胜利,如果可以,你应该赢。如果我记得4个动作中只有1个最终使用了“AI”引擎。
答案 2 :(得分:-1)
对于这个,如果是唯一的方法。尽管这是一个漫长的过程,但我们必须这样做。检查所有获胜条件,并使用if else移动