微信跳一跳小游戏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 相关文章推荐
使用rpclib进行Python网络编程时的注释问题
May 06 Python
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
Python中列表和元组的相关语句和方法讲解
Aug 20 Python
python的schedule定时任务模块二次封装方法
Feb 19 Python
django项目中使用手机号登录的实例代码
Aug 15 Python
PyTorch中Tensor的维度变换实现
Aug 18 Python
python实现计算器功能
Oct 31 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
Python文件时间操作步骤代码详解
Apr 13 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
分享python函数常见关键字
Apr 26 Python
python数字图像处理之图像自动阈值分割示例
Jun 28 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
Apache2 httpd.conf 中文版
2006/11/17 PHP
php文件读取方法实例分析
2015/06/20 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
javascript的内存管理详解
2013/08/07 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
2015/04/16 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
JavaScript剩余操作符Rest Operator详解
2019/07/20 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
幼儿园教师节活动方案
2014/02/02 职场文书
同居协议书范本
2014/04/23 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
践行三严三实心得体会
2014/10/13 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js