通过python玩微信“跳一跳”

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 2017年12月28日下午,微信发布了 6.6.1 版本,同时加入“小游戏”的功能,并且推出一款“跳一跳”的小游戏,一时间风靡朋友圈。这篇文章不会告诉你如何去赢得高分,只是通过技术的角度来说明一下如何代码来让游戏自动运行。

2017年12月28日下午,微信发布了 6.6.1 版本,同时加入“小游戏”的功能,并且推出一款“跳一跳”的小游戏,一时间风靡朋友圈。

这篇文章不会告诉你如何去赢得高分,只是通过技术的角度来说明一下如何代码来让游戏自动运行。

我是偶然的机会在公众号里面看到关于这个游戏脚本的文章的,通过python实现,膜拜大神!我感觉很有趣,所以研究了一下代码,收获颇丰。我是搞Android开发的,这里就主要说一下Android版本的微信跳一跳游戏脚本实现并运行的过程吧。

本文用到工具:Mac或者windows电脑,python2/3,adb工具,Android手机(我的手机是MI NOTE LTE),数据线

关于游戏脚本,作者已经在github公布,地址:wechat_jump_game

首先,我们来讲一下原理

脚本原理

  1. 用 ADB 工具获取当前手机页面截图,并用adb将截图上传

    打开微信跳一跳游戏页面,通过命令获取截图并上传:

     adb shell screencap -p /sdcard/autojump.png
     adb pull /sdcard/autojump.png
    
  2. 识别棋子,目标点和背景的位置,计算目标的距离,并且计算按下的时间

    识别棋子:靠棋子的颜色来识别位置,通过截图发现最下面一行大概是一条直线,就从上往下一行一行遍历,比较颜色(颜色用了一个区间来比较)找到最下面的那一行的所有点,然后求个中点,求好之后再让 Y 轴坐标减小棋子底盘的一半高度从而得到中心点的坐标

    识别棋盘:靠底色和方块的色差来做,从分数之下的位置开始,一行一行扫描,由于圆形的块最顶上是一条线,方形的上面大概是一个点,所以就用类似识别棋子的做法多识别了几个点求中点,这时候得到了块中点的 X 轴坐标,这时候假设现在棋子在当前块的中心,根据一个通过截图获取的固定的角度来推出中点的 Y 坐标


    img_ad5de6f2d26ab1034458f3121f6329fb.png
    wechat_jump1.png
  1. 用adb工具模拟屏幕点击事件

    'adb shell input swipe {x1} {y1} {x2} {y2} {duration}'
    

如何使用

  1. 安装python,安装adb工具,做android开发的Android SDK中都带有adb,只需要配好环境变量即可。

  2. Android手机打开USB调试,设置>开发者选项>USB 调试,同时有些手机需要同时打开“允许模拟点击”,通过adb devices可以查看当前设备,判断是否连接成功

  3. 安装pillow,执行如下命令即可:

    sudo pip install Pillow
    
  1. 界面转至微信跳一跳游戏,点击开始游戏
  2. 运行python wechat_jump_auto.py,如果手机界面显示 USB 授权,请点击确认
  3. 请按照你的手机分辨率从./config/文件夹找到相应的配置,拷贝到 *.py 同级目录./config.json(如果屏幕分辨率能成功探测,会直接调用 config 目录的配置,不需要复制)

最后说一下

这只是游戏,何必认真呢!通过技术看到本质才是软件工程师应该做的。

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
2月前
|
小程序 API 开发工具
使用python 实现微信签到提醒功能
【9月更文挑战第4天】使用python 实现微信签到提醒功能
71 2
|
6月前
|
数据采集 测试技术 API
python爬虫之app爬取-微信朋友圈
搭建appium环境,appium基本使用,API操作等等
272 0
|
5月前
|
Python
用Python实现QQ/微信消息轰炸
用Python实现QQ/微信消息轰炸
|
5月前
|
Python 数据格式
使用Python批量处理微信榜单数据
使用Python批量处理微信榜单数据
|
6月前
|
人工智能 算法 API
【Python+微信】【企业微信开发入坑指北】0. 创建自建应用并接入自己的服务
【Python+微信】【企业微信开发入坑指北】0. 创建自建应用并接入自己的服务
92 0
【Python+微信】【企业微信开发入坑指北】0. 创建自建应用并接入自己的服务
|
6月前
|
开发工具 Python
90行python代码让微信开屏地球转起来,太酷了!
90行python代码让微信开屏地球转起来,太酷了!
|
6月前
|
数据采集 存储 人工智能
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
149 0
|
6月前
|
人工智能 机器人 API
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
290 0
|
6月前
|
缓存 人工智能 API
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
238 0
|
6月前
|
XML 人工智能 数据安全/隐私保护
【Python+微信】【企业微信开发入坑指北】1. 数据链路打通:接收用户消息处理并回复
【Python+微信】【企业微信开发入坑指北】1. 数据链路打通:接收用户消息处理并回复
100 0

热门文章

最新文章

下一篇
无影云桌面