微信「跳一跳」智能辅助工具。项目同时提供 Python/PyQt6 版和 C# WPF 版,核心目标是把实时识别、可视化校准、按压参数调节和可分发桌面体验做到尽量稳定、清晰、好用。
- 双版本实现:Python/PyQt6 版便于调试和二次开发,C# WPF 版启动更利落,界面更接近成品桌面应用。
- 实时视觉识别:基于 OpenCV 做棋子识别、背景差分、连通域分析、白点修正和透视几何过滤。
- 特殊平台优化:针对白色平台、杯子、魔方、圆柱、侧面白色装饰、阴影、边缘误判等场景做了多层候选筛选。
- 可视化校准:识别偏了可以直接进入校准模式点击正确中心,校准数据会保存到本地并在后续识别中生效。
- 双按压算法:保留老算法,也提供参考比例算法,可在 UI 中一键切换,并分别显示对应参数。
- 识别日志导出:C# 版内置独立检测日志,方便复现问题;支持导出日志,也支持长按 3 秒清空日志。
- 适合分发:支持 PyInstaller 打包 Python 版,也支持
dotnet publish生成 C# 自带运行时版本。
| 版本 | 入口 | 技术栈 | 适合场景 |
|---|---|---|---|
| Python 版 | main.py / dist/JumpHelper/JumpHelper.exe |
Python, PyQt6, OpenCV, NumPy | 调试、研究算法、快速改 UI 和参数 |
| C# WPF 版 | MagicJump/MagicJump.csproj / MagicJump.exe |
.NET 8, WPF, OpenCvSharp | 日常使用、发给别人直接运行、体验更完整 |
- Windows 10/11
- 微信电脑版或可被桌面截图捕获的「跳一跳」窗口
- Python 版开发运行需要 Python 3.10+
- C# WPF 版开发运行需要 .NET 8 SDK
- 如果使用已经打好的发布包,只需要完整解压对应 zip 后运行 exe
git clone https://github.com/chen0416ccc-cpu/MagicJump.git
cd MagicJump
python -m pip install -r requirements.txt
python main.pygit clone https://github.com/chen0416ccc-cpu/MagicJump.git
cd MagicJump
dotnet run --project MagicJump\MagicJump.csproj- 打开微信「跳一跳」游戏窗口。
- 启动 MagicJump 或 JumpHelper。
- 点击「选择区域」,框选游戏画面区域。
- 先观察预览图上的红色棋子点、蓝色目标点和绿色连线是否合理。
- 如果识别位置偏了,点击「校准」或按
F7,在预览图上点击真实目标中心。 - 使用「单步跳跃」或
F6先测试一跳。 - 确认稳定后点击「开始自动跳跃」或按
F5自动运行。
| 快捷键 | 功能 |
|---|---|
F5 |
开始或停止自动跳跃 |
F6 |
单步跳跃 |
F7 |
进入或退出校准模式 |
Esc |
停止运行或退出校准 |
MagicJump 的目标不是单纯找一块“颜色不一样的区域”,而是把候选目标经过多层约束后再选择:
- 用棋子的紫蓝色特征定位棋子底部中心。
- 通过逐行背景中位数估计背景色,找出前景候选区域。
- 根据棋子左右位置,只在跳跃方向一侧搜索目标。
- 对候选平台做连通域、颜色 flood fill、表面宽度和顶部候选评分。
- 对白色中心点做专门搜索,但不会无条件优先白色,避免把装饰、侧面或白色平台边缘误当目标。
- 使用透视关系过滤离谱候选,例如阴影、平台侧面、下方露出的旧平台。
- 根据场景指纹应用本地校准修正,输出最终目标点。
项目内置两套按压时间算法:
| 算法 | 说明 |
|---|---|
| 老算法 | 按压时间 = 距离 * 系数 + 基础时间,默认系数 2.20 |
| 参考比例算法 | 参考经典跳一跳项目的比例计算方式,按截图宽度做归一化 |
两个算法互相独立,UI 会根据当前算法显示对应参数。你可以先用老算法跑稳定,再切换参考比例算法对比效果。
- 运行参数、游戏区域、校准数据都会保存到本地
data/目录。 data/settings.json、data/calibration.json、data/default_settings.json属于用户本机数据,默认不提交到 Git。- C# WPF 版会把检测过程写入
data/detection_logs/,方便排查某一帧为什么识别错。 - 日志区可以导出识别日志;也可以长按 3 秒清空识别日志,避免测试日志越积越多。
MagicJump/
├─ main.py # Python 版入口
├─ config.py # Python 版配置和数据目录管理
├─ requirements.txt # Python 依赖
├─ JumpHelper.spec # PyInstaller 打包配置
├─ core/ # Python 核心逻辑
│ ├─ detector.py # 棋子和目标识别、校准修正
│ ├─ calculator.py # 按压时间计算
│ ├─ controller.py # 鼠标按压控制
│ └─ screenshot.py # 截图和窗口定位
├─ ui/ # Python PyQt6 UI
│ ├─ main_window.py
│ ├─ control_panel.py
│ ├─ preview_widget.py
│ ├─ region_selector.py
│ └─ styles.py
├─ MagicJump/ # C# WPF 版
│ ├─ MagicJump.csproj
│ ├─ MainWindow.xaml
│ ├─ Core/
│ ├─ Models/
│ ├─ ViewModels/
│ ├─ Controls/
│ └─ Themes/
├─ picture/ # 图标资源
└─ data/ # 本地运行数据,按需自动生成
python -m PyInstaller --noconfirm JumpHelper.spec输出目录:
dist/JumpHelper/
分发时请压缩整个 dist/JumpHelper 目录,不要只发 JumpHelper.exe。
如果希望别人电脑不安装 .NET 也能直接运行,可以发布 self-contained 版本:
dotnet publish MagicJump\MagicJump.csproj `
-c Release `
-r win-x64 `
--self-contained true `
-o publish\MagicJump-win-x64输出目录:
publish/MagicJump-win-x64/
分发时请压缩整个 publish/MagicJump-win-x64 目录,不要只发 MagicJump.exe。
- 调识别算法时优先用 Python 版,改动快,验证方便。
- 做日常使用和发给别人时优先用 C# WPF 版,界面和分发体验更完整。
- 每次遇到识别偏移,先导出识别日志,再结合预览图判断是棋子识别、目标候选、白点修正还是按压系数问题。
- 发布前清理
data/detection_logs/、data/settings.json、data/calibration.json,避免把个人测试数据带出去。
本项目用于计算机视觉、桌面自动化和本地 UI 工程学习。请在你有权操作的环境中使用,使用产生的结果由使用者自行负责。
MIT License