语言:C++
本程序实现了俄罗斯方块的基本功能,可以设置等级,修改背景图片,并在游戏时根据不同的情况播放不同的音乐。
用户可以点击开始,开始游戏,暂停暂停游戏,点击停止结束游戏,在游戏中可以更改游戏等级。
游戏结束时可重新开始。
点击设置可以设置背景图片,背景音乐暂时没有添加。
程序的设计尽可能采用OOP,设计了一下几个类:
以上的几个类中CRussiaDialog为主面板类,处理最基本的绘图功能。
CGame为俄罗斯方块游戏类,处理俄罗斯方块的游戏逻辑。
CGamePanel为俄罗斯方块游戏面板和预览面板类,调用CRussiaDialog类中基本的绘制函数完成绘制。因为整个的绘制都是在CRussiaDialog上进行的。
CBlock为俄罗斯方块的方块类。
CBox为方块的最基本单元。
经验总结:
1. 对话框程序,因为对话框上存在控件,所以不能直接响应WM_KEYDOWN。必须重载PreTranslateMessage,在判断pMsg->message==WM_KEYDOWN,调用响应函数。
2. 响应WM_CTLCOLOR消息,可以自己设置绘制控件。
if (nCtlColor == CTLCOLOR_STATIC)
{
return (HBRUSH)::GetStockObject(HOLLOW_BRUSH);
}
可以将Static text的背景设置为空
3. 响应WM_ERASEBKGND消息,可以自己绘制背景,并且在绘制时使用OnEraseBkgnd(CDC* pDC)中的pDC可以实现局部重绘,否则不行。
具体的源码已经上传: