微信跳一跳小游戏python脚本


Posted in Python onJanuary 05, 2018

Python编写微信小游戏“跳一跳”的运行脚本,分享给大家。

更新了微信后发现了一款小游戏跳一跳,但是玩了一下午最高才达到200,每次差点破纪录后总是手抖就挂掉了,气的想要砸手机。闲来无事刷微博的时候正好看到有人分析如何编写脚本自动运行游戏破了3000多分,细看后觉得原理并不复杂,就索性花了一个晚上,参考大神的实现方法,在他的基础上删减了一些代码,也用Python写了个脚本。接下来进行原理和代码分析。

微信跳一跳小游戏python脚本

图1.跳一跳启动界面

原理

配置adb环境变量,在我的电脑?》属性?》高级系统设置?》环境变量?》Path上添加adb.exe所在的路径。

打开手机的usb调试模式,并连接电脑,打开跳一跳,然后通过adb工具获取当前手机截图,具体指令如下所示:

adb shell screencap -p /sdcard/1.png
adb pull /sdcard/1.png
在程序中的具体代码实现如下所示:

def screenshot():
 cmd = 'adb shell screencap -p /sdcard/1.png'
 os.system(cmd)
 cmd = 'adb pull /sdcard/1.png'
 os.system(cmd)

查找棋子的位置,通过颜色来识别棋子,通过将棋子底盘所在行的所有点的x轴坐标相加,然后取平均值获得X轴坐标,将Y轴坐标取最低点减去棋子底盘高度的一半。具体代码实现如下:

#开始查找棋子的坐标,从start_y开始据目测棋子不会位于屏幕底部1/3处
for i in range(start_y, int(height * 2 / 3)):
 for j in range(border_x, width - border_x): #删除周围空白部分,加快程序运行速度
 next_point = im[j,i]
 # 根据棋子的颜色判断,求所有点的和然后求平均值
 if (50 < next_point[0] < 60) and (53 <next_point[1] < 63) and (95 < next_point[2] < 110):
 x1_temp += j #点求和
 x1_num += 1 #点的个数
 y1_max = max(i, y1_max)

if not all((x1_temp,x1_num)):
 return 0,0,0,0
x1 = x1_temp / x1_num
y1 = y1_max - piece_height/2 # 棋子Y轴坐标上移到底盘高度的一半

查找下一个棋盘的位置,一般可以通过两种方法实现。第一种是通过鼠标点击下一个棋盘的位置,具体参考编程美丽写的博客。

第二种是本文使用的,从上往下一行一行扫描,找到块中点的X轴坐标,然后通过截图中两个具体的棋盘获取的固定的角度,即正切值来推出中点的 Y坐标。 具体代码如下:

#查找下一个棋盘的位置
for i in range(start_y, height * 2 / 3):
 start_point = im[0, i]
 if x2 or y2:
 break
 x2_temp = 0
 x2_num = 0
 for j in range(width):
 next_point = im[j,i]

 if abs(j - x1) < body_width:
 continue

 # 棋盘为圆
 if abs(next_point[0] - start_point[0]) + abs(next_point[1] - start_point[1]) + abs(next_point[2] - start_point[2]) > 10:
 x2_temp += j
 x2_num += 1
 if x2_temp:
 x2 = x2_temp / x2_num
# 按实际的角度通过tan值来算计算下一个棋盘的中心点的Y轴坐标
y2 = y1 - abs(x2 - x1) * abs(sample_y1 - sample_y2) / abs(sample_x1 - sample_x2)

if not all((x2, y2)):
 return 0, 0, 0, 0

根据棋子的位置跟下一个棋盘的位置求得两点的具体,推算出长按时间。具体代码如下:

#跳到下一个棋盘
def jump(distance):
 press_time = distance * press
 press_time = max(press_time, 200) # 设置最小的按压时间位200ms
 press_time = int(press_time)
 cmd = 'adb shell input swipe {} {} {} {} {}'.format(swipe_x1, swipe_y1, swipe_x2, swipe_y2, press_time)
 print(cmd)
 os.system(cmd)

结果展示

通过运行脚本,能够轻松上分到400+,由于时间原因并没有继续测试,下图为测试时截的动态gif,以及控制台窗口运行结果。

微信跳一跳小游戏python脚本微信跳一跳小游戏python脚本 

图2.真机运行

微信跳一跳小游戏python脚本 

图3.控制台输出信息

下载链接:跳一跳python脚本

更多内容大家可以参考专题《微信跳一跳》进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过索引遍历列表的方法
May 04 Python
Python切换pip安装源的方法详解
Nov 18 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
在pandas中一次性删除dataframe的多个列方法
Apr 10 Python
python dataframe 输出结果整行显示的方法
Jun 14 Python
python提取包含关键字的整行数据方法
Dec 11 Python
python中实现控制小数点位数的方法
Jan 24 Python
Python3使用Matplotlib 绘制精美的数学函数图形
Apr 11 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
如何在 Django 模板中输出 &quot;{{&quot;
Jan 24 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
python数据分析之单因素分析线性拟合及地理编码
Jun 25 Python
Python通过OpenCV的findContours获取轮廓并切割实例
Jan 05 #Python
Python+selenium实现截图图片并保存截取的图片
Jan 05 #Python
微信跳一跳辅助python代码实现
Jan 05 #Python
使用python为mysql实现restful接口
Jan 05 #Python
微信跳一跳python代码实现
Jan 05 #Python
python+opencv轮廓检测代码解析
Jan 05 #Python
python selenium UI自动化解决验证码的4种方法
Jan 05 #Python
You might like
php实现用户登陆简单实例
2017/04/04 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
原生js轮播特效
2017/05/18 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
浅谈python对象数据的读写权限
2016/09/12 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
python八皇后问题的解决方法
2018/09/27 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
python顺序执行多个py文件的方法
2019/06/29 Python
python多任务之协程的使用详解
2019/08/26 Python
python绘图模块之利用turtle画图
2021/02/12 Python
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
计算机毕业大学生推荐信
2013/12/01 职场文书
大学生的网络创业计划书
2013/12/26 职场文书
上级检查欢迎词
2014/01/18 职场文书
九年级数学教学反思
2014/02/02 职场文书
办理信用卡工作证明
2014/09/30 职场文书
单位婚育证明范本
2014/11/21 职场文书
社会实践活动报告
2015/02/05 职场文书
培训讲师开场白
2015/06/01 职场文书
小学数学国培研修日志
2015/11/13 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python