原文来自Cocos微信公众号「Cocos Engine」
https://mp.weixin.qq.com/s?__biz=MjM5ODAxNTM2NA==&mid=2659646385&idx=1&sn=5dd5aa34f38ecde47bb5b7be851dd2cc&chksm=bda3635a8ad4ea4c41a4d145a6995e25c097ef4ef2a4ae79f73ec9f7166c9f6568622c8c2299#rd
元旦的朋友圈,都在刷小游戏。
有那么好玩么?我手残,玩不过你们,但是我可以用程序员的方式解决问题,嘿嘿嘿……
哈哈哈,不服来打我呀!这是一个基于区块链和大数据的人工智能代练平台,你们等着,我就去写白皮书发 ICO……有意向的风投可以先联系我。
哈哈,开玩笑啦,哪有那么复杂。
我开发外挂的第一个思路是:受到 bilibilli 上一个视频里的硬件方案启发,用乐高 ev3 机器人来做。因为 ev3 有颜色识别传感器嘛。但是具体做下去,发现控制硬件还是太麻烦了,尤其 ev3 的「图形化编程」不让直接写代码,真是超级麻烦,编码效率太低了。
所以第二个思路就是,纯软件解法,用 adb shell screencap 截图后,对图像进行分析,然后用 adb shell input 指令来模拟触摸时间。至于怎么图像识别嘛,这个容易,上卷积啊!没有什么是难得住老司机的。
结果我埋头编码的时候,同事跟我说,别写了,知乎和 github 上出来一大堆了,原理和你的类似,关键就是用 adb。哈哈这个好,省时间,我去 github 上搜索「跳一跳」,好家伙,竟然出来 387 个结果。
我试了几个,发现根本连挨个试的时间都浪费了。star 数量最高的就是最稳的,就是这个仓库,拿好了 https://github.com/wangshub/wechat_jump_game 人家连卷积都不用,直接 PIL 库的几个函数调用就搞定了,多简单。
当然前置工作需要安装:
python。cocos 引擎统一使用 python 2.7
adb。在 Android SDK 里面自带了
有了 python 之后,还需要装配套的 pip ,再用 pip 安装图像处理库 PIL
接着,对于我上面给出的这个开源仓库,需要手动修改的地方:
需要根据自己的屏幕分辨率去修改 config/default.json。
如果运行脚本之后,截图保存目录出错,那么就需要用 adb shell 进去看看自己安卓手机的目录结构,然后修改代码中对应的截图保存未知
对于老版本的 adb,需要用 adb shell input touchscreen swipe 替代 adb shell input swipe
如果你的小人不幸掉下去了,那么就继续调整 default.json 里面的 press_coefficient 参数吧。
最终运行结果是这样的:
(此处应有视频,但是视频审核不过……没办法。各位去看我朋友圈吧)
我拿着这个视频去调戏跳一跳开发团队,对方说我们元旦都在加班做反外挂逻辑呢。唉你们腾讯不是很多人工智能专家么,把背景图片弄复杂一些,很多小方块小圆圈,让边缘检测、卷积都派不上用场,不就搞定了。
所以,你们如果还想用脚本刷分的话,估计也就这一两周了,后面版本一更新,可能只有李飞飞才能写得出外挂了。
好啦,跳一跳至少在更新版本一两周之内,是没啥挑战了。我们还是继续来玩《欢乐坦克大战》吧。坦克没有压力啊,和王者荣耀相比,没段位、不掉星、手残还不会被人骂,多好。
我推荐《欢乐坦克大战》的一个重要原因,当然是因为这款 IO 游戏是用 Cocos Creator 开发的啦!
(林顺快来上阵了。等等,我拿 buff )
欢乐坦克大战的唯一缺点,就是对我这样的王者老司机而言太简单了点儿~ 10 杀 2 死偷塔一波结束战斗,还有谁?
元旦假期结束了,别光顾着玩小游戏了。赶紧立项,用 Cocos Creator 开发出自己的微信小游戏去上线,才是最重要的事情。如果各位用 creator 开发出比《欢乐坦克大作战》更好玩的小游戏,记得告诉我哦!





