Console Russian Brick by Windows GDI

控制台俄罗斯方块

Brief: Another console game programming by windows GDI — Russian Brick. It’s a well known game that any of us know the rules. It’s a little complex to program than snake game but still not difficult. Both the games have much in common. The main process procedure is also in messages callback function.

蛮喜欢控制台小游戏,所以继上篇控制台贪吃蛇[http://www.straka.cn/blog/snake-game-by-windows-gdi/]之后又写了个控制台俄罗斯方块。

方法类似,仍然是在消息循环处理函数中完成主要功能。不过俄罗斯方块比贪吃蛇稍微复杂一点在方块的绘制、变形和满行消除机制上。

首先里面用到了几个全局变量,

然后这里用一个三维数组代表俄罗斯方块的形状。

因为俄罗斯方块每种都是四块组成,总共7种,所以数组是7*4*2维,最后的2维代表坐标,当然是相对于方块位置的坐标偏移量。

由于方块形状的不规则,因而为方便判断方块出界,另用一个7*4二维数组代表方块在四个上的上下界。

再看下类定义:

类中注释很多不一一解释,看下主要的消息回调:

WM_PAINT消息重绘的只是非游戏区域,即游戏说明部分

WM_TIMER定时器消息处理方块的定时移动:

字符键按键消息处理游戏控制逻辑,方向键同W\S\A\D的响应:

具体的类成员函数实现参考源码:

RussianBrick

https://github.com/atp798/BlogStraka

游戏效果截图:

发表评论