c++俄罗斯方块报告推荐文档Word格式文档下载.docx

上传人:b****6 文档编号:18633221 上传时间:2022-12-30 格式:DOCX 页数:17 大小:1.25MB
下载 相关 举报
c++俄罗斯方块报告推荐文档Word格式文档下载.docx_第1页
第1页 / 共17页
c++俄罗斯方块报告推荐文档Word格式文档下载.docx_第2页
第2页 / 共17页
c++俄罗斯方块报告推荐文档Word格式文档下载.docx_第3页
第3页 / 共17页
c++俄罗斯方块报告推荐文档Word格式文档下载.docx_第4页
第4页 / 共17页
c++俄罗斯方块报告推荐文档Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

c++俄罗斯方块报告推荐文档Word格式文档下载.docx

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

c++俄罗斯方块报告推荐文档Word格式文档下载.docx

4voidCMyDlgDlg:

OnBnClickedHp()//说明按钮命令响应

5voidCMyDlgDlg:

OnBnClickedPause()//暂停按钮命令响应

6voidCMyDlgDlg:

OnClose()//关闭

7voidCMyDlgDlg:

OnGameDe()//说明

8voidCMyDlgDlg:

OnLoad()//载入游戏

9voidCMyDlgDlg:

OnPaint()//背景画面添加

10voidCMyDlgDlg:

OnPause()//暂停

11voidCMyDlgDlg:

OnRange()//等级

12voidCMyDlgDlg:

OnRestart()//重新开始

13voidCMyDlgDlg:

OnSave()//保存

14voidCMyDlgDlg:

OnSound()//声音

15BOOLCMyDlgDlg:

PreTranslateMessage(MSG*pMsg)

16voidCMyDlgDlg:

OnTimer(UINTnIDEvent)

17voidCMyDlgDlg:

OnSysCommand(UINTnID,LPARAMlParam)

18voidCMyDlgDlg:

DoDataExchange(CDataExchange*pDX)

(2)CManager//管理整个游戏区

1voidInitGame(intLevel,intresult,intlineNumber);

//初始化游戏

2voidDrawScene();

//画整个界面

3VoidOnTimer(UINT&

nIDEvent);

4voidOnKeyDown(UINT&

nChar);

5voidOnKeyUp(UINT&

6boolWhetherLoss();

//判断游戏是否结束

7voidSetFree();

//重新开始

8voidHeroWrite();

(3)CBlock//用于画游戏障碍物

voidAddBlock();

voidDrawBlock(CDC*pDC);

boolBlockPanel[30][80];

COLORREFBlockColor;

(4)CMill//用于产生和画出下一个将要出现的方块

voidMadeDiamond();

//用于随机生成游戏方块

voidDrawPrepare(CDC*pDC);

i

ntPreDiamondType;

//7种方块类型intPreDiamondState;

//每种方块的4个状态

RECTMillRect;

//用显示下一个方块的矩形

CSizeGridSize;

//格子的大小

COLORREFMillColor;

//显示下一个方块的矩形颜色

COLORREFPreColor;

//下一个方块的颜色

intprobabilityCake;

//田子

intprobabilityHook;

//钩子

intprobabilitySeven;

//七的形状

intprobabilityHeave;

//凸起

intprobabilityBar;

//一条

intprobabilityTwo;

//2字

intprobabilitySpade;

//铲子

(5)CPanel//画游戏区和的得分区

voidDrawPanel(CDC*pDC);

voidPanelPosToPos(POINT&

PanelPos);

voidPosToPanelPos(POINT&

Pos);

public:

RECTPanelRect;

//游戏区的矩形

COLORREFPanelColor;

//游戏区的背景颜色

intnHGridNum;

//列数

intnVGridNum;

//行数

CRectTextRect;

//输出得分的矩形

(6)Diamond//用于下落的方块

boolMoveDiamondLeft();

//方块向左移

boolMoveDiamondRight();

//方块向右移

boolMoveDiamondDown();

//方块加速下

boolRollDiamond();

//方块变状态

voidDrawDiamond(CDC*pDC);

voidDimDiamond();

//初始化方块的类型,

boolDiamondStruct[7][4][4][4];

//第一维:

方块类型,第二维:

状态,第三、四维:

方块结构;

POINTDiamondPos;

//游戏中方块的坐标

COLORREFDiamondColor;

//游戏中方块的颜色

intDiamondType;

//方块的7种类型

intDiamondState;

//每种类型的4种状态

boolFullLine();

//满了一行

booloverlap();

//判断左边,右边或者到到底下了

详细设计

建立一个一对话框为基础的MFC.项目,添加菜单和菜单项

给对话框添加时钟,即添加消息响应函数OnTimer()。

重写函数PreTranslateMessage(MSG*pMsg);

为各个菜单项添加响应的事件响应处理函数

为对话框添加四个控件按钮,并分别添加事件处理函数

声明一个bool型的变量,用于判断是否暂停游戏

接着添加几个对话框,分别是游戏设置对话框,游戏结束对话框和英雄榜对话框

第一个对话框,游戏设计对话框,Caption为“游戏设置”,ID为“IDD_NAME”,为对话框添加相应的控件

编辑控件的ID为IDC_NAME,三个单选钮的ID分别为:

简单(IDC_LEVEL),一般(IDC_LEVEL2),困难(IDC_LEVEL3)

给编辑控件添加CString类型的变量,变量名为:

m_Name,给第一个单选钮添加变量intlevel;

添加消息响应函数OnPaint(),给确定按钮添加事件处理函数

voidCMyDlgDlg:

OnPaint()

{

if(IsIconic())

{

CPaintDCdc(this);

//devicecontextforpainting

SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);

//Centericoninclientrectangle

intcxIcon=GetSystemMetrics(SM_CXICON);

intcyIcon=GetSystemMetrics(SM_CYICON);

CRectrect;

GetClientRect(&

rect);

intx=(rect.Width()-cxIcon+1)/2;

inty=(rect.Height()-cyIcon+1)/2;

//Drawtheicon

dc.DrawIcon(x,y,m_hIcon);

}

else

CPaintDCdc(this);

CRectrect;

GetClientRect(&

CDCdcMem;

dcMem.CreateCompatibleDC(&

dc);

CBitmapbmpBackground;

bmpBackground.LoadBitmap(IDB_BJ1);

//IDB_BITMAP是你自己的图对应的ID

BITMAPbitmap;

bmpBackground.GetBitmap(&

bitmap);

CBitmap*pbmpOld=dcMem.SelectObject(&

bmpBackground);

dc.StretchBlt(0,0,rect.Width(),rect.Height(),&

dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

//CDialog:

OnPaint();

}

 

游戏结束,添加消息响应函数

voidCGameV:

CPaintDCdc(this);

CRectrect;

GetClientRect(&

CDCdcMem;

dcMem.CreateCompatibleDC(&

CBitmapbmpBackground;

bmpBackground.LoadBitmap(IDB_GV);

BITMAPbitmap;

bmpBackground.GetBitmap(&

CBitmap*pbmpOld=dcMem.SelectObject(&

dc.StretchBlt(0,0,rect.Width(),rect.Height(),&

第三个对话框,排行榜,ID为“IDD_HERO”,添加控件IDC_NAME_EDITIDC_SCORE_EDITIDC_LEVEL_EDIT,并把三个编辑控件的ReadOnly属性选为“true”。

为对话框添加类,类名为CHeroDlg,基类为CDialog。

为三个编辑控件分别添加变量,变量名为m_name,m_level,m_score;

手动添加一个voidSetWriteFlg(BOOLbflg);

函数,用于写如英雄榜,添加重写型OnInitDialog()和DoModal(),添加消息响应函数OnPaint(),再手动添加一个BOOLm_bWriteflg,用于判断是否是写入英雄榜,在构造函数中初始化为m_bWriteflg=FALSE;

接下来添加类

第一个类名为“CManager”,用于管理整个游戏区,第二个类是“CBlock”,用于画游戏障碍物,也就是已经落下的俄罗斯方块;

第三个类是“CMill”,是“工场”是用于产生和画出下一个将要下落的方块,第四个类是“CPanel”,用于在游戏区域画游戏区和得分区,第五个类是“Diamond”,用于下落的方块。

CManager:

voidDrawScene();

//画整个界面

voidOnTimer(UINT&

voidOnKeyDown(UINT&

voidOnKeyUp(UINT?

&

?

boolWhetherLoss();

//判断游戏是否结束

voidSetFree();

//重新开始

voidHeroWrite();

private:

voidPassLevel();

//升级

boolKeyLeft,KeyDown,KeyRight,KeySpace;

//几个游戏操作

public:

CRectClientRect;

//客户区矩形

UINTTimer1;

//为什么要设两个时钟?

一个用来控制左右移动的速度,一个用来控制下落的速度

UINTTimer2;

//是下落的速度

UINTFallTimer;

intLevel;

//等级

intResult;

//得分

intm_nHighScore;

//当前游戏最高分

intm_nHighLevel;

//当前游戏最高级?

intLineNumber;

//消灭的总行数

intSeriesLine;

//每一次消灭的行数

boolSound;

//音效

CStringName;

//玩家名字

};

//定义的方块的7种类型

constintDIAMONDCAKE=0;

constintDIAMONDHOOK=1;

constintDIAMONDSEVEN=2;

constintDIAMONDHEAVE=3;

constintDIAMONDBAR=4;

constintDIAMONDTWO=5;

constintDIAMONDSPADE=6;

CDiamond:

classCDiamond

{

CDiamond();

virtual~CDiamond();

boolMoveDiamondLeft();

boolMoveDiamondRight();

boolMoveDiamondDown();

boolRollDiamond();

voidDrawDiamond(CDC*pDC);

private:

voidDimDiamond();

//初始化方块的类型,状态

boolDiamondStruct[7][4][4][4];

POINTDiamondPos;

COLORREFDiamondColor;

intDiamondType;

intDiamondState;

boolFullLine();

booloverlap();

//判断左边,右边或者到到底下了

};

CBlock:

classCBlock{

CBlock();

virtual~CBlock();

CMill:

class

CMill{

CMill();

virtual~CMill();

voidMadeDiamond();

voidDrawPrepare(CDC*pDC);

intPreDiamondType;

//7种方块类型

intPreDiamondState;

RECTMillRect;

//铲子

CPanel:

CPanel{

CPanel();

virtual~CPanel();

voidDrawPanel(CDC*pDC);

voidPanelPosToPos(POINT&

voidPosToPanelPos(POINT&

RECTPanelRect;

//输出得分的矩形

功能测试

1.进入游戏,输入姓名并选择难度

2.图形的变换

3.图形的移动

4.载入游戏,保存游戏,重新开始,关闭游戏

5.游戏设置

6.游戏规则

7.排行榜

8游戏结束

实验小结

(出现问题,解决方案,收获和体会,不少于300字)

附:

完成的代码

(打印版无需此部分,电子版报告必须包括此部分,要求代码具有良好的编程规范和适当注释)

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

当前位置:首页 > 经管营销

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

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