俄罗斯方块课程设计报告含源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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() 用菜单设置游戏级别:

相关文档
最新文档