# cppgzero **Repository Path**: fensl/cppgzero ## Basic Information - **Project Name**: cppgzero - **Description**: 类似于pgzero的一个小项目,让孩子们更快使用cpp编写游戏 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-22 - **Last Updated**: 2025-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ZGSprite 少儿编程教学库使用指南 ## 简介 ZGSprite 是一个专为中小学生设计的 C++ 编程教学库,它封装了 raylib 和 rturtle 库的功能,提供了简单易用的接口,让孩子们能够轻松创建游戏角色和在屏幕上绘画。 ## 主要功能 1. **精灵类 (Sprite)**:用于创建和控制游戏角色 2. **画笔类 (Pen)**:用于在屏幕上绘画和写字 3. **窗口管理 (Window)**:用于创建和控制游戏窗口 4. **键盘和鼠标输入**:用于处理用户输入 ## 使用方法 ### 1. 包含头文件 在你的 C++ 程序开头包含 `zgsprite.h` 头文件: ```cpp #include "zgsprite.h" ``` ### 2. 创建窗口 使用 `Window` 类初始化游戏窗口: ```cpp Window::Init(800, 600, "我的第一个游戏"); ``` ### 3. 创建精灵 使用 `Sprite` 类创建游戏角色: ```cpp // 创建带图片的精灵 Sprite player("resources/player.png"); // 或者创建一个简单的彩色方块 Sprite block; block.SetColor(RED); ``` ### 4. 创建画笔 使用 `Pen` 类创建画笔: ```cpp Pen pen; pen.SetColor(BLUE); pen.SetThickness(3.0f); ``` ### 5. 游戏主循环 创建游戏主循环,处理输入和绘制: ```cpp while (!Window::ShouldClose()) { // 处理输入 if (Keyboard::IsKeyDown(KEY_RIGHT)) player.Move(5, 0); // 开始绘制 Window::BeginDraw(); // 绘制精灵 player.Draw(); // 使用画笔绘制 pen.DrawText("你好,世界!", 20, 20, 24); // 结束绘制 Window::EndDraw(); } ``` ### 6. 关闭窗口 在程序结束时关闭窗口: ```cpp Window::Close(); ``` ## 精灵类 (Sprite) 常用方法 - `SetPosition(x, y)` - 设置精灵位置 - `Move(dx, dy)` - 移动精灵 - `Rotate(angle)` - 旋转精灵 - `SetScale(scale)` - 设置精灵大小 - `SetColor(color)` - 设置精灵颜色 - `Show()` / `Hide()` - 显示/隐藏精灵 - `Draw()` - 绘制精灵 - `IsColliding(otherSprite)` - 检测碰撞 ## 画笔类 (Pen) 常用方法 - `SetPosition(x, y)` - 设置画笔位置 - `Move(distance)` - 向前移动画笔 - `Rotate(angle)` - 旋转画笔 - `SetColor(color)` - 设置画笔颜色 - `SetThickness(thickness)` - 设置线条粗细 - `PenUp()` / `PenDown()` - 抬起/放下画笔 - `DrawLine(x1, y1, x2, y2)` - 绘制线条 - `DrawRectangle(x, y, width, height)` - 绘制矩形 - `DrawCircle(x, y, radius)` - 绘制圆形 - `DrawText(text, x, y, fontSize)` - 绘制文字 ## 颜色常量 可以使用以下预定义的颜色常量: - `BLACK` - 黑色 - `WHITE` - 白色 - `RED` - 红色 - `GREEN` - 绿色 - `BLUE` - 蓝色 - `YELLOW` - 黄色 - `PURPLE` - 紫色 - `ORANGE` - 橙色 - `PINK` - 粉色 - `GRAY` - 灰色 ## 键盘常量 可以使用以下预定义的键盘常量: - `KEY_RIGHT` - 右方向键 - `KEY_LEFT` - 左方向键 - `KEY_UP` - 上方向键 - `KEY_DOWN` - 下方向键 - `KEY_SPACE` - 空格键 - `KEY_ENTER` - 回车键 - 字母键:`KEY_A` 到 `KEY_Z` - 数字键:`KEY_ZERO` 到 `KEY_NINE` ## 教学建议 ### 初级课程(8-10岁) 1. **基础绘画**: - 使用画笔绘制简单的形状 - 创建简单的图案和画作 2. **简单动画**: - 创建一个会移动的精灵 - 使用键盘控制精灵移动 ### 中级课程(11-13岁) 1. **简单游戏**: - 创建贪吃蛇游戏 - 创建弹球游戏 2. **交互式绘画**: - 创建一个绘画板程序 - 添加不同的绘画工具和颜色 ### 高级课程(14-16岁) 1. **复杂游戏**: - 创建平台跳跃游戏 - 添加物理效果和碰撞检测 2. **多媒体应用**: - 创建音乐可视化程序 - 创建交互式故事书 ## 示例项目 1. **贪吃蛇游戏**:`snake_example.cpp` 2. **绘画板程序**:`drawing_example.cpp` ## 编译方法 使用 g++ 编译你的程序: ```bash g++ -o mygame mygame.cpp -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 ``` ## 注意事项 1. 确保已安装 raylib 库 2. 所有坐标以屏幕左上角为原点 (0,0) 3. 角度以度为单位,顺时针为正方向 ## 常见问题解答 1. **Q: 为什么我的精灵没有显示?** A: 检查图片路径是否正确,或者精灵是否被设置为隐藏。 2. **Q: 如何检测两个精灵之间的碰撞?** A: 使用 `sprite1.IsColliding(sprite2)` 方法。 3. **Q: 如何让精灵沿着特定路径移动?** A: 可以使用数学函数(如正弦、余弦)来计算移动路径。