微信“跳一跳”外挂制作历程

微信“跳一跳”外挂制作历程

最近微信出了个“跳一跳”小游戏还挺火的,但是我这种手残人士,小手一滑,棋子就不知道飞哪儿去了。那我气啊,排行榜得拉到底才能看到我的名字,手残肯定不是一两天能解决的,那就写个挂呗,让电脑精准到毫秒给我来按屏幕,那岂不是美滋滋。

0.   V1.0版人工不智能外挂

这两天在网上看到过几个“跳一跳”辅助工具,有些人做了机器手指,每次跳之前用尺量一下两块方块之间的距离,然后根据这个距离机器手指按下相应的时间,棋子就成功跳到了下一个方块。

这种方法其实挺有意思的,这种机器人之类的玩意儿应该挺好玩的,但一来我没有设备,买回来用一次压箱底也有点败家,二来我对这东西也不了解,但感觉时间控制上应该没办法做到特别精准,三来,我有adb啊,我要机器人做啥。

Adb全称Android Debug Bridge,做过移动开发的一般都用过。经过这样那样*()@……)¥&%@!*%一系列的操作,在cmd中输入adb,看到图1所示的结果,就说明adb能用了。

图1  adb运行成功

然后拿出你的安卓手机,进入开发者模式(一般在关于手机里找个版本之类的东西猛戳一顿就行),打开USB调试,连上电脑,在cmd中输入adb devices,看到图2所示的结果,那么手机和adb就连上了。

图2  设备连接成功

Adb里的功能命令是相当之多,因为玩“跳一跳”是要长按屏幕然后释放,来实现棋子的跳跃,因此这里我们想做到的是通过adb向手机发送一个能控制长按时间的长按指令,那么在adb shell中输入input看一下,会看到这样的结果:

The sources are:

      keyboard

      mouse

     joystick

     touchnavigation

      touchpad

     trackball

      dpad

      stylus

      gamepad

      touchscreen

The commands anddefault sources are:

      text <string> (Default:touchscreen)

      keyevent [--longpress] <key codenumber or name> ... (Default: keyboard)

      tap <x> <y> (Default:touchscreen)

      swipe <x1> <y1> <x2><y2> [duration(ms)] (Default: touchscreen)

      press (Default: trackball)

      roll <dx> <dy> (Default: trackball)

而这里我们需要的就是swipe <x1> <y1> <x2> <y2> [duration(ms)](Default: touchscreen),通过x和y来控制按的位置,也就是坐标。其实swipe是滑动指令,但是这个指令可以设置duration(ms),精确到毫秒的控制按压时间,所以这里就用这个滑动指令。

Adb能用了,指令也知道了,那就打开“跳一跳”试一下吧。开始游戏后,在adbshell中输入input swipe100 100 100 100 300,意思就是从(100,100)位置滑动到(100,100)位置,耗时300ms,发现棋子果然跳了出去,不过似乎弹跳和我差不多,跳了一个火柴盒就掉下去了。很显然,这里最关键的参数就是长按时长,经过多次实验,按压时长和跳出距离的关系大概是:

T=distance(mm)*23(ms/mm)

这个distance靠尺子量,这里要感谢我学机械制图时候那套尺子我留到今天还没仍,以后给我孙子继续用,毕竟小时候我爷爷就给过我一套这样的尺子。23这个数字应用是因人而异的,每款手机屏幕大小是有差异的,直接在屏幕上用尺子量出的绝对距离和参数的关系肯定也是不同的。一般来说应该在20左右。

用这种方法很难跳到下一块方块的中心点,因为尺子量出来的距离也不怎么准,23这个系数肯定也不精确,但这种方法至少能保证不死,每次有个1分,碰到井盖魔方便利店唱片还能加个分,耐心足够的话排行榜第一唾手可得。

不过这个V1.0版太蠢了,拿出来都要让人笑话,于是乎,V2.0版急需上线,不过到点了,我上传到CSDN之后就要吃晚饭了,下次再写吧。

 

本文根据时下最火小游戏微信跳一跳,编写的物理外挂,实现简单,具有DIY精神的都能迅速上手。废话不多说,先来点视频开开胃。 哈哈哈,是不是很爽很刺激,好了,不吊胃口了,还是整点干货吧。 准备1:手机一部,电脑端下载好投屏软件,苹果的airplay,安卓的忘了,自己找下,嘻嘻嘻。。。。 准备2:搞电子的才有,继电器模块一个,随便什么开发版一块,有串口就行,usb转串口模块一个。 准备3:电脑上装上我提供的“跳一跳物理外挂.exe",这个才是核心,后面我会贴源码,low不low不要紧,关键好用,我花了一天时间学的,代码拙劣,慎看,/呲牙。 准备工作做完了,现在开始动工,先做物理部分。 首先拿出你的继电器模块,然后把继电器给削了(捂嘴笑)哈哈,我也不知道怎么告诉你怎么削,还是给个图吧。 哎吆我去,这图这么大的咧,将就看看。反正就是把继电器的壳子给拿掉。温馨提醒:用刀的时候注意点,手弄破没事,别把继电器线圈削了(幸灾乐祸的笑呵呵) 然后呢,找个导电的,有电容的,弹簧呀,电容笔呀,或者湿海绵呀。。。一切可以让手机触摸屏反应的材料都行,就是要小一点。 反正我是找了个弹簧,还把它焊在了继电器的活动片上。不会的,看图,下面没图,还是上面那张。 硬件部分还差个单片机,这个你们都会的,专业的嘛,随便整个单片机最下系统就行,带个串口,协议我告诉你简单。 帧头32位的最高8位后8位后8位后8位 ‘A’00000000 看到没,接收到串口数据后,把除了'A' 之外的四个8位的数据合并成一个32位的数据,这个合并后的数据,就是ms,是多少就是多少ms。 简单吧,单片机只要接收到这组串口数据,就可以进行操作了,(忘了说了波特率115200 ,8,0,1,我想大家都看得懂,不解释了。) 主程序代码如下: if(收到串口发来的数据) { 将4个字节接收到的数据转化为32位的数据; 继电器置1或者置0(看你电路了,让它按下去就行,模拟按下动作); 延时(xx ms);(这就是那个32的数据) 继电器置1或者置0(看你电路了,让它抬起来就行,模拟抬起动作); } 实在不会的,也没事,我不是还有程序源码的嘛; 好了好了,硬件就到这了,整点软件的。软件c#写的,高手的话,简单,随便你们喷,反正我也不熟,就学了一天,整成这样,自认为还行。 源码,我会贴上去,别急。 操作部分。我是鼠标左键点击确定起点位置,鼠标右键点击确定终点位置。也就是说,你想跳,那就鼠标左键点起点,鼠标右键点终点。根据距离计算时间。软件上,有个系数,用来确定不同电脑,不同分辨率的,自己调试下, 一致就行。截图截图,看图看图。 先打开这个软件,苹果的airplay,然后打开手机,选择airplay镜像。然后将软件全屏。 打开我的那个"跳一跳物理外挂.exe", 选择串口后,就点连接,没啥问题是不会有任何提示的。有问题就报错了。(哈哈哈,仰天长啸中) 下面这个框 3.5,这个就是系数了,要将我的这个软件和投上去的界面重合,这样才行。然后你试试鼠标左键,鼠标右键,看看你的继电器会不会动。(不会动就是你程序有问题,硬件有问题,电脑有问题,反正我的是好的,我不管,自己检查) 还有就是,这个软件是由两个窗体组成的,一个透明的,一个透明有边框的,别问我为什么,因为我不知道如何设置透明鼠标不穿透,你也不知道呀,哈哈哈(鬼畜中),会的私信我,我学一下。所以,如果点击的时候会触发这个软件后面的东西,那么请点击任务栏中,将窗体设置到最前,其实就是获取热点了,其实就是激活窗口啦,笨呢,点不到说明窗口不在激活状态嘛。 好了,不说了, 下面都是图了,你们自己玩吧。 啰嗦一句,把框框对齐哟,不然跳不准呢。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值