DeBejeweled3 —— 自动玩 Bejeweled 3 的小程序
昨天夜里心血来潮,把好几年前就想写的自动玩 Bejeweled 的程序给写了。不过今天下午一搜,好像有人写过了,但看视频感觉是冲着刷分去的,没什么视觉效果,和我的目的不一样。



程序是 C# 写的,从 CodeProjects 上找来了抓屏、鼠标控制以及全局热键设置的代码,自己只写玩 Bejeweled 的算法。宝石的颜色通过取几个像素的色相平均值来判断,再遇到发光之类的非普通宝石时容易判断错误,大部分情况下还都可以,通过加入一定的随机性处理不至于让操作成为死循环。

宝石具体如何拖动,是靠对预先定义的模板进行匹配得到的。模板就像下面这个样子:

--A-
XXB-
--X-
--X-

程序启动时读取这些模板,对其进行水平/垂直翻转和旋转,以得到各种可能的情况。最终生成的可用数据是一个表示宝石分布的二进制序列 (如以上这个模板的二进制序列即为 0010 1100 0010 0010),一个表示要移动宝石的位置的整数 (以上这个模板中为 2),和一个表示目标位置的整数 (以上这个模板中为 6)。

程序对所有宝石进行 4x4 和 3x3 的分块后,也为每个分块生成一个二进制序列,若其与模板的二进制序列进行逻辑与运算的结果不为0,则表明该模板可应用于该分块。最终对所有可行的移动方法按优先级进行排序后,就能确定如何进行操作了。
Current language: Chinese (Simplified)
Leave a Comment
Name (required)
E-mail (required, will not be published)
Website (optional)
Comment
A syntax system which is similar to wiki markup is available, see the guide