《VC++俄罗斯方块课程设计报告含源代码 .docx》由会员分享,可在线阅读,更多相关《VC++俄罗斯方块课程设计报告含源代码 .docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、VC+俄罗斯方块课程设计报告含源代码 课程设计报告文档 题目:俄罗斯方块 一引言 1、编写目的: 通过本课程设计,使学生巩固面向对象程序设计的基本概念、原理和技术,学会使用Visual C+开发工具进行简单面向对象程序的开发,将理论与实际相结合,完成一个小型面向对象程序的设计与实现,并在此基础上强化学生的实践意识,提高其实际动手能力和创新能力。 2、定义:无 3、参考资料: 郑莉.C+语言程序设计.北京:清华大学出版社,2022 罗建军.大学Visual C+程序设计案例教程.北京:高等教育出版社,2022 刘路放.Visual C+与面向对象程序设计教程.北京:高等教育出版社,2000 Da
2、vid J.Visual C+技术内幕.潘爱民印译.北京:清华大学出版社,1999 侯俊杰.深入浅出MFC.武汉:华中科技大学出版社,2022 二任务的描述: 1目标:编写基于VC+开发工具并能通过键盘和鼠标进行人机交流俄罗斯方块游戏,界面友好,容易操作的游戏。 2功能描述:通过控制键盘可以进行游戏的开始、暂停、结束;能够控制方块的移动、变形;具有进行经典的俄罗斯方块游戏的一般功能。 3性能描述 2、键盘响应函数流程图 Y N Y 4 Y (1)类1:CAboutDlg()类是建立MFC程序时自动生成的类,俄罗斯方块游戏基本上用不到这个类,故不做解释。 (2)类2:CMainFrame()框架
3、类主要是对游戏的框架进行设计。 数据成员:C StatusBar m_wndStatusBar; 工具栏 CToolBar m_wndToolBar;状态栏 成员函数:1、CMainFrame()构造函数:初始化游戏; 2、CMainFrame()析构函数:删除游戏数据; 3、OnCreate():工具栏的实现; 4、PreCreateWindow()游戏窗口的规格实现; (3)类3:COptionDlg()游戏状态显示类:主要实现对游戏在进行中的一些状态显示比如:级别、下一个方块。 数据成员: int m_oldArea; 区域大小 int m_o ldLevel;等级 int m_oldB
4、lockSytle;背景风格 BOOL m_oldDrawGrid; 成员函数: 1、COptionDlg()初始化界面:用户选择的区域大小代码,及级别代码,方块样式 2、DoDataExchange()数据类型的转换:由键盘消息转换成函数响应消息 3、Onok()当用户按OK按钮(ID是IDOK OK按钮动作。 (4)CSkyblue_RectApp()程序自动生成。 (5)CSkyblue_RectView()视图类:这是本游戏主要编写的地方:实现方块的随机生成、方块的移动、变形。游戏的消行、升级、速度的提升以及游戏的开始和结束。 数据成员: int m_nWidth; 子窗口的宽度 in
5、t m_nHeight; 子窗口的高度 int m_iCol; int m_iRow; 列与行的数量 int m_iLarge;(小方块的大小,它会随着行与列的不同而不同,具体为:12行10列,30个象素的正方形 18行15列,20 24行20列,15 30行25列,12) int m_iLevel;当前的级别,换算成速度的算法为:1500 - m_iLevel*200 int m_iBlockSytle;当前选择的方块显示样式 int m_iStartX; int m_iStartY;游戏区域左上角的坐标 BOOL IsLeftLimit(); 坠物件是否可向左移动 BOOL IsRight
6、Litmit(); int InterFace744;接触面二维数组,记录17种下坠物的14种形态的接触面信息,把该下坠物的某种形态种的4个方块,有接触面则记录方位,无则为-1标识。 int m_currentRect;当前的方块形状 CString m_strArea; CString m_strLevel;当前的样式,下一个将会出现的样式 int m_icurrentStatus; int m_inextStatus; OnDraw中需要用到的设备名称 CPen *m_pBlackPen; CBrush *m_pGrayBrush; CBrush *m_pBlackBrush; BOOL
7、m_bDrawGrid; 是否画网格线 int m_iPerformance;游戏总成绩 BOOL m_bGameEnd;游戏是否已结束,为FALSE表示开始,否则为结束 成员函数1、ActiveStatusToGameStatus()将当前下坠物的位置映射到游戏区域地图数组中去; 2、CSkyblue_RectView()初始化游戏; 3、CSkyblue_RectView()删除游戏数据; 4、CurrentAreaAndLevel()用于生成当前区域大小与级别所对应的汉字描述; 5、DCEnvClear()调取位图资源; 6、DcEnvInitial()绘图环境初始化; 7、DrawGa
8、me(CDC *pDC)绘制整个游戏所在窗口的背景; 8、InvalidateCurrent()刷新当前的区域; 9、IsBottom()判断当前方块是否已到底,并且销行等相关的工作; 10、IsLeftLimit()方块是否还可以左移; 11、IsRightLitmit()方块是否还可以右移; 12、OnCreate(LPCREATESTRUCT lpCreateStruct) 创建一些设备; 13、OnDraw(CDC* pDC)承担所有绘制屏幕工作; 14、OnGameEnd() 游戏结束; 15、OnGameExit()清理内存设备环境,释放资源; 16、OnGameOption()
9、游戏设置; 17、OnGamePaush()游戏暂停; 18、OnGameStart()游戏开始; 19、OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)()处理用户的输入,方块的左,右移,加速及变形; 20、OnOptionArea()用菜单设置区域大小; 21、OnOptionLevel1() 用菜单设置游戏级别: 22、OnTimer()承担所有驱动工作; 23、OnUpdateGameEnd(CCmdUI* pCmdUI)()如果游戏开始,则此游戏结束按钮被开启; 24、OnUpdateGameExit(CCmdUI* pCmdUI) 如
10、果游戏开始,则此退出系统按钮被屏蔽; 25、OnUpdateGamePaush(CCmdUI* pCmdUI) 如游戏开始,则游戏暂停按钮开启 26、Random(int MaxNumber):产生一个最大值不大于指定值的随机正整数(Random); 27、RectArrow(int m_Type):当前方块下降加速,左移,右移 28、RectChange():方块的变形 29、RectDown()当前方块下降 30、RectStatusToActiveStatus(int m_which)初始掉落时,将根据方块的样式决定当前动态数组的值 31、RectStatusToNextStatus(int m_which)初始掉落时,将根据方块的样式决定下一次将要掉下来的动态数组的值 32、 3类之间的关系: 1问题1 (1 )问题描述:所遇问题的描述。( 2)解决办法:该问题的解决办法。2问题2