我正在尝试写一个简单的人工智能的“得到四”游戏。基本的游戏规则已经完成了,所以我可以扔进不同颜色的硬币,它们堆叠在一起,填充一个2D数组,等等。到目前为止,该方法看起来是这样的:
public int insert(int x, int color) //0 = empty, 1=player1 2=player2"X是水平坐标,因为y坐标是由数组中已经有多少块石头决定的,我认为这个想法是显而易见的。
现在的问题是,我必须对特定的游戏情况进行评分,所以找出在特定情况下我可以获得多少个新的对、三元组和可能的4个,然后给每个情况一个特定值。有了这些值,我可以建立一个“游戏树”,然后决定下一步最好的走法(稍后实现Alpha-Beta-Pruning)。我目前的问题是,我不能想出一种有效的方法来在java方法中实现对当前游戏情况的评级。
任何想法都将不胜感激!
发布于 2008-12-10 00:27:10
我猜这是一个家庭作业,你的意思是你想要写求值函数,但不知道该使用什么技巧?
这个游戏的英文名是"Connect 4“,所以你可以在谷歌上搜索"connect 4评估函数”。
你可以找到足够多的人讨论启发式。
请不要复制实际的源代码,这是一个重要的练习:)
发布于 2008-12-10 10:04:52
Connect 4的搜索空间并不是非常大。对于一个简单的实现,尽管需要运行一段时间(可能需要几十分钟),请执行极小极大搜索,直到有人获胜或游戏结束。分配+1或-1表示一个玩家或另一个玩家获胜,分配0表示平局。
发布于 2009-02-05 18:33:12
胡说八道。搜索空间很大。如果你想这样做,你需要使用一个预定义的表。
https://stackoverflow.com/questions/354689
复制相似问题