用Python来玩微信小游戏跳一跳

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 用Python来玩微信小游戏跳一跳

源码


Python源码下载


工具介绍


- Python或Anaconda

- 手机或模拟器,用于运行游戏

- ADB 驱动,下载地址

- 相关依赖,例如PIL库


实现原理:


精确测量出起始和目标点之间测距离,估计按压的时间来精确跳跃。


思路:


核心:每次落稳之后截图,根据截图算出棋子的坐标和下一个块顶面的中点坐标,根据两个点的距离乘以一个时间系数获得长按的时间


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


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


最后:根据两点的坐标算距离乘以系数来获取长按时间(似乎可以直接用 X 轴距离)


操作步骤


1、将手机点击到《跳一跳》小程序界面;

2、用 ADB 工具获取当前手机截图,并用 ADB 将截图 pull 上来


adb shell screencap -p /sdcard/autojump.png
adb pull /sdcard/autojump.png


3、计算按压时间


手动版:用 Matplotlib 显示截图,用鼠标点击起始点和目标位置,计算像素距离;

自动版:靠棋子的颜色来识别棋子,靠底色和方块的色差来识别棋盘;

4、用 ADB 工具点击屏幕蓄力一跳;


adb shell input swipe x y x y time(ms)


安卓手机操作步骤


安卓手机打开 USB 调试,设置 > 开发者选项 > USB 调试

电脑与手机 USB 线连接,确保执行adb devices可以找到设备 ID

界面转至微信跳一跳游戏,点击开始游戏

运行python wechat_jump_auto.py,如果手机界面显示 USB 授权,请点击确认

请按照你的手机分辨率从./config/文件夹找到相应的配置,拷贝到 *.py 同级目录./config.json(如果屏幕分辨率能成功探测,会直接调用 config 目录的配置,不需要复制)

iOS 手机操作步骤


运行安装好的 WebDriverAgentRunner

将手机点击到《跳一跳》小程序界面

运行脚本。有两种模式可供选择:手动辅助跳 和 自动连续跳

手动辅助跳

命令行运行python3 wechat_jump_iOS_py3.py

依次点击弹出的窗口中的起始位置和目标位置,会自动计算距离后起跳

根据起跳的精准情况更改python3 wechat_jump_iOS_py3.py中的time_coefficient参数,直到获得最佳取值

自动连续跳

拷贝./config/iPhone目录下对应的设备配置文件,重命名并替换到./config.json

命令行运行python3 wechat_jump_auto_iOS.py

会自动计算坐标并连续起跳,根据起跳的精准情况更改./config.json 中的press_coefficient参数,直到获得最佳取值

主代码示例(wechat_jump_auto.py):

开发者GitHub:wangshub


# coding: utf-8
import os
import sys
import subprocess
import shutil
import time
import math
from PIL import Image, ImageDraw
import random
import json
import re
# TODO: 解决定位偏移的问题
# TODO: 看看两个块中心到中轴距离是否相同,如果是的话靠这个来判断一下当前超前还是落后,便于矫正
# TODO: 一些固定值根据截图的具体大小计算
# TODO: 直接用 X 轴距离简化逻辑
相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
12天前
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
113 47
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
9天前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
|
25天前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
143 61
|
2天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
1月前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
70 7
|
3月前
|
数据可视化 前端开发 小程序
5G时代-探索微信小游戏
5G时代-探索微信小游戏
40 2
5G时代-探索微信小游戏
|
3月前
|
缓存 数据可视化 Serverless
微信小游戏 案例一 像素飞机
微信小游戏 案例一 像素飞机
32 2
|
4月前
|
小程序 API 开发工具
使用python 实现微信签到提醒功能
【9月更文挑战第4天】使用python 实现微信签到提醒功能
102 2
|
5月前
|
Python
【Python】Python黄金矿工小游戏开发设计(源码)【独一无二】
【Python】Python黄金矿工小游戏开发设计(源码)【独一无二】
172 1
|
6月前
|
UED Python
python编写小游戏
【7月更文挑战第6天】
64 1

热门文章

最新文章