声明:本文所述内容完全出于小编对编程的兴趣,不建议拿来刷分(会没朋友的)。且严格来说,该操作并未修改游戏内部数据,因此只能算是物理外挂~
自从2017年的尾巴,微信更新了6.6.1版本后,一款叫做“跳一跳”的魔性小游戏火了。
这游戏的玩法十分简单:
按住手机屏幕,然后松开,角色就会向前跳跃
按的时间越长,跳的越远
然而,这种需要人在长时间的压力和精神集中的状态下保持稳定状态的游戏,是不适合“暴躁”的小编的。于是,当刷分刷到瓶颈时候,我的内心OS是这样的:
按压屏幕的时间time决定了跳跃的距离dis,所以导致游戏GameOver的原因,主要出在人的感官与处理的误差上:
我们肉眼对距离Dis的估计是存在误差的
我们的大脑通过连续几次跳跃,推算出的Time=f(Dis)这个关系是存在误差的
大脑指导我们的手,按压屏幕Time时间然后放开,也是存在误差的。
所以,我们能不能:
精确获得起跳点和目标点间的距离Dis呢?比如用尺子,或者其他的什么方法
能不能找出Time=f(Dis)这个关系呢?
能不能精确控制按压屏幕的时间Time呢?
经过一番百度之后,小编大概获得了如下信息:安卓手机打开开发者调试模式后,可以在电脑端使用ADB(Android Debug Bridge)通过cmd命令进行控制。
在小编百度期间,发现GitHub上已经有小伙伴放出了python控制手机玩跳一跳的源码了。然而对于小编来说,幼儿园Python的水平根本驾驭不了那玩意,直接拿来用又不符合咱一贯的处事风格。那咋办呢?咱会VB啊,没错,就是那个处于编程语言鄙视链底端,甚至某些人都不把它当编程语言的语言。
VB里使用Shell不难运行如下CMD命令:
’将手机当前屏幕抓图并保存到手机存储根目录
adb shell screencap -p /storage/emulated/0/autojump.png
’将刚才抓的图片保存到电脑
adb pull /storage/emulated/0/autojump.png C:/Users/xxx/autojump.png
然后我们就可以在VB里轻车熟路地把图片载入PictureBox控件,再通过PictureBox的鼠标事件,计算两次点击的距离,然后把距离乘个系数变成时间。然后接着执行ADB命令:
’下图表示的是在距离屏幕左上角水平400,竖直600的位置,按住屏幕567ms
adb shell input swipe 400 600 400 600 567
多试几次,找到一个最佳的系数,我们的工作就基本完成啦!
现在都讲究个有图有真相嘛↓
有小伙伴又说了,你这太麻烦,还得用鼠标一直点。
emmm…如果,你懒到手都不想动,那么接下来你可以研究一下图形分析方面的知识,看看怎么自动获取到两个中心位置吧!像小编这种大学各种数学课各种逃的选手,只能用双循环的笨方法通过图片的像素RGB值进行判断了↓
领取专属 10元无门槛券
私享最新 技术干货