关于Python玩“跳一跳” iOS+Win 硬件实现的介绍?

作者&投稿:汉股 (若有异议请与网页底部的电邮联系)
用python玩跳一跳跳不动,没反应,怎么办?~

手机打开usb调试;电脑安装好adb驱动;最好使用win10和mac;其他系统问题多。

由于手机所支持的网络是由硬件所确定的,无法通过破解软件或者升级软件系统让手机支持其他运营商的网络的。

原项目地址:wangshub/wechat_jump_game

教你用Python来玩微信跳一跳

本项目源码:yangyiLTS/wechat_jump_game_iOS

目前已有的iOS跳一跳辅助需要macOS环境下的WebDriverAgentRunner。而现在介绍的方法在Windows环境下物理实现,不需要macOS也不需要越狱。

先上效果

运行环境&工具

  • Python 3.6 in Windows

  • Python Pillow库

  • 局域网环境

  • iToools Airplayer

  • 树莓派或arduino (本文使用树莓派)

  • SG90 舵机

  • 杜邦线、纸板

  • 一小块海绵

  • 橙子或其它多汁水果(可选)

  • 基本思路使用iOS自带Airplay服务将游戏画面投影到电脑上。使用Pillow库截取电脑屏幕,获得游戏画面。分析图片,计算出跳跃距离,乘以时间系数获得按压时间。将按压时间发送至树莓派,树莓派控制舵机点击手机屏幕。原理&步骤

    舵机& 控制器部分

  • 树莓派(OS:Raspbian Jessie)连接上局域网,下载servo_control.py到树莓派。拿一根杜邦线粘在舵机的摆臂上,并且固定好舵机在纸板上,如图:

  • 取一小块海绵,约10mm*10mm*5mm,不必太精确。海绵中间挖一个小洞。大概是这样:

  • 海绵上滴水浸透,放在手机屏幕上“再来一次”的位置。杜邦线的另一头插进橙子。(触发电容屏需要在屏幕上形成一个电场,我尝试过连接干电池负极的方案,但是效果不理想,最后不得已拿了室友的一个橙子。当然,一直捏着或者含着导线也是可以的。)

  • 舵机连接上树莓派,电源使用5v(Pin #04,Pin #06),舵机控制线接在GPIO18(Pin #12)。

  • 需要根据实际安装位置调整舵机高点和低点位置(范围: 2.5~12.5)

  • servo_down = 3.8 servo_up = 5

  • 最终效果

  • Windows 部分

  • 下载Airplayer(免安装,暂无捆绑)

  • 配置Airplayer,画质什么的统统调到最高。启动iPhone上的Airplay,然后可以在电脑上看到iPhone画面,游戏运行时需要Airplayer全屏显示。

  • 安装Pillow库,本文使用Pillow库的ImageGrab截屏,截屏代码:

  • im = ImageGrab.grab((654, 0, 1264, 1080)) im.save('a.png', 'png')

  • 下载wechat_jump_auto_iOS_Win.py,我的显示器分辨率是1920*1080,手机是iPhone7。如果使用不同的设备需要更改时间系数等参数。

  • 由于Airplay传输画面时会压缩,获取的游戏画面会有颜色偏差。我修改了原算法的一些参数,增大了颜色上的宽容度,在测试中已经达到一个比较好的准确率。

  • wechat_jump_auto_iOS_Win.py 计算出跳跃距离后,会调用socket库把跳跃时间发送到树莓派上,其中ip地址需要修改为实际树莓派的ip地址。

  • ip_addr = 'rasp_ip'

    运行打开游戏画面,Airplayer窗口全屏树莓派上运行servo_control.py ,监听9999端口,等待Win的计算结果Windows运行wechat_jump_auto_iOS_Win.py海绵放在“再来一次”的位置可以自动重新开始,然后就会一直自动刷分问题&其它

  • 由于是物理点击屏幕,会产生一定的操作误差。操作误差由时间常数误差、舵机运动时间、杜邦线触点插进海绵的深度等等因素引起。而当前使用的算法在一种情况下会出现误差叠加的问题。

  • Z形路径误差累积过程

  • 舵机的摆动角度和时间系数没有绝对的数值,需要慢慢尝试,当前使用的时间系数是2.43。

  • 可以使用arduino + pyfirmata组合控制舵机,成本比较低,不需要网络传输计算结果。因为我的arduino前些天送给了女票,所以还没有使用arduino的方案。

  • 这个游戏在跳了200+次之后方块会变的非常小(如题图),已经不是普通人类所能做到的。研究了外挂之后才知道手玩高分有多难,大家还是不要刷分了,会没朋友的。




python能做什么?
python可以做:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开发;5、游戏开发;6、桌面应用开发。python是一种动态的、面向对象的脚本语言,有着简单易学、速度快、易于维护等特点。python语言的特点 1、简单易学 2、速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是...

python能干什么?
2、Linux运维:通过shell脚本去实现自动化运维,但是编程能力较弱,可以使用功能的库很少,而Python作为胶水语言,可以很方便的与其他想结合,对各类工具进行二次开发,形成一套自己的运维管理系统。3、游戏开发:在游戏开发方面可能Python无法匹敌C++,但是由于Python脚本化的优点,类似于游戏剧本、游戏玩法逻辑...

你都用Python 来做什么?
例如,通过 mod_wsgi 模块,Apache 可以运行用 Python 编写的 Web 程序。Python 定义了 WSGI 标准应用接口来协调 HTTP 服务器与基于 Python 的 Web 程序之间的通信。举个最直观的例子,全球最大的搜索引擎 Google,在其网络搜索系统中就广泛使用 Python 语言。另外,我们经常访问的集电影、读书、音乐于...

为什么Python编程玩起来呢?
”Python几乎万能适配各种工程场景,如Web开发、数据分析、AI、网络开发、系统开发、并行计算、科学计算等、网络爬虫、机器学习等。最后,需要说明的是,使用什么编程语言主要还是取决于想做什么样的事情。对于一名新手而言,如果要做的事情刚好也是需要Python语言,那么选择它或许是不错的选择。

怎么用python编写好玩的程序
high.")tries = tries + 1 if guess == number:easygui.msgbox("Ha-ha, you're so clever! You got my secret! ")else:easygui.msgbox("No more guesses! Better luck next time!")easygui.msgbox(secret, "secret")注:此代码是Python2的,我试过Python3运行不了。另外,需要easygui。

python的主要用途是什么?
Python有很多用途,Python主要有以下主要应用:Web开发、数据科学、自动化运维,让运维工作变得简单、快速、准确等,若想学习Python,推荐选择达内教育,python教程,为零基础量身打造的python课程,从入门到精通,轻松入门,利用自己的碎片时间学习python。达内教育该机构是引领行业的职业教育公司,致力于面向IT...

求个Python小游戏
浅浅的笑着:“我会带着你的孩子,顚节进入 Python程序开发之简单小程序实例 (11)小 游戏 -跳动的小球 一、项目功能 用户控制挡板来阻挡跳动的小球。 二、项目分析 根据项目功能自定义两个类,一个用于控制小球在窗体中的运动,一个用于接收用户按下左右键时,挡板在窗体中的运动。

好玩的python代码
将文件批量压缩,使用zipfile库。一幅厚颜无耻的漫画。以下代码可以将文件批量压缩:importos;importzipfile;fromrandomimportrandrange;defzip_dir(path,zip_handler):forroot,dirs,filesinos.walk(path):forfileinfiles:zip_handler.write(os.path.join(root,file));if__name__=='__main__':to...

用python 3.6 弄个游戏, 两个玩家互相从1到9选数字,直到有个人选的数字...
这里只是给出一个简单的例子,可能写的比较繁琐,但是基本功能上实现了。这里没有对玩家输入的数据进行验证,比如输入字符或者1到9之外的数据。另外, 如果可以,可以尝试把各个模块独立出来,比如将验证用户输入独立成一个函数,如果验证失败,则让其再次输入,验证成功,则继续下一步,等等。sum15.py...

python做游戏好用吗
相关推荐:《Python入门教程》3、这里我们测试几个小示例,非常简单,类似于运行普通Python脚本一样,直接Python+脚本名运行就行:第一个示例—alien.py,类似于打飞机的小游戏,可以左右移动,发射子弹:效果如下,玩起来还不错:第二个示例—liquid.py,类似于滚动的波纹一样,可以来回滚动:效果如下,...

商都县15811571982: 如何在Python中使用break跳出多层循环 -
滕素美林: break只能跳出一层循环,你可以加标志量来实现跳出多层的效果 break2 = False while (True): // 省略 while (True): // 省略 if xxx: break2 = True break if (break2): break

商都县15811571982: Python计算1到100的和,跳过30到40之间的数
滕素美林: '''Python计算1到100的和,跳过30到40之间的数''' n=0 for i in range(100): i=i+1 if i<30 or i>40: n=n+i print(i,n)

商都县15811571982: 是一个关于Python的问题,设计一个猜数游戏 -
滕素美林: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44# coding=utf8 importrandom MAXCOUNT =10defrun(num1, num2, count):ifnum1 ==num2:print"恭喜你!猜中了!...

商都县15811571982: python如何实现跳过语句块 -
滕素美林: 你这个例子有问题,a定义了两次,前面的a=1将会失效.加一个if判断一下即可 a=1 def b():print "1"print "2"if a!=1:print "3"print "4"

商都县15811571982: Python可以做微信小程序吗? -
滕素美林: 1:Python下载 地址:https://www.python.org/downloads/ 进入Python官方网站,将Python下载下来.在官网点击Download,选择Windows,进入下载页面,根据自己的系统下载对应的Python安装程序,32位的下载X86,64位的下载X86-64.如图...

商都县15811571982: python中range(1,1,1)为什么出来的是【 】 -
滕素美林: range([start,] stop[, step])range(1,5)就是从1到5但不包括5,输出 [1,2,3,4]range(1,5,2)是每一跳为2,输出[1,3]range(1,1)就是从1到1但不包括1,所以输出是[]range(1,1,1...

商都县15811571982: python 标记与跳转 -
滕素美林: 应该是没有,结构化语言中不推荐使用goto这样的语句. Python是通过if、while、for、break这样的语句实现跳转的

商都县15811571982: python如何检测输入没有就跳过 -
滕素美林: 使用try...except...语句,类似于if...else...,可以跳过异常继续执行程序,这是python的优势 用法如下:try: # 可能会出现异常的一段代码 command_1 # 如果command_1出现异常,则不执行command_1以及之后的语句 command_2 # command_1如果正常,则会执行 except: # try中任意一行语句出现异常,直接跳转至except,程序继续运行 command_3 command_4

商都县15811571982: Python 独立跳棋问题的算法思路是什么? -
滕素美林: 这么好玩的算法.为什么不自己先试试呢.你的问题里没有描述规则,所以我猜想,它应该是按跳棋的规则去跳,然后达到另外一个规则标准就会消除.正常的做法,比较费时的做法是尝试每一种可能路径,通常是有深度的.比如尝试10步,或者是100步.然后评估结果.不过可以通过自己的经验,让路径的选择变得简单. 减少规则推演的次数与深度. 这些都是最简单的逻辑.不过运畴学,还有一个什么什么科学是专门用来做这种棋路推演的. 你可以找教材书看一下.或者是最简单的办法,找师兄师姐的论文看看.如果是我自己做这种题目,我会采用“双向”推演,加上排除法,还有透视逻辑做.另外为了提高效率,我会事先生成一个所有棋 路的最小生成树.这样可以减化“搬”动棋子的时间.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网