[2]游戏编程系列-游戏程序的基本框架
注意:程序需要用到 SDL 库。不知到如何配置 SDL 请看上一篇文章。
[1]游戏编程系列-VisualStudio配置第三方库详解-SDL
游戏循环
游戏程序在运行时,每一秒都要对程序进行多次的更新。
游戏的每次循环就是一帧,如果游戏有60帧,那么游戏每秒循环60次。通过快速的更新新画面,游戏会让人对画面中的对象产生连续移动的错觉。
帧速率可以和帧频率(FPS)的的意思是一样的。
游戏程序在帧循环中做的事
游戏在每个帧循环中都会做以下几件事:
-
处理输入
-
更新游戏数据
-
生成输出
处理输入:列如扫描键盘或其他外设接口,察觉玩家的输入。输入也可以是位置信息,语音信息,陀螺仪状态等。
更新游戏数据:根据玩家的输入以及游戏内置的规则改变游戏中各个数据的状态。
生成输出:根据游戏数据生成画面和音效其他信息,比如说手柄抖动等。
实现一个Game类的基础框架
Game.h
// 游戏类
class Game
{
public:
Game();
// 初始化游戏
bool Initialize();
// 游戏循环
void RunLoop();
// 游戏结束
void Shutdown();
private:
// 游戏循环基础函数
void ProcessInput(); // 处理输入
void UpdateGame(); // 更新游戏内部状态
void GenerateOutput(); // 生成游戏输出
SDL_Widow* mWindow; // SDL中创建的窗口
bool mIsRunning