现在我们要创建一个Windows外壳程序,将单调的Windows运行细节隐藏,
Win32/DirectX编程就变得类似于32位DOS的编程过程。在构建好的代码结构下,
我们只需关心Game_*几个有关游戏逻辑的方法就行了。
1.Game_Init()
Game_Init()在WinMain()中的主事件循环之前被调用,并且仅调用一次。它用于初始化游戏
所需的各种资源,如获得资源设备描述表DC。
2.Game_Main()
Game_Main()在主事件循环中每次处理Windows消息之后被调用一次,应当在Game_Main()中
处理所有的图像渲染、声音、人工智能等内容。需要注意的是你必须仅绘制一帧画面然后就
返回。
3.Game_Shutdown()
Game_Shutdown()在主事件循环退出后被调用,清除游戏中被分配的所有资源。
下面是一个流星的具体实例,我们在Game_Init()随机初始化256个小星星。之后
每一帧绘制时,首先擦除掉星星位置上的点,之后将星星向屏幕右侧移动并检测
是否到达屏幕边界,最后在新位置上绘制星星。这样就可以进入下一轮的主事件
循环了。
运行起来就是这个样子了。
这是一个使用GDI绘图的不错的小程序,该程序演示了擦除、移动、绘制动画的循环。
第一部分总结
在第2章我们通过一个简单的Windows程序学习了创建一个最简单Windows窗体的步骤:
创建Windows类,注册它,然后创建窗体,编写事件处理函数,最后编写主事件循环
从事件队列获取并分发消息到事件处理函数。并且我们还学会了使用PeekMessage()
而不是阻塞的GetMessage()编写实时的事件循环。
第3章我们学会了如何创建图标、光标、字符串等等各种资源,并在程序中引用它们。
同时我们还学习了GDI基础知识,获得DC句柄,调用TextOut输出文字。以及重要的
窗口、键盘、鼠标事件处理。
第4章我们学习了GDI高级部分绘制各种图形,定时器,常用的按钮等小控件。至此我们
已经掌握了足够的Windows编程知识来应对游戏编程,下面是总结的知识列表,留作日后
复习使用:
1.Windows程序构建步骤:WNDCLASS类、注册、创建窗体、事件处理函数、主事件循环。
2.用PeekMessage()编写实时的事件循环
3.使用图标、光标、字符串等资源,并了解VS自动产生的.RC文件和资源索引文件中有什么。
4.处理常见窗口、键盘、鼠标消息,如WM_CLOSE,WM_SIZE,获得按键,WM_MOUSE*。
5.用GDI绘制文本、点线及各种图形。
6.通过检查系统时钟来控制程序刷新的帧频。
7.使用简单的小控件,如按钮、文本框等等。
接下来我们将进入DirectX的神奇世界!