- 项目描述
1.1功能描述
使用MFC设计一款俄罗斯方块。实现方块下落,方块移动,方块叠加,方块变形,消行等功能。
1.2所需技术
MFC双缓冲绘图,方块移动,下落,叠加,变形,消行处理。
- 总体设计
2.1运行流程
如附录图2-1俄罗斯方块运行流程图所示。
第三章 详细设计
3.1CTetrisGame类的成员函数与变量
游戏类的成员函数
bool gameOver();//游戏结束判断
void rectLineDel();//满行进行消行处理
bool rectChange(bool bufTmp[][4],CPoint &pot);//方块变形处理
void rectMove(int iDirect);//方块移动
bool hitJudge(bool bufTmp[][4],int iDirect,CPoint &pot);//方块碰撞判断,包含移动处理
void willRectProduce();//下一个方块随机产生
void fontDraw(CDC* pCDC);//绘制游戏界面的文字
void willRectDraw(CDC *pCDC);//绘制将要出现的方块
void mapDraw(CDC * pCDC);//绘制游戏的地图
void gameStart();//开始游戏
游戏类的成员变量
bool m_bEndFlg;//游戏结束判断
CPoint m_potNow;//当前掉下方块的左上点的位置
int m_iScore;//分数
bool m_bufMap[MAX_ROW][MAX_COL];//游戏的地图
bool m_bufNow[MIN_ROW_ROL][MIN_ROW_ROL];//当前这在掉落的方块
bool m_bufWill[MIN_ROW_ROL][MIN_ROW_ROL];//将要出现的方块
说明:后面所说的块是指4*4的二维数组,地图块是指整张游戏的背景。
3.2方块掉落,平移,变形过程绘制mapDraw
所有实现是通过绘制一个一个的方块实现的。
//绘制游戏的背景,正在下落的,和已经堆积的
void CTetrisGame::mapDraw(CDC *pCDC)
{
int iRow = 0;
int iCol = 0;
CPen penMap;
penMap.CreatePen(PS_SOLID,1,RGB(0,0,0)); //定义白色画笔绘制蛇的边框,第一个参数代表
pCDC->Sel