一开始想用按键精灵写,但是安卓模拟器一直跑不起来跳一跳。后来偶然看到 Github 上 wangshub/wechat_jump_game ,刚好Python比较熟悉,就仔细看了下。从Issues里找到了安卓运行的方法。
跑起来之后就研究了一下代码,还是蛮有启发的。但因为之前构思按键精灵有过一个思路,比现有的这个方法简化不少。于是改了一下代码。这里记录一下思路。
- 找到棋子的x,y
- 找到目标平台中心点的x,y
- 计算两点像素距离(橙色)
- 按压时间 = 距离 × 系数
缺点:不同屏幕尺寸需要手动设置不同系数(一大堆的congif)。
- 上一次从另一个方向跳过来且未落在中心
- 可能下次起跳位置需要修正(紫色)
- 不过误差并不大,除非当前格子很大。
- 因为还有模拟器卡顿或者其他细微的影响,所以这点偏移基本忽略,目前没有看到方案适配这个。
- 游戏视角固定
- 偏移基本不处理,所以棋子底部到下一中点的角度基本固定。
- 所以已有思路中的斜边距离,可以用x轴邻边距离替代。
- 由于游戏的ui设计问题,应该是基于宽度的自适应。(后详)
- 从跳跃的像素距离,转化为需要跳跃的x轴距离占ui宽度的比例。
- 按压时间 = 跳跃宽度比 × 跳跃全屏宽度需要的时间
优点:省略了所有y轴的取值,并且自适应所有设备。(实测 4:3/16:9/2:1都成功)
实测 4:3/16:9/2:1 三类屏幕比例,得到如下结果。
核心UI是16:9,然后fit到窗口。这样就能找准按钮的位置了。
- 我用的夜神模拟器。需要在【多开管理】里新建一个安卓5.1才可以运行小游戏。默认的安卓4.4.2运行会闪退。
- 需要额外安装 adb,然后把安装好的
adb.exe
,复制覆盖掉~/nox/bin
下面的nox_adb.exe
和adb.exe
。 - 环境配置添加
~/nox/bin
- 从多开管理中重启模拟器。
- 安装依赖
pip install -r requirements.txt
- 到模拟器打开跳一跳,进入游戏界面。
- 运行脚本
python wechat_jump_auto_slim
就会自动玩了。 - 运行的话只需要这单个文件就可以了
requirements.txt
不算
https://github.com/Erimus-Koo/wechat_jump_game
还搞不懂Github怎么用,不晓得怎么提交回去,就先这样吧。
微信 小程序 跳一跳 python 外挂