-
如何优雅地玩微信跳一跳
自从自己微信跳一跳高分霸榜之后,无数的人问我:“有为你怎么玩的,那么高分?能否把跳一跳秘籍传授我?”
所以今天准备在空间里开一个真正的游戏技术贴。游戏介绍(必须是微信最新版本(2017年12月28日晚更新))这是一个 2.5D 插画风格的益智游戏,玩家可以通过按压屏幕时间的长短来控制这个「小人」跳跃的距离。可能刚开始上手的时候,因为时间距离之间的关系把握不恰当,只能跳出几个就掉到了台子下面。得分规则:跳到下一个台子上默认加一分。如果连续正中台中心得分则是2 4 6 8…… 32 的序列,最高一次得分32.显然,跳跃的距离和我们蓄力的时间正相关。如果我们可以精确估计距离,那么也可以精确估计蓄力的时间(如果找到了距离和时间的函数关系)。开发工具1.Adb驱动(Android studio自带)2.一台Android手机3.Python 3.6(64bit)4.Excel 2016使用指南(小白向)1.没有安装Android studio的电脑,需要自行安装adb驱动。Download Link:http://down.mz6.net/file/2014/...2.连接安卓手机,开启开发者模式。3.非必要操作:打开命令提示符(cmd)直接输入adb devices,在devices list里确定自己的设备已经连接。4.在微信当中打开跳一跳,并且进入游戏界面。5.打开py3.exe 等待电脑显示器上渲染出游戏界面。6.对figure窗口最大化全屏7.点击自己的位置(椭圆底面的中心)再点击所要达到的台子的中心。(若操作失误则重新打开py3.exe)8.等一秒钟,回到7理论上分数可以无限高,但是你玩到几百分后就会索然无味,之后再也不想碰这个游戏。开发过程详解1.用adb命令得到手机截图(1.png),并保存在py3.exe同文件夹下。adb shell screencap -p /sdcard/1.pngadb pull /sdcard/1.png2.用python matplotlib库打开截图,通过点击两点位置得到像素距离。3.通过已经分析得到的距离与蓄力时间的函数,得到蓄力时间(t),利用adb命令赋给手机长按时间命令。adb shell input swipe 1 1 1 1 t4.回到1一些琐碎又昂贵的处理1.为了避免不断输入黑框,使用了os库,在python内部调用命令提示符(cmd)
2.需要确定两点间像素距离,就必须用matplotlib库导入图片,并利用ginput函数得到两点间坐标。
3.时间和距离之间的函数很难得到,需要多组吻合的数据。所以选取了30次正好落到中心的数据组。形式:(距离,蓄力时间)
因为理科生文房四宝之一Matlab 2017b过于臃肿(其实是没钱买license),所以我们用简单又强大的Excel 2016 完成曲线拟合。
所以很顺利地得到函数:T = 1.3364*d + 10.168(d的单位是pixels T的单位是ms)
结语
请善待你的朋友圈,装逼不要太过分,分数太高你会没朋友的。
令人惊讶的是,线性函数的拟合效果极好。Abs(R)极为接近1,说明数据非常明显呈现线性相关。(微信小组你们的小程序怎么就用了个这么敷衍的函数啊,我本来还估计是多项式……)2017/12/30 18:23:41
举报不良信息
🍌JessieShawDonaukinderゞFingヤJonasMaple,荷举海鱼小可爱🐟