美文网首页大数据,机器学习,人工智能
原来微信《跳一跳》也可以用Python玩~

原来微信《跳一跳》也可以用Python玩~

作者: 咖京学习 | 来源:发表于2019-04-13 23:46 被阅读2次

    临近2018年元旦,除去大家热热闹闹的在朋友圈晒“18”岁靓照,微信更新的 6.6.1 版本突然也开放了小游戏,微信启动页面还重点推荐了小游戏「跳一跳」。

    原来微信《跳一跳》也可以用Python玩~

    跳一跳

    玩家需要「按住」屏幕选定跳跃力度,按住时间越长,小人会跳得越远。而且,每个跳板间的间距并非是固定的。这使得这款游戏成为「看上去简单,精通却很难」。

    原来微信《跳一跳》也可以用Python玩~

    个人排行榜

    而且提供排行榜功能,看着排行榜的排名,你是不是有扎心的“烦躁”感……

    然而这个世界永远不缺少脑洞大开的人,有人竟然用Python写了个脚本,而且获得了3500多分。

    原来微信《跳一跳》也可以用Python玩~

    排行榜

    恰恰刚开始学习Python,基础知识刚学完,本着研究的目的,今天下载看看到底Python是如何造就这份神奇~


    根据作者描述:

    利用的工具:Python 2.7、Adb 驱动、Matplot绘图库。(注:经测试Python3.6也可以正常运行)

    另外从程序中好像是用的 PIL标准图像库,没有用Matplot,不知是不是一个库,回头再研究。

    from PIL import Image, ImageDraw

    运行原理:

    1.将手机点击到《跳一跳》小程序界面;

    2.用Adb 工具获取当前手机截图,并用adb将截图pull上来。

    adb shell screencap -p /sdcard/1.png

    adb pull /sdcard/1.png .

    3.用matplot显示截图;

    4.用鼠标点击起始点和目标位置,计算像素距离;

    5.根据像素距离,计算按压时间;

    6.用Adb工具点击屏幕蓄力一跳;

    adb shell input swipe x y x y time


    下面来根据前面学习的基础知识分析一下代码,main部分有一个while循环,只要你不终止它一直重复操作。

    原来微信《跳一跳》也可以用Python玩~

    Main部分代码

    里面主要调用的自定义函数主要有三个,还有一个time.sleep是为了延迟一下:

    pull_screenshot() #获取图像

    find_piece_and_board(im) #根据图像获取两个点的坐标值

    jump(math.sqrt((board_x - piece_x) ** 2 + (board_y - piece_y) ** 2))#根据两点距离和手机像素计算按压时间并JUMP

    1.pull_screenshot()函数主要是利用adb来获取图像。这里顺便说一下“adb”,adb是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作,借助adb工具,我们可以管理设备,还可以进行如安装软件、系统升级、运行shell命令等等操作。如“pull”就是获取设备中的文件,想更多了解ADB请自行学习~

    原来微信《跳一跳》也可以用Python玩~

    pull_screenshot()

    2.find_piece_and_board(),根据图像获取当前小人位置和落点的坐标系(piece_x, piece_y, board_x, board_y),这个是这个脚本中的核心部分。

    原来微信《跳一跳》也可以用Python玩~

    find_piece_and_board(im)

    1. jump根据设定的“长按的时间系数”计算需要的按压时间,其实这个系数应该根据手机分辨率推出来的,按压时间设定不小于200ms,核心命令是adb的“input swipe”。“input swipe”模拟的是手指在屏幕上的滑动事件,如果两个点坐标不变化就成了长按了。

    代码中四个变量的设置是:“swipe_x1, swipe_y1, swipe_x2, swipe_y2 = 320, 410, 320, 410”,所以是模拟的长按,其实滑动也是可以的,后面给大家分享一个闯关技巧。

    原来微信《跳一跳》也可以用Python玩~

    jump


    实际应用(安卓手机):

    1.首先请将手机的usb调试模式打开,设置》更多设置》开发者选项》USB调试,如果出现运行脚本后小人不跳的情况,请检查是否有打开“USB调试(安全模式)”,记得顺便打开USB模拟点击

    原来微信《跳一跳》也可以用Python玩~

    2.安装ADB驱动和ADB。

    如果你系统是WIn10或Win8可能需要先设置一下“禁用强制驱动程序签名”。

    原来微信《跳一跳》也可以用Python玩~

    禁用驱动程序强制签名

    不然会出现下面的“文件的哈希值不在指定目录中”安装不上adb驱动的问题,网上有教程请自行学习。

    原来微信《跳一跳》也可以用Python玩~

    哈希值驱动不能安装问题

    3.设置adb路径到系统默认路径,或者直接将下载的脚本放置到adb文件件下,为了便于运行我把下载的脚本名改为了“jump.py”。

    原来微信《跳一跳》也可以用Python玩~

    4.进入CMD模式,运行“python jump.py”(需要进入保存脚本的目录)

    原来微信《跳一跳》也可以用Python玩~

    运行时输出结果

    5.晒一下战绩,没敢继续,怕好友拿“砖头”砸我~

    原来微信《跳一跳》也可以用Python玩~

    个人排行榜


    “跳一跳”得分秘籍:

    游戏的目的是娱乐,正如学习的目的是为了获得技能,考试得高分那是顺便为之,既然为了游戏还是本着娱乐的心态用正常手段去玩,下面附上“跳一跳”得分秘籍:

    游戏常规得分方法是跳中靶心的+3分,跳到环靶和靶心之间+2分,跳到环靶之外且在方块之上的+1分,连续跳中靶心的,第1次+2分,第2次+4分,第3次+6分,依次类推,中断的话会重新计算得分。

    里面还暗藏了许多得分点,比如跳到“污水井盖停留2秒左右,加 5 分,“魔方”加 10 分,“士多店”停加 15 分,“音乐播放器”加 30 分,记得这几个都是要停留几秒。

    点击左上角的数字,可以让小人小步向前移动,方便微调位置,选择跟更适合的起跳点。

    原来微信《跳一跳》也可以用Python玩~

    音乐播放器加30分

    最后放大招,其实你模拟滑动可以更好的控制时间,就是从小人落脚点滑到下一个落点靶心位置,相信这些技巧可以让你在朋友圈晒一晒了。

    关注我,带给您更多有趣有意义的信息~

    如果你依然在编程的世界里迷茫,不知道自己的未来规划,对python感兴趣,这里推荐一下我的学习交流圈:684478929,里面都是学习python的,从最基础的python【python,游戏,黑客技术,网络安全,数据挖掘,爬虫】到网络安全的项目实战的学习资料都有整理,送给每一位python小伙伴,希望能帮助你更了解python,学习python


    加个人微信:kj7762

    点击:https://dwz.cn/J3Jikm72

    相关文章

      网友评论

        本文标题:原来微信《跳一跳》也可以用Python玩~

        本文链接:https://www.haomeiwen.com/subject/xxvdwqtx.html