我遇到了解决泡泡破碎机益智游戏的问题。 游戏有两个部分。 1.用户播放器 2.Cpu播放器。 我为用户播放器编写了代码,但不知道Cpu播放器将如何以这种方式播放,以便cpu播放器可以获得最高分并完全清除电路板。 如果有人可以帮我这个??
当游戏开始加载时,文件包含b / w 1和3的整数。 1为红色 绿色2 3为黄色
1111111111
2323333132
1131123222
2222222113
1111111111
1111111111
1111111111
1111111111
相邻颜色应删除。
像this这样的游戏。 PLZ通过给我提示获得最高分来帮助我解决cpu播放器问题。 提前谢谢。
答案 0 :(得分:2)
如果你只需要一个“好”的分数而不是完美的分数,你可以使用蒙特卡罗技术。基本思路是:
随机选择要点击的位置。这样做直到没有可能移除任何球。记住你点击的分数和分数。
这样做10000次,对大多数人来说都没问题。
如果您仍然需要获得更好的AI播放器,您可以将上面获得的最高分数作为下限。然后,您可以估算某个位置可以达到的最大点数,如果该数字小于“最佳随机分数”,则可以取消该特定尝试。
答案 1 :(得分:0)
您可以将网格视为二维数组。
11...
23...
表示
arr[0][0]=1;
arr[0][1]=1;
arr[1][0]=2;
arr[1][1]=3;
你可以用这种方式检查相同颜色的存在:
//using arr[0][0] as the base point
if ( (arr[0][0])==(arr[0][1])) //look in your right
{
//explode
}
if ( (arr[0][0])==(arr[1][0])) //look below
{
//explode
}
if ( (arr[0][0])==(arr[1][1])) //look at lower right (diagonal)
{
//explode
}
答案 2 :(得分:0)
要获得最佳分数,必须计算许多可能性。 影响这种可能性的因素是:
爆炸需要多少个相邻的气泡?是连续3个气泡吗?连续4个泡泡? 5
另一个因素是你的泡沫会形成多少种形式以便爆炸?水平形成只?只垂直?它是否包括对角线?
第三个因素是网格的大小。它有多大?
所以考虑到这些因素后,这确实会带来很多可能性。
但是让我们尝试分析一个简单的。比方说,2x2网格只有水平和垂直形成,需要2个气泡才能爆炸:
[a][b]
[c][d]
可能性是: a-b,c-d,a-c,b-d = 4种可能性。
它已经为您提供了4种可能性。
因此,使用4x4的网格,垂直和hor形成,并且3个气泡爆炸将真正堆积大量计算。