您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > VC++俄罗斯方块课程设计报告(含源代码)
1课程设计报告文档题目:俄罗斯方块一.引言1、编写目的:通过本课程设计,使学生巩固面向对象程序设计的基本概念、原理和技术,学会使用VisualC++开发工具进行简单面向对象程序的开发,将理论与实际相结合,完成一个小型面向对象程序的设计与实现,并在此基础上强化学生的实践意识,提高其实际动手能力和创新能力。2、.定义:无3、参考资料:郑莉.C++语言程序设计.北京:清华大学出版社,2003罗建军.大学VisualC++程序设计案例教程.北京:高等教育出版社,2004刘路放.VisualC++与面向对象程序设计教程.北京:高等教育出版社,2000DavidJ.VisualC++技术内幕.潘爱民印译.北京:清华大学出版社,1999侯俊杰.深入浅出MFC.武汉:华中科技大学出版社,2001二.任务的描述:1.目标:编写基于VC++开发工具并能通过键盘和鼠标进行人机交流俄罗斯方块游戏,界面友好,容易操作的游戏。2.功能描述:通过控制键盘可以进行游戏的开始、暂停、结束;能够控制方块的移动、变形;具有进行经典的俄罗斯方块游戏的一般功能。3.性能描述(1)数据精确度:无(2)时间特性:无4.运行环境:windows98以上操作系统5.条件与限制:硬件:装有Windows操作系统的计算机软件:MicrosoftVisualStudio6.0、MicrosoftVisualStudio20052三.任务设计1、程序的整个流程图NNY开始是否到达底部消行操作生成新的“下一个下坠物”将新生的下坠物代替旧的“下一个下坠物”将旧的下一个下坠物用作当前下坠物到达底部消行操作到达底部游戏结束游戏结束处理结束下降下一个单位32、键盘响应函数流程图NYNNYYYN\NYNYNYNY是否按左方向键能否左移左移是否按右方向键能否右移右移是否按下方向键能否下移下移N是否按上方向键是否变形变形开始43、等级管理模块流程图NY开始响应菜单等级设置函数初始化等级对话框判断是否升级等级加一更新速度存入等级结束54、主界面显示模块流程图NYY开始画封面开始游戏画背景画方块和分数调用时间函数是否暂停是否结束游戏终止时间函数结束6(1)类1:CAboutDlg()类是建立MFC程序时自动生成的类,俄罗斯方块游戏基本上用不到这个类,故不做解释。(2)类2:CMainFrame()框架类主要是对游戏的框架进行设计。数据成员:CStatusBarm_wndStatusBar;工具栏CToolBarm_wndToolBar;状态栏成员函数:1、CMainFrame()构造函数:初始化游戏;2、~CMainFrame()析构函数:删除游戏数据;3、OnCreate():工具栏的实现;4、PreCreateWindow()游戏窗口的规格实现;(3)类3:COptionDlg()游戏状态显示类:主要实现对游戏在进行中的一些状态显示比如:级别、下一个方块。数据成员:intm_oldArea;区域大小intm_oldLevel;等级intm_oldBlockSytle;背景风格BOOLm_oldDrawGrid;成员函数:1、COptionDlg()初始化界面:用户选择的区域大小代码,及级别代码,方块样式2、DoDataExchange()数据类型的转换:由键盘消息转换成函数响应消息3、Onok()当用户按OK按钮(ID是IDOK)时调用。覆盖该函数执行OK按钮动作。对话框包括自动数据检验和交换,缺省方式是对应用的某些变量进行数据的检验和更新。(4)CSkyblue_RectApp()程序自动生成。(5)CSkyblue_RectView()视图类:这是本游戏主要编写的地方:实现方块的随机生成、方块的移动、变形。游戏的消行、升级、速度的提升以及游戏的开始和结束。数据成员:intm_nWidth;子窗口的宽度intm_nHeight;子窗口的高度intm_iCol;intm_iRow;列与行的数量intm_iLarge;(小方块的大小,它会随着行与列的不同而不同,具体为:12行10列,30个象素的正方形18行15列,2024行20列,1530行25列,12)intm_iLevel;当前的级别,换算成速度的算法为:1500-m_iLevel*200intm_iBlockSytle;当前选择的方块显示样式intm_iStartX;intm_iStartY;游戏区域左上角的坐标BOOLIsLeftLimit();坠物件是否可向左移动BOOLIsRightLitmit();intInterFace[74][4];接触面二维数组,记录1~7种下坠物的1~4种形态7的接触面信息,把该下坠物的某种形态种的4个方块,有接触面则记录方位,无则为-1标识。intm_currentRect;当前的方块形状CStringm_strArea;CStringm_strLevel;当前的样式,下一个将会出现的样式intm_icurrentStatus;intm_inextStatus;OnDraw中需要用到的设备名称CPen*m_pBlackPen;CBrush*m_pGrayBrush;CBrush*m_pBlackBrush;BOOLm_bDrawGrid;是否画网格线intm_iPerformance;游戏总成绩BOOLm_bGameEnd;游戏是否已结束,为FALSE表示开始,否则为结束成员函数1、ActiveStatusToGameStatus()将当前下坠物的位置映射到游戏区域地图数组中去;2、CSkyblue_RectView()初始化游戏;3、~CSkyblue_RectView()删除游戏数据;4、CurrentAreaAndLevel()用于生成当前区域大小与级别所对应的汉字描述;5、DCEnvClear()调取位图资源;6、DcEnvInitial()绘图环境初始化;7、DrawGame(CDC*pDC)绘制整个游戏所在窗口的背景;8、InvalidateCurrent()刷新当前的区域;9、IsBottom()判断当前方块是否已到底,并且销行等相关的工作;10、IsLeftLimit()方块是否还可以左移;11、IsRightLitmit()方块是否还可以右移;12、OnCreate(LPCREATESTRUCTlpCreateStruct)创建一些设备;13、OnDraw(CDC*pDC)承担所有绘制屏幕工作;14、OnGameEnd()游戏结束;15、OnGameExit()清理内存设备环境,释放资源;16、OnGameOption()游戏设置;17、OnGamePaush()游戏暂停;18、OnGameStart()游戏开始;19、OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)()处理用户的输入,方块的左,右移,加速及变形;20、OnOptionArea()用菜单设置区域大小;21、OnOptionLevel1()用菜单设置游戏级别:22、OnTimer()承担所有驱动工作;23、OnUpdateGameEnd(CCmdUI*pCmdUI)()如果游戏开始,则此[游戏结束]按钮被开启;24、OnUpdateGameExit(CCmdUI*pCmdUI)如果游戏开始,则此[退出系统]按钮被屏蔽;25、OnUpdateGamePaush(CCmdUI*pCmdUI)如游戏开始,则[游戏暂停]8按钮开启26、Random(intMaxNumber):产生一个最大值不大于指定值的随机正整数(Random);27、RectArrow(intm_Type):当前方块下降加速,左移,右移28、RectChange():方块的变形29、RectDown()当前方块下降30、RectStatusToActiveStatus(intm_which)初始掉落时,将根据方块的样式决定当前动态数组的值31、RectStatusToNextStatus(intm_which)初始掉落时,将根据方块的样式决定下一次将要掉下来的动态数组的值3.类之间的关系:四.编写代码1.问题1(1)问题描述:所遇问题的描述。(2)解决办法:该问题的解决办法。2.问题2(1)问题描述:所遇问题的描述。(2)解决办法:该问题的解决办法。……………………………………………Skyblue_Rectclsasses包含CAboutDlgCMainFrameCOptionDlgCSkyblue_RectAppCSkyblue_RectDocCSkyblue_RectView9五.程序运行1、游戏主页面:游戏主界面,上方是开始、暂停、结束、设置按钮。设置按钮102、游戏开始:注:右上角是下一个方块右下角分别显示分数、游戏大小和级别。3、开始时可以按暂停按钮出现下面情况开始按钮被激活4、按结束按钮出现设置按钮激活115、消行及得分126、升级7、游戏结束133.错误描述及其解决办法(1)问题1:问题描述:所遇问题的描述。解决办法:该问题的解决办法。(2)问题2问题描述:所遇问题的描述。解决办法:该问题的解决办法………………………………………六、感想认识通过本次课程设计,谈谈对面向对象编程的体会。七.程序代码skyblue_Rect.cpp:Definestheclassbehaviorsfortheapplication.//#includestdafx.h#includeskyblue_Rect.h#includeMainFrm.h#includeskyblue_RectDoc.h#includeskyblue_RectView.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CSkyblue_RectAppBEGIN_MESSAGE_MAP(CSkyblue_RectApp,CWinApp)//{{AFX_MSG_MAP(CSkyblue_RectApp)ON_COMMAND(ID_APP_ABOUT,OnAppAbout)//NOTE-theClassWizardwilladdandremovemappingmacroshere.//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!//}}AFX_MSG_MAP//StandardfilebaseddocumentcommandsON_COMMAND(ID_FILE_NEW,CWinApp::OnFileNew)ON_COMMAND(ID_FILE_OPEN,CWinApp::OnFileOpen)//StandardprintsetupcommandON_COMMAND(ID_FILE_PRINT_SETUP,CWinApp::OnFilePrintSetup)14END_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CSkyblue_RectAppconstructionCSkyblue_RectApp::CSkyblue_RectApp(){//TODO:addconstructioncodehere,//PlaceallsignificantinitializationinInitInstance}///////////////////////////////////////////////////////////////////////////////TheoneandonlyCSkyblue_RectAppobjectCSkyblue_RectApptheApp;///////////
本文标题:VC++俄罗斯方块课程设计报告(含源代码)
链接地址:https://www.777doc.com/doc-2480069 .html