0

我正在尝试为“获得四个”游戏编写一个简单的 AI。基本的游戏原理已经完成,所以我可以扔不同颜色的硬币,它们相互堆叠并填充一个 2D Array 等等。到目前为止,这是该方法的样子:

public int insert(int x, int color)  //0 = empty, 1=player1 2=player2"

X 是水平坐标,因为 y 坐标取决于阵列中已经有多少石头,我认为这个想法很明显。

现在的问题是我必须对特定的游戏情况进行评分,因此找出在特定情况下我可以连续获得多少新对、三胞胎和可能的 4 个,然后为每种情况赋予特定值。有了这些值,我可以设置一个“游戏树”,然后决定下一步哪个动作最好(稍后实施 Alpha-Beta-Pruning)。我目前的问题是我想不出一种有效的方法来在 java 方法中实现对当前游戏情况的评级。
任何想法将不胜感激!

4

3 回答 3

4

我猜这是一个家庭作业,你的意思是你想写评估函数,不知道用什么技巧?

游戏英文叫“Connect 4”,所以你可以google一下“connect 4评估功能”。

你可以找到足够多的人讨论启发式。

请不要复制实际的源代码,这是一个重要的练习:)

于 2008-12-10T00:27:10.147 回答
1

Connect 4 的搜索空间不是很大。对于一个简单的实现,尽管运行需要一段时间(可能需要数十分钟),但执行极小极大搜索,直到有人获胜或游戏结束。指定 +1 或 -1 表示一名玩家或另一名玩家获胜,0 表示平局。

于 2008-12-10T10:04:52.230 回答
0

胡说。搜索空间很大。如果你想这样做,你需要使用一个预定义的表。

于 2009-02-05T18:33:11.703 回答