最近迷上了一个小游戏,消灭星星,想到能否用计算机自动处理,一开始觉得很容易,但实际着手后发现比较困难。其中难点在于:
l 变化太多,无法在短时间内穷举。
l 局部影响全局,但又不能决定全局。局部最优不代表全局最优
l 对每个状态没有太好的评估函数,即我们无法简单的比较那个状态好,那个状态差。
在这几点上,POPSTAR和围棋很相似,当然规则上比围棋要简单多了,维度上也比围棋小,可以视为简化的围棋。在CSDN网站上发现有人有同样的兴趣,但后来就没有人回复了。
http://bbs.csdn.net/topics/390145455?page=1#post-395243752
我做了一个小程序,大致的原理是,用四叉树找到所有可消除的块,然后根据块的大小,位置,颜色得到评估指标,并向下搜索一层,根据下一层的状态再进行评估排序,得到评估比较高的状态再进行处理。
由于还没有实现更自动化的方法,因此整个游戏的流程如下:
手机助手截屏-》自动图像识别生成文件-》自动处理文件-》手工操作手机完成,但是后来由于手工输入错误,导致没有达到20万分就结束了,一共进行了54关,时间限制为每题10秒的时间。每个题目的平均分大约为3800,还不足以无限续关,但一般可以达到20万分左右,可以向别人炫耀一下了,呵呵(反正周围的人很少能自己玩到10万分,而用这个程序理论上可以到40万分)。
题目放在了http://download.csdn.net/detail/firefight/5889619,有兴趣的可以自己编程试试。
消除星星的规则在上面的第一个链接中有,补充几点如下:
维度为10*10,颜色种类五种,分别为红,黄,绿,蓝,紫
同颜色的连接在一起的块可以消除,消除的分数为5*(N^2),N为消除的块数
剩余BONUS的公式为2000-20*(N^2),N为剩余的块数,N<10(N>=10后BONUS为0)
过关分数要求为
| 1000 |
| 3000 |
| 6000 |
| 8000 |
| 10000 |
| 13000 |
| 15000 |
| 17000 |
| 20000 |
20000以上都是每关增加4000分,因此如果平均分为4000分的话,理论上可以无限续关。
本文介绍了一种自动处理“消灭星星”游戏的方法。通过四叉树寻找可消除块,并使用评估函数选择最佳消除策略。虽然手工操作仍占一定比例,但理论上可实现较高得分。
游戏的自动处理&spm=1001.2101.3001.5002&articleId=10002339&d=1&t=3&u=03877eb74af34ac5aaa3ac1d778321be)
1576

被折叠的 条评论
为什么被折叠?



