微信跳一跳小游戏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中的代码编码格式转换问题
Jun 10 Python
Python的装饰器模式与面向切面编程详解
Jun 21 Python
Python实现的计数排序算法示例
Nov 29 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
Feb 07 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
pytorch进行上采样的种类实例
Feb 18 Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 Python
Django中的AutoField字段使用
May 18 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
matplotlib图例legend语法及设置的方法
Jul 28 Python
Python可以用来做什么
Nov 23 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中“简单工厂模式”实例代码讲解
2012/09/04 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
php构造函数与析构函数
2016/04/23 PHP
用javascript实现画板的代码
2007/09/05 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
Python开发的HTTP库requests详解
2017/08/29 Python
Python3计算三角形的面积代码
2017/12/18 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
Python netmiko模块的使用
2020/02/14 Python
彪马美国官网:PUMA美国
2017/03/09 全球购物
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
毕业生求职的求职信
2013/12/05 职场文书
如何填写个人简历自我评价
2013/12/10 职场文书
电钳专业个人求职信
2014/01/04 职场文书
银行员工职业规划范文
2014/01/21 职场文书
雷人标语集锦
2014/06/19 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
不同意离婚答辩状
2015/05/22 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书
php将xml转化对象的实例详解
2021/11/17 PHP