以程序员的角度玩微信跳一跳

分析

前些日子微信推出了一款小游戏「跳一跳」,游戏中玩家需要扮演一个「黑色」小人,在不同颜色、形状的跳板方块间进行跳跃。操作也很容易,按压屏幕越久,小人会跳得越远。

显然这游戏对我这样的手残党非常不友好

若干次徘徊在十位数后,决定好好研究这个游戏,用程序员的思路去解决它。

外挂无非两种:内存修改、物理辅助。这里研究后者,也就是识别出跳跃距离后,换算成时间后模拟真实触碰操作。这种方式最保险,而且不容易被后台察觉 XD

观察棋子,不难发现棋子的颜色始终是没有变化的,因此可以根据颜色识别出棋子中最宽的部分,取中心即可

棋盘部分比较难识别,忽略掉背景色后会有阴影等因素的干扰,还有前后两个棋子紧挨的特殊情况。

考虑从上到下做行扫描,提取出所有连续的颜色块,排除掉中心点与棋子过于靠近的情况,这样就避免识别到棋子头部,取最上面且长度大于棋子宽度的切片,就得到目标点横坐标。

对于纵坐标可以只考虑棋盘右侧,这样就不需要和阴影打交道。棋盘只有圆盘、方块两种类型,边缘的锯齿状如下

容易发现规律,方块的中心线位于边缘峰值处,圆盘的中心线在峰值处偏下。可以设定一个计数器,当边缘连续 4-5 次没有增加时停止,将此处确定为纵坐标。

有时候两个方块相邻会出现识别失败,可以通过角度的方式来重新确定纵坐标。

通过以上步骤就可以精准识别坐标点了,接下去需要将坐标距离转成按压时间。

测出几组数据

使用指数模型进行拟合

逻辑出来了,下面就可以写点脚本跑一跑了

PHP脚本:

https://github.com/metowolf/JumpJumpHelper

以及各位V2er用其他语言写的脚本:

python:

https://github.com/wangshub/wechat_jump_game

Golang:

https://github.com/faceair/youjumpijump

NODEJS:

https://github.com/wotermelon/toJump

JavaScript:

https://github.com/hyb1996/WechatJumping.js

Kotlin:

https://github.com/iOSDevLog/JumpJump

Android:

https://github.com/junbaor/wechat-jump-jump

C#:

https://github.com/Charltsing/WeChat-Jump-JumpSharp
打赏作者
如果你很喜欢这篇文章,可以打赏犒劳一下作者,以此激励作者创作更多

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

正在跳转到PayPal...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

😉😐😡😈🙂😯🙁🙄😛😳😮:mrgreen:😆💡😀👿😥😎😕