泡泡破碎机拼图

时间:2010-12-12 07:18:12

标签: c algorithm data-structures graph puzzle

我遇到了解决泡泡破碎机益智游戏的问题。 游戏有两个部分。 1.用户播放器 2.Cpu播放器。  我为用户播放器编写了代码,但不知道Cpu播放器将如何以这种方式播放,以便cpu播放器可以获得最高分并完全清除电路板。 如果有人可以帮我这个??

当游戏开始加载时,文件包含b / w 1和3的整数。 1为红色 绿色2 3为黄色

1111111111
2323333132
1131123222
2222222113
1111111111
1111111111
1111111111
1111111111

相邻颜色应删除。

this这样的游戏。 PLZ通过给我提示获得最高分来帮助我解决cpu播放器问题。 提前谢谢。

3 个答案:

答案 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)

要获得最佳分数,必须计算许多可能性。 影响这种可能性的因素是:

  1. 爆炸需要多少个相邻的气泡?是连续3个气泡吗?连续4个泡泡? 5

  2. 另一个因素是你的泡沫会形成多少种形式以便爆炸?水平形成只?只垂直?它是否包括对角线?

  3. 第三个因素是网格的大小。它有多大?

  4. 所以考虑到这些因素后,这确实会带来很多可能性。

    但是让我们尝试分析一个简单的。比方说,2x2网格只有水平和垂直形成,需要2个气泡才能爆炸:

    [a][b]
    [c][d]
    

    可能性是: a-b,c-d,a-c,b-d = 4种可能性。

    它已经为您提供了4种可能性。

    因此,使用4x4的网格,垂直和hor形成,并且3个气泡爆炸将真正堆积大量计算。