# Pingpang 乒乓球对战游戏 — Godot 4.6 + C++ GDExtension ## 项目结构 ``` pingpang/ ├── CMakeLists.txt # CMake 构建配置 ├── build-pingpang.bat # Windows 一键编译脚本 ├── godot-cpp/ # Godot C++ 绑定(git submodule, 4.5 分支) ├── src/ # C++ 源码 │ ├── register_types.cpp/h # GDExtension 入口 + 类注册 │ ├── pingpong_ball.cpp/h # 球(移动、碰撞、得分检测) │ ├── pingpong_paddle.cpp/h # 球拍(玩家输入 / AI) │ └── pingpong_game.cpp/h # 游戏管理(计分、状态) ├── main/ # Godot 项目目录 │ ├── project.godot # Godot 项目配置 │ ├── pingpang.gdextension # GDExtension 加载配置 │ ├── scenes/ │ │ └── main.tscn # 主场景 │ ├── bin/ # 编译产物(gitignore) │ │ └── pingpang.dll │ └── .godot/ # Godot 编辑器数据(gitignore) └── bin/ # 历史遗留(即将清理) ``` ## 开发环境 | 工具 | 版本/路径 | |---|---| | Godot 编辑器 | 4.6 (`F:/PCL/MyDownload/Godot_v4.6-stable_win64.exe`) | | CMake | VS 2026 自带 | | Visual Studio | 2026 (`D:/Visual Studio/`) | | godot-cpp | 4.5 分支 | ## 编译 & 运行 ### 编译 C++ 扩展 ```bash # Windows: 双击运行 build-pingpang.bat # 或手动 cmake -S . -B build -G "Visual Studio 18 2026" -A x64 cmake --build build --config Release ``` 编译产物 `pingpang.dll` 会自动输出到 `main/bin/`。 ### 打开 Godot 项目 1. 启动 Godot 4.6 编辑器 2. 导入项目 → 选择 `main/` 目录 3. 打开后直接按 F5 运行 ## 核心类说明 ### PingPongBall (CharacterBody2D) - `speed: float` — 球速(默认 400) - `reset()` — 重置到屏幕中央,随机方向发射 - `scored(which: int)` 信号 — 0=左边得分, 1=右边得分 ### PingPongPaddle (CharacterBody2D) - `speed: float` — 移动速度(默认 350) - `is_player: bool` — true=玩家控制, false=AI - `ball_path: NodePath` — AI 模式下追踪的球节点 ### PingPongGame (Node2D) - `left_score: int` / `right_score: int` — 当前比分 - `max_score: int` — 获胜分数(默认 5) - `game_over(winner: int)` 信号 — 0=左边赢, 1=右边赢 ## 协作指南 1. **添加新的 GDExtension 类**: - 在 `src/` 创建 `.cpp`/`.h` 文件 - 在 `src/register_types.cpp` 中 `GDREGISTER_CLASS()` - 在 `CMakeLists.txt` 的 `add_library()` 中添加源文件 2. **场景编辑**:在 Godot 编辑器中编辑 `main/scenes/main.tscn`,所有 C++ 类可在节点列表中直接创建 3. **提交代码前**:确保 `build-pingpang.bat` 编译通过