微信跳一跳有哪些技术支持?python100行如何做到其他语言1000行代码量?

这个程序是半自动化的,大致的工作原理和过程如下:

使用安卓模拟器运行微信跳一跳;

Python脚本屏幕区域截图,获取棋子的中心区域位置图像,定义为目标图像

将目标图像等比例拓展放大(屏幕越大,放大比例则越大,精度计算便越高越精确)

为处理后的目标图像绘制GRID,作为参照系便于手动选点。鼠标与此同时移动,绘制十字架的目的就是进一步便于选点。

游戏玩家处于放大后的目标图像区域,鼠标分别选取棋子起跳的开始点(起点)和结束点位置(终点)。在所处位置绘制黄色小圆圈,利于分析观察。

计算后可以得到的起点和终点的距离,接着乘以相应的时间系数就得到棋子蓄力时间t,最后经脚本发安卓模拟器位置到鼠标press release事件,

press和release间隔的时间就是蓄力时间t。

Python代码100行,大家可以研究研究,你会发现很简单的,代码前几行的内容是参数配置,简单介绍几个:

BBOX_TOP/LEFT/RIGHT/BOTTOM:指向跳一跳,相当于电脑屏幕的坐标位置,这个不需要很精确,试多几次就清楚了

IMG_RATIO:该参数是解开这个游戏的最大因素,可以将游戏放大并提高精度。此参数越大就越好,大小取决你的电脑屏幕分辨率

TIME_COE:这个是几何距离到实际蓄力时间的系数,跟IMG_RATIO相关,也是经验值,多试几次稍微调整下就好。

具体运行起来的操作如下,'j'键, 每个回合按三次(具体看代码)

第一次'j',可以获取目标图像区域然后放大,绘制GRID

第二次'j',并且鼠标移到放大后图像的棋子位置(最好是底部)。这时程序指向起点的位置

第三次'j',并且鼠标移到放大后图像的目标位置(有小白点最好放在小白点上),这是程序指向终点位置, 然后就可以计算出起点和终点几何距离,接着转换成蓄力时间,最后通过PyMouse去控制鼠标点击真正的跳一跳游戏区域。、

代码设计到pythin tkinter和PyMouse,并不难。

就是Python3依照PyMouse(PyUserInput)有点麻烦

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180116A0FPTJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券