Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

GameLib.h

License: MIT C++ Standard Platform Header Only No Dependencies GCC 4.9+

给 C++ 初学者的游戏开发库 —— 单个头文件,零配置,拷贝即用。

学 C++ 最痛苦的是什么?几周下来只能在黑窗口里 cout 一行字。想用 SDL、SFML?光配环境就劝退一半人。GameLib 就是为了干掉这段痛苦:把 GameLib.h 丢进项目文件夹,写句 #include "GameLib.h",十行代码就能画出能用键盘操控的彩色圆。窗口、绘图、键盘、鼠标、精灵、声音、碰撞检测全都有,不需要下载 SDK,不需要配置路径,不需要链接任何库。

十行代码做个游戏

#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; }

快速上手

第一步 — 下载 GameLib.h,放到项目文件夹。

第二步 — 创建 main.cpp,写上方的代码。

第三步 — 编译运行:

g++ main.cpp -o game.exe -mwindows

Dev C++ 用户:新建项目 > 添加 main.cpp > 编译运行,完事。

不需要 -lgdi32 -lwinmm 等任何链接参数,所有依赖由库内动态加载,连参数 -mwindows 都是可选的(不加的话会有控制台窗口)。

为什么做这个?

市面上的游戏库(SDL、SFML、raylib)都很好,但对于刚接触 C++ 的初学者来说:

  • SDL 要配置头文件路径、链接十几个 dll,使用复杂
  • SFML 要用 CMake
  • raylib 需要懂线性代数,三维基础知识,熟练 C/C++,还需编译/安装。

GameLib 的目标是零门槛:把 GameLib.h 拷到项目文件夹,写一个 .cpp 文件,点编译,游戏就跑起来了。

它专门为 Dev C++(很多学校编程课在用的 IDE)设计,兼容其自带的 GCC 4.9.2 编译器。当然,任何支持 C++11 的 Windows 编译器都可以用。

特性亮点

  • 零配置 — 单头文件拷贝即用,无需安装/链接任何库,兼容 GCC 4.9.2(Dev C++)
  • 开箱绘图 — 点、线、矩形、圆、椭圆、三角(描边+填充),内置 8×8 像素字体,支持可缩放字体和 UTF-8
  • 精灵系统 — 整数 ID 管理,无需处理指针和资源释放,加载 PNG/JPG/BMP,帧动画/翻转/缩放/旋转/Alpha 混合
  • 键盘鼠标 — 按住/按下/松开检测,鼠标三键+滚轮,窗口失焦暂停
  • 声音 — WAV 音效 + MP3/MIDI 背景音乐,独立通道互不干扰
  • 碰撞检测 — 矩形重叠、圆碰撞、两点距离
  • Tilemap — 双层瓦片地图、视差滚动、只渲染可见区域,保存/载入 .glm 数据
  • 窗口缩放 — resizable 窗口自动拉伸,鼠标坐标自动映射回逻辑坐标
  • 场景管理 — 整数标识场景,switch 即可实现菜单→游戏→结算切换
  • 存档读写SaveInt/LoadInt 等一行代码存取,纯文本 key=value 格式
  • UI 控件 — Button、Checkbox、RadioBox、ToggleButton,即时模式零依赖
  • 跨平台 — SDL2 版 GameLib.SDL.h 支持 Linux/macOS(详见 SDL2PORT.md)

适合做什么?

  • 太空射击 / 横版卷轴 / 俄罗斯方块 / 贪吃蛇 / 打砖块
  • 走迷宫 / 接水果 / 弹幕游戏
  • 回合制 RPG / 视觉小说 / 地图编辑器 / 画板程序
  • 课程作业演示(零配置交付)
  • 任何你想得到的 2D 游戏或互动程序

示例程序

examples/ 目录包含 15 个由浅入深的示例,每个兼容 Win32 和 SDL 两条产品线:

入门基础

示例说明学到什么
01_hello.cppHello World游戏循环、窗口创建、文字绘制
02_movement.cpp键盘移动 + 弹跳小球键盘输入、GetDeltaTime、碰壁反弹
03_shapes.cpp所有图形绘制展示线、矩形、圆、椭圆、三角的描边与填充
04_paint.cpp简易画板鼠标输入、滚轮调笔刷、失焦暂停

精灵与声音

示例说明学到什么
05_sprites.cpp精灵基础 + 帧动画CreateSprite、方向动画
06_sound.cpp声音播放演示PlayBeep、PlayWAV、PlayMusic
07_shooting.cpp简易射击子弹发射、碰撞销毁

完整小游戏

示例说明学到什么
08_breakout.cpp打砖块碰撞检测、多对象管理
09_snake.cpp贪吃蛇DrawGrid/FillCell、状态机

Tilemap 与文字

示例说明学到什么
10_tilemap.cpp双层视差卷轴Tilemap、视差滚动
11_font_text.cpp可缩放字体与 UIDrawTextFont、ShowMessage

高级特性

示例说明学到什么
12_sprite_transform.cpp精灵缩放 + 旋转DrawSpriteScaled/Rotated
13_clip_rect.cpp裁剪矩形SetClip/ClearClip
14_space_shooter.cpp太空射击综合实战
15_ui_controls.cppUI 控件演示Button、Checkbox、RadioBox

编译任意示例:

g++ -o 03_shapes.exe examples/03_shapes.cpp -mwindows

截图:03_shapes.cpp

截图:08_breakout.cpp

环境要求

Win32 主线:Windows 7+,任何 C++11 编译器(GCC 4.9+ / MSVC 2015+ / Clang),推荐 Dev C++、Visual Studio。

SDL 版:Linux/macOS/Windows,需要 SDL2 及可选扩展(详见 SDL2PORT.md)。

文档入口

资源推荐

想找游戏素材?试试这些:

协议

MIT License. 随便用。

关于 About

Single-header C++ Game Library for Beginners — no SDL/DirectX/OpenGL, no setup, just include and play.

语言 Languages

C++100.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
181
Total Commits
峰值: 92次/周
Less
More

核心贡献者 Contributors