c面向对象课程设计海底世界俄罗斯方块.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《c面向对象课程设计海底世界俄罗斯方块.doc》由会员分享,可在线阅读,更多相关《c面向对象课程设计海底世界俄罗斯方块.doc(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、青岛理工大学C+面向对象课程设计报告院(系): 计算机工程学院 专业: 计算机科学与技术 学生姓名: 刘善永 班级: 计算091学号: 200907124题目: 俄罗斯方块 起迄日期: 5 设计地点: 现代教育中心机房207 指 导 教 师: 王秀鸾 完成日期: 2011 年 7 月 15 日目 录一、课程设计目的 2二、课程设计的内容与实现的功能 21.课程设计内容 2 2.实现的功能 2三、系统分析与设计 2 2设计 2 模块设计 .2 2.2数据结构说明 4 4四、系统测试与调试分析 12 11 .11五、用户手册 .12六、程序清单 .17七、体会与自我评价 32八、参考文献 32九、
2、课程设计评价 32第 33 页一 课程设计目的进行C+面向对象程序设计课程设计主要是在学习C+这门面向对象语言的基础上,在完成C+面向对象程序设计各部分实验的基础上,通过自学MFC,掌握一种可视化编程的方法,并通过实践加深对可视化编程与C+面向对象程序设计语言特点的认识与理解。同时,可以提高运用C+编程语言解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。二 课程设计内容与实现的功能 1.设计内容: 用mfc实现小游戏-俄罗斯方块。2.实现的功能:a:可以实现方块的变形,下落,加速,左移,右移,消行处
3、理以及显示分数,游戏级别与显示将要出现的方块等基本的功能;b:可以实现方块的直接丢下,游戏的暂停,重新开始,以及记录冠军的功能;c:还实现了消行画面效果的处理以及暂停游戏后的画面效果;d:实现了按p键可暂停游戏的功能;三 系统分析与设计俄罗斯方块是一款益智休闲的小游戏,要想实现经典俄罗斯方块的功能,首先要导入背景图片以及方块的的图片。然后要通过键盘上的上下左右键分别实现方块的变形、方块的加速、方块的左移以及方块的右移。接着当方块落满一行时,需要消除这一行。而且需要在界面上显示出游戏的级别以及要不断刷新的分数。当游戏结束时,有两种结果。一种是玩家没有打破记录,需要弹出一个对话框提醒玩家是否重新玩
4、一局;另一种是玩家已经打破了记录,这是要弹出一个对话框提示玩家输入姓名,接着保存玩家的相关信息。游戏的等级设置分为简单,中等,困难三种等级,当点击菜单中的响应选项时,要对游戏有相应的改变。游戏的说明也是必须的。游戏说明可以提示玩家怎样玩游戏。2.1、模块设计2.2、数据结构说明此程序中用到的数据结构主要是二维数组。如:int Russia100100;/游戏数组,用于存放整个界面的方块 int Now44;/ 当前图形,用于存放当前产生的方块 int Will44;/上一图形,用于存放上一次产生的方块2.3、算法流程图流程图以及函数关系调用图7.主程序的函数关系调用图四、系统测试与调试分析1、
5、系统测试l 测试方法:黑盒l 测试技术:单元测试l 测试数据:包括正确的输入及其输出结果与含有错误的输入及其输出结果。测试说明测试名称海底世界俄罗斯方块测试目的验证游戏的各部分功能是否实现,是否存在bug测试技术单元测试测试方法黑盒测试法测试用例测试内容游戏开始游戏(暂停游戏,重新开始游戏,退出游戏与此相同)测试步骤点击“游戏”“开始游戏”不点击“游戏”“开始游戏”测试数据点击“游戏”“开始游戏”点击其他的任何地方预期结果正常开始游戏不能正常开始游戏测试结果与预期相符与预期相符测试用例测试内容方块的左移是否实现(右移,下移,变形,方块的直接丢下都与此类似)测试步骤开始游戏后,按下做方向键开始游
6、戏后,按下其它键测试数据开始游戏后,按下做方向键按下键盘上的H键预期结果方块向左移动方块不会左移测试结果与预期相符与预期相符测试用例测试内容排行榜的功能是否实现测试步骤用户已结束游戏,且打破记录用户已结束游戏,但未打破记录测试数据用户输入相关信息用户不需要操作预期结果排行榜中信息已更新排行榜中的信息未发生变化测试结果与预期相符与预期相符测试用例测试内容游戏级别的设置是否实现测试步骤点击“选项”“级别”点击“选项”“级别”测试数据选择中等级别选择高级级别预期结果运行界面上显示中速运行界面上显示快速测试结果与预期相符与预期相符测试用例测试内容游戏中消行是否实现测试步骤方块的移动以及落地方块的移动以
7、及落地测试数据方块充满一行方块未满一行预期结果消除一行不会发生变化测试结果与预期相符与预期相符2、调试分析 遇到的问题及解决方案: a.在将4*4数组中的方块对应到背景图片时,总是不在理想的位置。以及对Bitblt的目标矩形的初始横坐标、纵坐标区分不是很清楚。解决方法:通过用多组数据不断地调试,最终把问题解决了。 b.在进行左移时,会覆盖原先存在的方块。而右移则不会。解决方案:经过调试,发现没有对左移是否可行进行判断。后加了判断左移是否可行的代码,最终把问题解决了。 c.在调试过程中经常遇到的问题是:当在另一个类中定义一个类的变量时,经常出现问题。这时候,要看看是否包含了添加类的头文件。设计与
8、实现的回顾讨论与分析:五、用户手册1.使用平台:Microsoft Visual Studio 20082.需要安装。将下载的压缩包解压出来,然后在解压出来的文件中点击setup.exe;这需要很长的时间。3.操作步骤:1.选择TerisDebug文件夹下的Teris.exe,单击运行程序。2.启动画面。“游戏”“开始游戏”,便可开始游戏,如下图;“帮助”“游戏帮助”,弹出帮助对话框,显示了游戏的规则,游戏的操作说明以及排行榜的信息,便于玩家玩游戏。“选项”“级别”,便会弹出级联菜单。玩家可以在“低级”“中级”“高级”中选择一个适合自己的级别来进行游戏。7.当用户需要暂停游戏时,可以按下键盘上
9、的“P”键或者选择“游戏”“暂停游戏“两种选择来暂停游戏。8.当玩家需要回到游戏时,只需单击“返回游戏“按钮即可。排行榜中冠军的分数时,便弹出如下对话框,玩家只要在编辑框内输入信息单击“Next“即可;(下图为玩家输入的信息为”刘善永“)10.这时候,玩家的在所选等级上的分数已经打破记录,玩家的信息会显示在排行榜上,如下图。11.当玩家无法打破记录时,会弹出如下对话框来提示用户选择相应的操作来进行下一步。12.当玩家不想继续游戏时,只要选择“游戏“”退出游戏“即可;六、程序清单BOOL CQuitDialog:OnEraseBkgnd(CDC* pDC)/ TODO: 在此添加消息处理程序代码
10、与/或调用默认值/return CDialog:OnEraseBkgnd(pDC);BOOL retValue=CDialog:OnEraseBkgnd(pDC);CRect rect;GetClientRect(&rect);CBitmap bitmap;bitmap.LoadBitmapW(IDB_BITMAP6);CDC dc;dc.CreateCompatibleDC(pDC);CBitmap *pOldBitmap=dc.SelectObject(&bitmap);pDC-BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);d
11、c.SelectObject(pOldBitmap);return TRUE;在RankDialog.cpp中添加的代码:INT_PTR CRankDialog:DoModal()/ TODO: 在此添加专用代码与/或调用基类TCHAR pszTmp128 = 0;/读取配置文件GetPrivateProfileStringW(_T(Rank), _T(low_name), _T(0), pszTmp, 127, _T(.setup.ini);m_name = CString(pszTmp);GetPrivateProfileStringW(_T(Rank), _T(low_score), _
12、T(0), pszTmp, 127, _T(.setup.ini);m_score = _wtoi(pszTmp);GetPrivateProfileStringW(_T(Rank), _T(medium_name), _T(0), pszTmp, 127, _T(.setup.ini);m_name1 = CString(pszTmp);GetPrivateProfileStringW(_T(Rank), _T(medium_score), _T(0), pszTmp, 127, _T(.setup.ini);m_score1 = _wtoi(pszTmp);GetPrivateProfil
13、eStringW(_T(Rank), _T(high_name), _T(0), pszTmp, 127, _T(.setup.ini);m_name2= CString(pszTmp);GetPrivateProfileStringW(_T(Rank), _T(high_score), _T(0), pszTmp, 127, _T(.setup.ini);m_score2 = _wtoi(pszTmp);return CDialog:DoModal();在RecordDialog.cpp中添加的代码:void CRecordDialog:OnBnClickedOk()/ TODO: 在此添加
14、控件通知处理程序代码/CString str;TCHAR ch10;GetDlgItemTextW(IDC_EDIT_NAME,ch,15);if(teris.m_speed=500) WritePrivateProfileStringW(_T(Rank), _T(low_name),ch,_T( .setup.ini);if(teris.m_speed=300) WritePrivateProfileStringW(_T(Rank), _T(medium_name),ch,_T( .setup.ini); if(teris.m_speed=200) WritePrivateProfileSt
15、ringW(_T(Rank), _T(high_name),ch,_T( .setup.ini);/name=ch;CDialog:OnOK();在TerisView.cpp中添加的代码:int CTerisView:m_count=0;int CTerisView:m_speed=500;/为了可以在CrecordDialog类中使用/ CTerisView 构造/析构CTerisView:CTerisView(): point(0) ,m_start(false) , m_LineDelete(0) , m_GamePause(false)/ TODO: 在此处添加构造代码bkMap.Lo
16、adBitmap(IDB_BITMAP2);fkMap.LoadBitmap(IDB_BITMAP1);m_RowCount=18;/行数m_ColCount=10;/列数Count=7;/m_speed=500;/默认速度for(int i=0;im_RowCount;i+)for(int j=0;jm_ColCount;j+)Russiaij=0;/初始化背景数组for(int i=0;i4;i+)for(int j=0;j4;j+)Nowij=0;/初始化当前方块的数组Willij=0;/初始上一个方块的数组/ 画游戏界面(双缓存)void CTerisView:DrawGameBk(C
17、DC * pDC)CDC BkDc,BlockDc,MemDc,Dc;CBitmap BpMem,fkMap1;MemDc.CreateCompatibleDC(pDC);BpMem.CreateCompatibleBitmap(pDC,800,600);BkDc.CreateCompatibleDC(pDC);BlockDc.CreateCompatibleDC(pDC);MemDc.SelectObject(&BpMem);/画背景BkDc.SelectObject(bkMap);MemDc.BitBlt(0,0,800,600,&BkDc,0,0,SRCCOPY); /画方块if(m_G
18、amePause)/如果暂停的话,则加载另外一个方块fkMap1.LoadBitmap(IDB_BITMAP10);elsefkMap1.LoadBitmap(IDB_BITMAP1);for(int i=0;im_RowCount;i+)for(int j=8;jm_ColCount+8;j+)if(Russiaij=1)BlockDc.SelectObject(fkMap1);MemDc.BitBlt(j*30+10,i*30,30,30,&BlockDc,0,0,SRCCOPY);for(int k=0;k4;k+)for(int l=0;l4;l+)if(Nowkl=1)BlockDc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 课程设计 海底 世界 俄罗斯方块
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内