俄罗斯方块mfc实验报告

俄罗斯方块mfc实验报告

ID:40504866

大小:248.48 KB

页数:20页

时间:2019-08-03

俄罗斯方块mfc实验报告_第1页
俄罗斯方块mfc实验报告_第2页
俄罗斯方块mfc实验报告_第3页
俄罗斯方块mfc实验报告_第4页
俄罗斯方块mfc实验报告_第5页
资源描述:

《俄罗斯方块mfc实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、程序设计实践设计报告课题名称:俄罗斯方块(MFC版)学生姓名:黄嘉慧班级:2012211113班内序号:27学号:2012210389日期:2014.6.11.实验概述1.1课题目标和主要内容。本课题的主要内容是用MFC实现经典游戏俄罗斯方块的编写。目标是能够正常运行,并且无过于严重的问题。使用的平台为MFC(基于对话框)。1.2当分数>=50*等级开始游戏1.2DIAN升级并重新开始游戏结束游戏采用计分升级制来进行游戏。当一次消去一行时,得一分,一次两行得4分,一次3行,得9分,一次4行,得16分。每50分为一个等级,得分足够则升级并重新开始游戏。2.程序设计2.1系统总体

2、框架用一个4维数组DiamondStruct[7][4][4][4]来表示所有的方块,用一个POINT类型的DiamondPos来表示方块当前的位置,然后通过一个二维数组BlockPanel[][],来表示整个游戏界面,同时进行障碍的添加。游戏过程中,通过改变DiamondPos来进行方块的下降以及左右移动,通过DiamondStruct[7][4][4][4]中第二个参数的改变来进行方块的变换。2.2系统详细设计【1】模块划分图及描述菜单控制结束游戏重新开始暂停游戏【2】类关系图及描述CWinApp与CDialog为基类。其它为添加的类。【3】程序流程图及描述开始消行操作生

3、成新的下坠物将新的下坠物代替旧的下坠物将旧的下坠物作为当前下坠物到达底部消行操作游戏结束处理下降一个单位否是否是到达底部到达顶部游戏结束结束【4】存储结构,内存分配主要存储结构为数组。同时分配内存的有,画笔,Diamond类的指针,Panel类的指针,Block类的指针,Mill类的指针,Manager类的指针。2.3关键算法分析【1】boolDiamond::FullLine(){boolIsFull,Full=false;pManager->SeriesLine=0;for(intiy=0;iy<=pPanel->nVGridNum;iy++){IsFull=true;f

4、or(intix=0;ix<=pPanel->nHGridNum;ix++){if(!pBlock->BlockPanel[ix][iy])IsFull=false;}if(IsFull){Full=true;pManager->SeriesLine++;for(intjy=iy;jy>0;jy--){Sleep(10);for(intjx=0;jx<=pPanel->nHGridNum;jx++){pBlock->BlockPanel[jx][jy]=pBlock->BlockPanel[jx][jy-1];}}}}pManager->LineNumber+=pManage

5、r->SeriesLine;pManager->Result+=pManager->SeriesLine*pManager->SeriesLine;if(Full)returntrue;elsereturnfalse;}该算法实现的功能为,判断是否已经满行,并且若是满行,进行消行,加分的操作。该算法的时间复杂度为O(n)=【(nVGridNum)^2*nHGridNum.】/2【2】boolDiamond::overlap(){boolbTuFa=false;POINTTexPos;for(intiy=3;iy>=0;iy--){for(intix=0;ix<4;ix++){

6、if(DiamondStruct[DiamondType][DiamondState][ix][iy]){TexPos.x=ix+DiamondPos.x;TexPos.y=iy+DiamondPos.y;pPanel->PanelPosToPos(TexPos);TexPos.y+=pPanel->GridSize.cy;if(TexPos.xPanelRect.left

7、

8、TexPos.x>pPanel->PanelRect.right

9、

10、TexPos.y>pPanel->PanelRect.bottom)bTuFa=true;if(pBlock->Bl

11、ockPanel[DiamondPos.x+ix][DiamondPos.y+iy])bTuFa=true;}}}if(bTuFa)returntrue;return0;}该算法的功能为实现判断方块是否与边界或者已有障碍重叠,若是重叠,则返回值0,若没有重叠,返回值1。算法的时间复杂度为O(1)【3】voidBlock::AddBlock(){for(intiy=0;iy<4;iy++)for(intix=0;ix<4;ix++){if(pDiamond->DiamondStruct[pDiamond-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。