俄罗斯方块课程设计报告含源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告文档
题目:俄罗斯方块
一.引言
1、编写目的:
通过本课程设计,使学生巩固面向对象程序设计的基本概念、原理和技术,学会使用Visual C++开发工具进行简单面向对象程序的开发,将理论与实际相结合,完成一个小型面向对象程序的设计与实现,并在此基础上强化学生的实践意识,提高其实际动手能力和创新能力。
2、.定义:无
3、参考资料:
郑莉.C++语言程序设计.北京:清华大学出版社,2003
罗建军.大学Visual C++程序设计案例教程.北京:高等教育出版社,2004
刘路放.Visual C++与面向对象程序设计教程.北京:高等教育出版社,2000
David C++技术内幕.潘爱民印译.北京:清华大学出版社,1999
侯俊杰.深入浅出MFC.武汉:华中科技大学出版社,2001
二.任务的描述:
1.目标:编写基于VC++开发工具并能通过键盘和鼠标进行人机交流俄罗斯方块
游戏,界面友好,容易操作的游戏。
2.功能描述:通过控制键盘可以进行游戏的开始、暂停、结束;能够控制方块的移动、变形;具有进行经典的俄罗斯方块游戏的一般功能。
2
4
Y
(1)类1:CAboutDlg()类是建立MFC程序时自动生成的类,俄罗斯方块游戏基本上用不到这个类,故不做解释。
(2)类2:CMainFrame()框架类主要是对游戏的框架进行设计。
数据成员:CStatusBar 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_oldBlockSytle;背景风格
BOOL m_oldDrawGrid;
成员函数:
1、COptionDlg()初始化界面:用户选择的区域大小代码,及级别代码,方块样式
2、DoDataExchange()数据类型的转换:由键盘消息转换成函数响应消息
3、Onok()当用户按OK按钮(ID是IDOK)时调用。覆盖该执行OK按钮动作。包括自动数据检验和,缺省方式是对应用的某些进行数据的检验和。
(4)CSkyblue_RectApp()程序自动生成。
(5)CSkyblue_RectView()视图类:这是本游戏主要编写的地方:实现方块的随机生成、方块的移动、变形。游戏的消行、升级、速度的提升以及游戏的开始和结束。
数据成员:
int m_nWidth; 子窗口的宽度
int 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 IsRightLitmit();
int InterFace[74][4];接触面二维数组,记录1~7种下坠物的1~4种形态的接触面信息,把该下坠物的某种形态种的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 m_bDrawGrid; 是否画网格线
int m_iPerformance;游戏总成绩
BOOL m_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(LPCREATESTRUCT lpCreateStruct) 创建一些设备;
13、OnDraw(CDC* pDC)承担所有绘制屏幕工作;
14、OnGameEnd() 游戏结束;
15、OnGameExit()清理内存设备环境,释放资源;
16、OnGameOption() 游戏设置;
17、OnGamePaush()游戏暂停;
18、OnGameStart()游戏开始;
19、OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)()处理用户的输入,方块的左,右移,加速及变形;
20、OnOptionArea()用菜单设置区域大小;
21、OnOptionLevel1() 用菜单设置游戏级别: