微信跳一跳小游戏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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
用Python进行TCP网络编程的教程
Apr 29 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
python日志logging模块使用方法分析
May 23 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
Python实现12306火车票抢票系统
Jul 04 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
python设计tcp数据包协议类的例子
Jul 23 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
Feb 02 Python
什么是Python装饰器?如何定义和使用?
Apr 11 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
phpMyadmin 用户权限中英对照
2010/04/02 PHP
php+mysql实现无限分类实例详解
2015/01/15 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
2014/11/12 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
如何利用python查找电脑文件
2018/04/27 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
外语系毕业生找工作的求职信
2013/11/28 职场文书
毕业生自荐书模版
2014/01/04 职场文书
车辆转让协议书
2014/04/15 职场文书
活动总结怎么写啊
2014/05/07 职场文书
小学老师对学生的评语
2014/12/29 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
会议主持人开场白台词
2015/05/28 职场文书
小学毕业感言100字
2015/07/30 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
每日六道java新手入门面试题,通往自由的道路
2021/06/30 Java/Android
java解析XML详解
2021/07/09 Java/Android