Console Snake Game by Windows GDI

windows GDI 编写贪吃蛇

Abstract: When I have just learned windows GDI programming, I am so excited and can’t wait to try, then I wrote this Snake Game. It’s not difficult, just for fun.The core of the program is the messages dealing callback function “int WINAPI WinMain(…)”, it deals with timer callback、key pressing event and onpaint system message.

刚学windows GDI编程,对用代码实现绘图兴奋不已,于是便先参考网上的一份代码写了个简单的贪吃蛇练手。

程序是以消息处理回调函数为核心,响应定时时间和按键消息,定时时间到则绘制蛇的移动已经死亡判断,而按键消息响应里进行蛇的移动操作以及游戏控制。

先看主函数:

主要是新建、初始化、注册窗口类并创建、显示窗口,然后进入消息循环。

移步消息处理回调函数:

其主要对窗口重绘、定时、按键消息三大类消息进行处理。

重绘消息处理是为了能在窗体被遮挡等情况下进行重新绘制。

定时消息里对贪吃蛇进行移动和游戏逻辑判断,比如是否触及边界game over或者吃到东西加分或者进入下一关。

按键消息分为游戏控制键,如f键开始游戏,p键暂停,和玩家操控键,如上下左右方向键和W\S\D\A方向键。

对蛇的移动和移动后的状态判断处理打包成一个函数:moveDirect。

下面看下Snake的类:

蛇的身体用链表表示,每个节点的结构体为SnakeNode,包含坐标,不过这里的坐标是指游戏地图中的坐标,并不是完全对应的像素,游戏地图中的每个坐标对应一个方块。其余的成员函数和成员变量代码中有注释,这里不再复述。

游戏截图如下:

Code Download:

Snake 

https://github.com/atp798/BlogStraka

发表评论