微信小程序跳一跳辅助程序(手动版)
最近,微信官方推出了demo小程序游戏《跳一跳》,这个游戏操作简单,容易上手,却又不容易获得高分,受到很多人的喜爱(emm...这游戏有毒)。自己也尝试了玩了几次,作为一个手残+脑残的资深玩家,对于这种游戏的分数简直低的可怕...既然自己这么菜,就找些工具辅助一下吧,于是,就有了做一个辅助外挂的尝试。
本人玩这个游戏的时候比较晚,所以先去度娘上查了一下现有的方法,果然,搜索出的结果还是很多的。常见的方法有基于python和adb,adb是谷歌为android开发者提供一个开发工具,可以在命令行下操作,python中导入adb包库即可。
开发工具
matlab,adb工具
实验原理
跳一跳是根据棋子和目标块之间距离的不同,需要在屏幕上按压相应的时间来使棋子调到目标块,同时越接近中心点,分数越高,连续调到中心点,木有越来越多的分数加成。adb工具可以通过发送指令来模拟人按压屏幕的操作,所谓我们只需要通过adb工具向手机发送一个按压某一段时间的指令。那么如何确定按压时间呢?在玩过几次之后可以发现,按压时间和棋子到目标点之间的距离是一个线性函数,所以只需算出棋子到目标点间的距离,再乘以一个系数,就是棋子的按压时间。为了计算距离,我们首先通过手机截图,将截图传至电脑上,之后可以找出棋子下方中心点和目标点的坐标,采用欧拉距离公式即可计算出两点间的距离。
手动版操作流程
1. 安装adb工具并打开手机开发者模式和usb调试
https://www.52pojie.cn/forum.php?mod=viewthread&tid=682631这里提供了一个制作的简单思路(尊重原创成果),同时里面也提供了adb工具的下载链接,窝把它贴在下面 https://www.52pojie.cn/thread-682011-1-1.html
至于手机的开发者模式,依次进入手机中的 设置-->关于手机,可以看到版本号,连续点击版本号n次,就可以打开开发者选项
2. 打开cmd,在命名行下启动jump.bat等截图成功之后,进入步骤3
3. 选取起始点和目标点
在matlab中运行jump.m,会在画图工具中打开游戏截图,此时在图片上选取起始点和目标点,选定后获取到两个点的坐标,即可计算出距离及按压时间.
4. 向手机发送按压指令
回到命令行界面,按回车键启动棋子跳跃(原理是通过adb指令将计算出的按压时间发送到手机上 具体指令 adb shell input swipe 100 100 200 200 时间),等棋子跳完后按回车,回步骤2,进行下一轮截图。
程序下载链接
说明
本人对这个测试的时候,成功率很高,接近100%命中目标中心点,之后和同学一起做了个自动版的,本人比较菜,自动版最高目前1200+,窝在南大的室友用python来写的已经2700+,之后也会贴出自动版的程序,自动版程序用的是简单的图像识别方法,找出图像中固定的两个点,欢迎有新想法和想尝试的同学一起交流(很好奇用机器学习方法到底会是什么效果)。