Skip to content

chen0416ccc-cpu/MagicJump

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MagicJump

微信「跳一跳」智能辅助工具。项目同时提供 Python/PyQt6 版和 C# WPF 版,核心目标是把实时识别、可视化校准、按压参数调节和可分发桌面体验做到尽量稳定、清晰、好用。

Python PyQt6 .NET OpenCV Platform

项目亮点

  • 双版本实现: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

快速开始

Python 版

git clone https://github.com/chen0416ccc-cpu/MagicJump.git
cd MagicJump
python -m pip install -r requirements.txt
python main.py

C# WPF 版

git clone https://github.com/chen0416ccc-cpu/MagicJump.git
cd MagicJump
dotnet run --project MagicJump\MagicJump.csproj

使用流程

  1. 打开微信「跳一跳」游戏窗口。
  2. 启动 MagicJump 或 JumpHelper。
  3. 点击「选择区域」,框选游戏画面区域。
  4. 先观察预览图上的红色棋子点、蓝色目标点和绿色连线是否合理。
  5. 如果识别位置偏了,点击「校准」或按 F7,在预览图上点击真实目标中心。
  6. 使用「单步跳跃」或 F6 先测试一跳。
  7. 确认稳定后点击「开始自动跳跃」或按 F5 自动运行。

快捷键

快捷键 功能
F5 开始或停止自动跳跃
F6 单步跳跃
F7 进入或退出校准模式
Esc 停止运行或退出校准

识别思路

MagicJump 的目标不是单纯找一块“颜色不一样的区域”,而是把候选目标经过多层约束后再选择:

  1. 用棋子的紫蓝色特征定位棋子底部中心。
  2. 通过逐行背景中位数估计背景色,找出前景候选区域。
  3. 根据棋子左右位置,只在跳跃方向一侧搜索目标。
  4. 对候选平台做连通域、颜色 flood fill、表面宽度和顶部候选评分。
  5. 对白色中心点做专门搜索,但不会无条件优先白色,避免把装饰、侧面或白色平台边缘误当目标。
  6. 使用透视关系过滤离谱候选,例如阴影、平台侧面、下方露出的旧平台。
  7. 根据场景指纹应用本地校准修正,输出最终目标点。

按压算法

项目内置两套按压时间算法:

算法 说明
老算法 按压时间 = 距离 * 系数 + 基础时间,默认系数 2.20
参考比例算法 参考经典跳一跳项目的比例计算方式,按截图宽度做归一化

两个算法互相独立,UI 会根据当前算法显示对应参数。你可以先用老算法跑稳定,再切换参考比例算法对比效果。

校准和日志

  • 运行参数、游戏区域、校准数据都会保存到本地 data/ 目录。
  • data/settings.jsondata/calibration.jsondata/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 版打包

python -m PyInstaller --noconfirm JumpHelper.spec

输出目录:

dist/JumpHelper/

分发时请压缩整个 dist/JumpHelper 目录,不要只发 JumpHelper.exe

C# WPF 版打包

如果希望别人电脑不安装 .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.jsondata/calibration.json,避免把个人测试数据带出去。

免责声明

本项目用于计算机视觉、桌面自动化和本地 UI 工程学习。请在你有权操作的环境中使用,使用产生的结果由使用者自行负责。

License

MIT License

About

微信跳一跳辅助(Python)初步测试10000+无上限,一款为电脑版微信跳一跳独特打造的装逼神器

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors