俄罗斯方块课程设计报告含源代码Word文档下载推荐.docx

上传人:b****5 文档编号:19513973 上传时间:2023-01-07 格式:DOCX 页数:14 大小:195.90KB
下载 相关 举报
俄罗斯方块课程设计报告含源代码Word文档下载推荐.docx_第1页
第1页 / 共14页
俄罗斯方块课程设计报告含源代码Word文档下载推荐.docx_第2页
第2页 / 共14页
俄罗斯方块课程设计报告含源代码Word文档下载推荐.docx_第3页
第3页 / 共14页
俄罗斯方块课程设计报告含源代码Word文档下载推荐.docx_第4页
第4页 / 共14页
俄罗斯方块课程设计报告含源代码Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

俄罗斯方块课程设计报告含源代码Word文档下载推荐.docx

《俄罗斯方块课程设计报告含源代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块课程设计报告含源代码Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

俄罗斯方块课程设计报告含源代码Word文档下载推荐.docx

3.性能描述

(1)数据精确度:

(2)时间特性:

4.运行环境:

windows98以上操作系统

5.条件与限制:

硬件:

装有Windows操作系统的计算机

软件:

MicrosoftVisualStudio、MicrosoftVisualStudio2005

3.任务设计

1、程序的整个流程图

N

Y

 

2、键盘响应函数流程图

NNY

YN

\NY

NY

Y

N

3、等级管理模块流程图

4、主界面显示模块流程图

N

(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列,20

24行20列,15

30行25列,12)

intm_iLevel;

当前的级别,换算成速度的算法为:

1500-m_iLevel*200

intm_iBlockSytle;

当前选择的方块显示样式

intm_iStartX;

intm_iStartY;

游戏区域左上角的坐标

BOOLIsLeftLimit();

坠物件是否可向左移动

BOOLIsRightLitmit();

intInterFace[74][4];

接触面二维数组,记录1~7种下坠物的1~4种形态的接触面信息,把该下坠物的某种形态种的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)如游戏开始,则[游戏暂停]按钮开启

26、Random(intMaxNumber):

产生一个最大值不大于指定值的随机正整数(Random);

27、RectArrow(intm_Type):

当前方块下降加速,左移,右移

28、RectChange():

方块的变形

29、RectDown()当前方块下降

30、RectStatusToActiveStatus(intm_which)初始掉落时,将根据方块的样式决定当前动态数组的值

31、RectStatusToNextStatus(intm_which)初始掉落时,将根据方块的样式决定下一次将要掉下来的动态数组的值

32、

3.类之间的关系:

四.编写代码

1.问题1

(1)问题描述:

所遇问题的描述。

(2)解决办法:

该问题的解决办法。

2.问题2

……………………………………………

5.程序运行

1、游戏主页面

游戏主界面,上方是开始、暂停、结束、设置按钮。

设置按钮

2、游戏开始:

注:

右上角是下一个方块

右下角分别显示分数、游戏大小和级别。

3、开始时可以按暂停按钮出现下面情况

开始按钮被激活

4、按结束按钮出现

设置按钮激活

5、消行及得分

6、升级

7、游戏结束

3.错误描述及其解决办法

(1)问题1:

问题描述:

解决办法:

(2)问题2

问题描述:

该问题的解决办法

………………………………………

六、感想认识

通过本次课程设计,谈谈对面向对象编程的体会。

七.程序代码

:

Definestheclassbehaviorsfortheapplication.

#ifdef_AFXDLL

Enable3dControls();

SetRegistryKey(_T("

LocalAppWizard-GeneratedApplications"

));

LoadStdProfileSettings(0);

Documenttemplates

CSingleDocTemplate*pDocTemplate;

pDocTemplate=newCSingleDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(CSkyblue_RectDoc),

RUNTIME_CLASS(CMainFrame),m_pMainWnd->

ShowWindow(SW_SHOW);

m_pMainWnd->

UpdateWindow();

returnTRUE;

}

于映射屏幕的内存设备环境

储方块位图的内存资源

生下一个随机下坠物

m_icurrentStatus=m_inextStatus;

m_inextStatus=Random(7);

改新的“下一下坠物”

RectStatusToNextStatus(m_inextStatus);

旧的“下一下坠物”用作当前使用

m_currentRect=m_icurrentStatus;

断当前方块是否已到底

IsBottom();

断游戏是否已结束:

碰了底,且第1行有小方块

if(m_isBottom)

for(i=0;

i<

m_iCol;

i++)

if(GameStatus[0][i])

{

KillTimer

(1);

AfxMessageBox("

游戏已结束!

"

);

for(j=0;

j<

m_iRow;

j++)

for(k=0;

k<

k++)

GameStatus[j][k]=0;

Invalidate(FALSE);

m_bGameEnd=TRUE;

break;

}

}

else

{

RectDown();

CView:

:

OnTimer(nIDEvent);

intCSkyblue_RectView:

Random(intMaxNumber)

{

srand((unsigned)time(NULL));

#endif#endif#endif#endif#endif//!

defined(AFX_SKYBLUE_RECTVIEW_H__D33E8EC7_BE69_4161_9B54_FB14CBA27F2E__INCLUDED_)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1