首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

利用计算机玩Android版“天天连萌”刷高分(二)——图像识别

2013-10-28 
利用电脑玩Android版“天天连萌”刷高分(二)——图像识别上一篇只是提到了在PC端利用android sdk里面的工具进

利用电脑玩Android版“天天连萌”刷高分(二)——图像识别
上一篇只是提到了在PC端利用android sdk里面的工具进行截图,接下来这一篇将补充一点关于上一篇的内容,然后介绍一下程序的整个结构,以及如何进行《天天连萌》里面的图像识别和消除的搜索算法。

一、补充上篇的内容
首先补充一下上一篇忘了提及的内容。
在使用chimpchat时,需要添加几个jar包。这方面网上的资料很少,不过功夫不负有心人,嘿嘿。
需要添加的jar包如下:
chimpchat.jarcommon.jarddmlib.jarguava-13.0.1.jar
以上jar包都可以在android sdk里面的tools/lib目录中找到。

二、程序的设计
在这个程序里面我主要写了4个java文件:
Main.java 只有一个main方法,程序的入口。Robot.java,程序的核心部分,进行游戏截图、图像转换为数组,搜索消除等。里面包含一个LianlianKan的内部类,它是用于搜索可以消除的方块的工具类。Point.java,表示在数组中的坐标位置的对象。ImageHash.java,图像识别的算法类,采用汉明距离算法进行图片相似检测。

三、图像识别及转换。
首先先截一张游戏界面的图。游戏里的方块是分布在中心的一个10*5(方块大小)的区域中的。所以先截下图,通过工具取得它的4个边的边距。以我的手机为例,它是800*480的分辨率的,截的图是竖屏的,左边距为48,右边距为72,上边距及下边距为115。每个游戏方块为57*72。如下图所示:

所以在Robot.java需要定义以上相关常量,代码如下:


上面定义的常量当中还有CORNER_WIDTH及CORNER_HEIGHT,这是因为有时有些方块会有道具标示,或者是是“*2”的分数提示,所以截取小图进行图像识别的时候还要避开这一点。然后上面提到的数组行列数,这里的数组不是取得的图像的数组。而是为了便于比较计算,将每个图像对应一个int数字,bomb或为空时为0。它的行及列分别为12和7,而不是10和5,是因为考虑到连连看的规则而加上的外围边界。如下图所示:

然后还要定义两个成员变量,一个表示取得的方块矩阵,一个表示对应的数字矩阵,代码如下:
 

热点排行