GameLib 单头文件 C++ 游戏库
面向 C++ 初学者的单头文件 2D 游戏库,无需 SDL/DirectX/OpenGL,拷贝 GameLib.h 即可绘图、播放声音、处理键鼠与碰撞,十行代码就能跑起可玩的小游戏。
爱鲜报评分
0 人评分
519
星数
是
中文
C++
主语言
是
活跃
3
贡献者
人工分析
EDITORIAL推荐理由
它把 C++ 初学者最头疼的环境配置问题直接抹掉:一个头文件、零链接依赖,兼容 Dev C++ 自带的 GCC 4.9.2,非常适合课堂教学与自学。内置绘图、精灵、声音、Tilemap、UI 控件等常用能力,并附带 15 个由浅入深的示例,从 Hello World 一路做到太空射击。对想快速看到成果、而不是先折腾构建系统的开发者来说,这是极低门槛的入门选择。
适用场景
- C++ 课程作业与教学演示
- 2D 小游戏快速原型(贪吃蛇、打砖块、太空射击)
- 零配置交付的课堂/实验项目
- 初学者学习游戏循环与碰撞检测
- 通过 SDL2 版移植到 Linux/macOS/Web
优点
- 单头文件、零依赖,拷贝即用,无需配置链接参数
- 兼容 Dev C++ 与 GCC 4.9.2,对学校环境友好
- 绘图、精灵、声音、Tilemap、UI 控件等 API 覆盖完整
- 附带 15 个渐进式示例,学习路径清晰
- 提供 SDL2 移植版本,可跨平台到 Linux/macOS/Web
缺点
- 仅面向 2D,缺少 3D 与高级渲染能力
- Win32 主线主要面向 Windows,其他平台需走 SDL2 版本
- 功能偏教学与轻量原型,不适合大型商业项目
- 中文文档与社区资料相对有限,主要依赖仓库内英文文档
GameLib 是什么
GameLib 是一个面向 C++ 初学者的单头文件 2D 游戏库。它的核心卖点只有一句话:把 GameLib.h 拷进项目文件夹,写一句 #include "GameLib.h",就能开始做游戏。
不需要安装 SDL、SFML、raylib,不需要配置头文件路径,也不需要链接任何库——窗口、绘图、键盘鼠标、精灵、声音、碰撞检测全部内置。
为什么值得关注
很多 C++ 初学者学了几周,仍然只能在黑窗口里 cout 一行字。想用成熟游戏库,往往先被环境配置劝退:SDL 要配路径和一堆 dll,SFML 要懂 CMake,raylib 需要一定的数学与 C/C++ 基础。
GameLib 的目标就是干掉这段痛苦,让第一行图形代码尽可能早地出现在屏幕上。它专门兼容 Dev C++ 自带的 GCC 4.9.2,也支持任何 C++11 的 Windows 编译器。
十行代码跑起来
#include "GameLib.h"
int main()
{
GameLib game;
game.Open(640, 480, "My Game", true);
int x = 320, y = 240;
while (!game.IsClosed()) {
if (game.IsKeyDown(KEY_LEFT)) x -= 3;
if (game.IsKeyDown(KEY_RIGHT)) x += 3;
if (game.IsKeyDown(KEY_UP)) y -= 3;
if (game.IsKeyDown(KEY_DOWN)) y += 3;
game.Clear(COLOR_BLACK);
game.FillCircle(x, y, 15, COLOR_CYAN);
game.DrawText(10, 10, "Up/Down/Left/Right to move!", COLOR_WHITE);
game.Update();
game.WaitFrame(60);
}
return 0;
}
编译时通常只需类似 g++ main.cpp -o game.exe -mwindows 的命令,无需额外链接参数。
主要特性
- 零配置:单头文件拷贝即用,兼容 GCC 4.9.2(Dev C++)
- 开箱绘图:点、线、矩形、圆、椭圆、三角形(描边与填充),内置 8×8 像素字体,支持可缩放字体与 UTF-8
- 精灵系统:整数 ID 管理,无需手动释放资源,支持 PNG/JPG/BMP、帧动画、翻转、缩放、旋转与 Alpha 混合
- 键鼠输入:按住/按下/松开检测,鼠标三键与滚轮,窗口失焦自动暂停
- 声音:WAV 音效与 MP3/MIDI 背景音乐,独立通道互不干扰
- 碰撞检测:矩形重叠、圆碰撞、两点距离
- Tilemap:双层瓦片地图、视差滚动、只渲染可见区域,支持
.glm数据存取 - UI 控件:Button、Checkbox、RadioBox、ToggleButton,即时模式零依赖
- 场景与存档:整数标识场景配合
switch切换;SaveInt/LoadInt一行读写 - 跨平台:SDL2 版
GameLib.SDL.h支持 Linux/macOS/Web
示例与学习路径
仓库 examples/ 目录提供 15 个由浅入深的示例,同时兼容 Win32 与 SDL 两条产品线:
- 入门基础:Hello World、键盘移动与弹跳小球、图形绘制、简易画板
- 精灵与声音:精灵与帧动画、声音播放、简易射击
- 完整小游戏:打砖块、贪吃蛇
- Tilemap 与文字:双层视差卷轴、可缩放字体与 UI
- 高级特性:精灵缩放旋转、裁剪矩形、太空射击、UI 控件
适合做什么
太空射击、横版卷轴、俄罗斯方块、贪吃蛇、打砖块、走迷宫、接水果、弹幕游戏、回合制 RPG、视觉小说、地图编辑器、画板程序,以及各种课程作业演示。
环境与文档
- Win32 主线:Windows 7+,任意 C++11 编译器(GCC 4.9+ / MSVC 2015+ / Clang),推荐 Dev C++、Visual Studio
- SDL 版:Linux/macOS/Windows,需要 SDL2 及可选扩展
- 文档入口包括
docs/quickref.md(API 快速检索)与docs/manual.md(完整接口说明)
项目采用 MIT 协议,可自由使用。
评论
- 暂无评论,来写第一条吧。