这个程序是半自动化的,大致的工作原理和过程如下:
使用安卓模拟器运行微信跳一跳;
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)有点麻烦
领取专属 10元无门槛券
私享最新 技术干货