俄罗斯方块Word文档格式.docx

上传人:b****3 文档编号:15751747 上传时间:2022-11-15 格式:DOCX 页数:55 大小:97.23KB
下载 相关 举报
俄罗斯方块Word文档格式.docx_第1页
第1页 / 共55页
俄罗斯方块Word文档格式.docx_第2页
第2页 / 共55页
俄罗斯方块Word文档格式.docx_第3页
第3页 / 共55页
俄罗斯方块Word文档格式.docx_第4页
第4页 / 共55页
俄罗斯方块Word文档格式.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

俄罗斯方块Word文档格式.docx

《俄罗斯方块Word文档格式.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块Word文档格式.docx(55页珍藏版)》请在冰豆网上搜索。

俄罗斯方块Word文档格式.docx

在MDI中,CMainFrame对象是在应用程序类的InitInstance中被创建,而视图则被包含在CChildFrame对象中。

单文档(SDI)应用程序在一个主框架上只有一个子框架窗口,多文档(MDI)应用程序在一个主框架上可以有多个子框架窗口。

●MFC的CView类是所有视图类的基类,主要有两大功能:

1)将与其相关联文档的数据呈现给用户。

2)接受用户对数据的修改,并反馈给文档。

●本实例将要介绍如何利用MFC单文档应用程序框架如何实现俄罗斯方块游戏,游戏界面如下图:

打开VS2005,建立MFC单文档应用程序,实例的项目名称为“Rect”,框架会自动生成4个类。

CRectApp类:

应用程序类,由CWinApp派生而来,负责初始化应用程序的工作,包括创建文档模板。

CMainFrame类:

框架类,负责应用程序框架,包括菜单、工具条等框架资源的加载或创建。

CRectDoc类:

文档类,由CDocument派生而来,主要负责数据的管理与存储、与视图交互等。

CRectView类:

视图类,由CView派生而来,主要负责数据的显示和与用户交互。

●俄罗斯方块游戏截图:

阶段二:

游戏界面的实现

●添加菜单项

选择项目工作区的资源视图,展开menu资源文件夹,双击菜单资源IDR_MAINFRAME,打开菜单编辑器,设计游戏、选项、帮助三个菜单,并分别给它们添加子菜单,具体如下图所示:

(一)

菜单项属性

主菜单

菜单项

ID

提示

游戏(&

G)

&

S.开始游戏

IDM_GAME_START

游戏开始

P.暂停游戏

IDM_GAME_PAUSE

游戏暂停

E.游戏结束

IDM_GAME_END

游戏结束

X.退出游戏

IDM_GAME_EXIT

退出游戏

(二)

选项(&

O)

I.游戏级别

第一级:

初级

IDM_OPTION_LEVEL1

初级:

低速

第二级:

中级

IDM_OPTION_LEVEL2

中级:

中速

第三级:

高级

IDM_OPTION_LEVEL3

高级:

高速

M.音乐

IDM_OPTION_MUSIC

播放音乐

(三)

帮助(&

H)

H.帮助

IDM_HELP_HELP

游戏帮助

A.关于俄罗斯方块

IDM_HELP_ABOUT

关于

阶段三:

游戏控制的实现

●添加成员变量及定义成员函数

选择项目工作区中的类视图,右击CRectView,光标移至添加,分别添加成员变量及成员函数,如下图所示:

成员变量

成员变量名

数据类型

属性

说明

m_nWidth

int

protected

游戏窗口的宽度

m_nHeight

游戏窗口的高度

m_iCol

列的数量

m_iRow

行的数量

m_iLevel

当前游戏级别

m_iLarge

格子大小

m_iBlockSytle

方块显示样式

m_iStartX

游戏区域左上角的坐标

m_iStartY

InterFace[74][4]

接触面二维数组

m_currentRect

当前的方块形状

m_isBottom

bool

标识方块是否已到底

GameStatus[100][100]

标志方块状态的数组

ActiveStatus[4][2]

当前方块的动态位置

NextStatus[4][2]

下一次要出来的方块的模样的数组

m_bGamePause;

标识游戏是否暂停

m_strLevel

CString

当前游戏级别和信息提示字符串

m_icurrentStatus

当前的样式

m_inextStatus

下一个将会出现的样式

m_pBlackPen

CPen*

画笔指针

m_pGrayBrush

CBrush*

画刷指针

m_pBlackBrush

m_bDrawGrid

标识是否画网格线

m_bMusic

标识是否插放背景音乐

m_iPerformance

游戏总成绩

m_bGameEnd

标识游戏是否已结束

m_memDC

CDC

内存设备环境

m_memBmp

CBitmap

内存位图

m_memRectDC

方块内存设备环境

m_hMemRectBmp

HBITMAP

方块内存位图句柄

m_bFistPlay

标识是否是第一次开始游戏

成员函数

成员函数名

函数功能

voidRectChange()

方块变形

boolIsLeftLimit()

下坠物件是否可向左移动

boolIsRightLitmit()

下坠物件是否可向右移动

voidIsBottom()

判断当前方块是否到底

voidRectDown()

当前方块下降

voidRectArrow(intm_Type)

当前方块加速

voidRectStatusToActiveStatus(intm_which)

映射出当前激活状态下的下坠物形态

voidRectStatusToNextStatus(intm_which)

映射出下一下坠物的形态

VoidctiveStatusToGameStatus()

将当前的状态映射到地图游戏区域

intRandom(intMaxNumber)

产生一个随机数

voidStopMid()

关闭背景音乐

voidPlayMid()

播放背景音乐

voidCurrentLevel()

获取当前级别信息

voidInvalidateCurrent()

刷新指定的区域

voidDcEnvInitial(void)

初始化绘图的设备环境

voidDCEnvClear(void)

释放绘图设备环境

voidDrawGame(CDC*pDC)

绘制游戏画面

●CRectView.h中在定义如下宏:

//白色、黑色、蓝色RGB宏

#defineWHITERGB(255,255,255)

#defineBLACKRGB(0,0,0)

#defineBLUERGB(0,0,255)

//游戏级别

#defineLEVEL11//初级

#defineLEVEL22//中级

#defineLEVEL33//高级

//中断操作的运动趋势

#defineLEFT0//向左移动

#defineRIGHT1//向右移动

#defineUP2//向上(变形)

#defineDOWN3//向下移动(加速)

//地图状态

#defineMAP_STATE_EMPTY0//空(未被占据)

#defineMAP_STATE_NOT_EMPTY1//被占据

●在CRectView.cpp中依次为CRectView类成员函数添加源代码

/**********************

*

*构造函数

**********************/

CRectView:

:

CRectView()

{

//第一次开始游戏

m_bFistPlay=TRUE;

//缺省为不是游戏暂停状态

m_bGamePaush=FALSE;

//缺省为不插放背景音乐

m_bMusic=FALSE;

//缺省为画网格线

m_bDrawGrid=TRUE;

//总分值清零

m_iPerformance=0;

//为行,列

m_iRow=12;

m_iCol=10;

//游戏格子和每个方块为*30像素

m_iLarge=30;

//左上角X,Y坐标

m_iStartX=10;

m_iStartY=10;

//缺省级别为级

m_iLevel=LEVEL1;

//第一种样式

m_iBlockSytle=0;

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

当前位置:首页 > 高等教育 > 教育学

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

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