欢迎来到天天文库
浏览记录
ID:9378328
大小:699.00 KB
页数:31页
时间:2018-04-29
《c++俄罗斯方块课程设计报告书》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、大学C++面向对象课程设计报告院(系):计算机工程学院专业:学生姓名:班级:_______ 学号:题目:俄罗斯方块起迄日期:_2012.6.18~2012.6.29设计地点:计算机学院机房指导教师:完成日期:2012年6月29日目录一、需求分析………………………………………………………….31.课程设计内容…………………………………………………….32.程序实现功能…………………………………………………….3二、设计内容………………………………………………………….31俄罗斯方块主功能框架图………………………………………42.主函数及各功能模块流程图………………
2、………………..…4三、调试分析……………………………………………………….....261.实际完成情况…………………………………………………....272.上机过程中出现的问题及其解决方案………………………..273.程序中可以改进、扩充的功能及设计实现构想……………..27四、用户手册…………………………………………………………..27五、设计总结………………………………………………………31六、参考文献…………………………………………………………32七、附录………………………………………………………………32一、需求分析1.课程设计目的俄罗斯方块是由阿列谢
3、.帕基特诺发明的,Tetris游戏在一个m*n的矩形形框内进行的,矩形框的顶部会随机的出现一个有四个小方块组成的砖块,每过一段时间,就会下落一格,知道他碰到底部,然后再过一个时间下落另一个砖块,依次进行,砖块是随机出现的。当发现底部砖块是满的话,则消去它从而得到相应设置的分数,当砖块到达顶部的时候,游戏结束。选择俄罗斯方块进行C++面向对象程序设计课程设计主要是在学习C++这门面向对象语言的基础上,在完成C++面向对象程序设计各部分实验的基础上,通过自学MFC,掌握一种可视化编程的方法,并通过实践加深对可视化编程与C++面向对象程序设计语言特点的认识与理解。同时
4、,可以提高运用C++编程语言解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。2.程序实现的功能【1】实现方块的变形、下落、左移、右移消行等基本的功能。【2】实现方块的直接丢下、暂停、判断分数以及等级设置功能。【3】友好的地用户界面,七种基本的方块图形设计功能。【4】设置快捷键实现游戏的暂停和播放音乐功能。二、设计内容方块旋转控制菜单显示功能俄罗斯方块方块移动操作功能方块移动控制主界面显示功能方块显示功能播放音乐功能游戏规则判断功能等级管理功能游戏等级选择游戏升级功能1
5、.俄罗斯方块主功能框架图2.主函数及各功能模块流程图【1】主程序流程图开始显示封面响应开始菜单函数画出游戏界面以及等级分数显示随机产生方块方块的移动及变形能否变形和移动以及到达顶端是否消行计算分数判断是否升级升级更新速度判断输赢【2】主程序函数调用图OnGamezStart()SetTimer()russia.GameStart()OnTimer()nIDEvent)russia.DrawBKMove()DrawWill()Meet()LineDelete()Win()Change()【3】键盘响应方块移动及操作模块算法流程图开始是否按下左方向键能否左移是否按下
6、右方向键能否右移是否按上方向键能否变换是否按下下方向键能否下移左移右移下移代码实现部分:voidCTetrisView::OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags){//没有开始if(!m_bStart)return;if(m_bPause==TRUE)return;switch(nChar){caseVK_LEFT:russia.Move(KEY_LEFT);break;caseVK_RIGHT:russia.Move(KEY_RIGHT);break;caseVK_UP:russia.Move(KEY_UP);br
7、eak;caseVK_DOWN:russia.Move(KEY_DOWN);break;}//重画CDC*pDC=GetDC();russia.DrawBK(pDC);ReleaseDC(pDC);CView::OnKeyDown(nChar,nRepCnt,nFlags);}voidCRussia::Move(intdirection)//移动方块{if(end)return;switch(direction){//左caseKEY_LEFT:if(Meet(Now,KEY_LEFT,NowPosition))break;NowPosition.y--;bre
8、ak;//右caseKE
此文档下载收益归作者所有