俄罗斯方块游戏--MFC

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

俄罗斯方块3.0版本

一、采用的技术方法

(1)编程方法采用的MFC;

(2)运用编程技术:Windows图形编程技术(基本的绘图CDC/HDC, GDI对象(笔、刷子、字体)、图形(线、矩形、圆形);

(2)菜单、工具条设计与使用;

(3)对话框设计与使用;

(4)系统通用对话框的使用;

(6)基本控件(按钮、静态文本框、文本编辑框、下拉框、列表框等);

(7)实现系统数据的可持久化:要求使用数据库或文件或MFC文档串行化技术实现这一点;

二、达到目标

在我的俄罗斯方块2.0版本基础上,完善游戏功能(如背景音乐和游戏音效的播放,游戏结束,排行榜等),完善游戏的运行规则(确定输赢的准则,积分的获得方式等)。

三、主要步骤

1、添加游戏背景音乐,音效资源;

2、添加两个对话框类即排行榜对话框类和打破记录者更改的对话框类;

3、添加响应排行榜对话框IDD_DIALOG_NEWRECORD和IDD_DIALOG_PH;

4、添加结束菜单ID_VIEW_END和排行榜菜单ID_VIEW_PHB;

5、主要代码说明;

mciSendString("play music\\4.mp3 repeat",NULL,0,NULL); //背景音乐是mp3格式循环播放

mciSendString("stop music\\4.mp3",NULL,0,NULL); //停止播放背景音乐

case VK_LEFT: //左移

russia.Move(1);

PlaySound("music\\btn.wav",NULL,SND_FILENAME|SND_ASYNC); //播放左移音效

break;

case VK_RIGHT: //右移

russia.Move(2);

PlaySound("music\\btn.wav",NULL,SND_FILENAME|SND_ASYNC); //播放右移音效

break;

case VK_DOWN: //下移

russia.Move(3);

PlaySound("music\\btn.wav",NULL,SND_FILENAME|SND_ASYNC); //播放下移音效

break;

case VK_UP: //变换

russia.Move(4);

PlaySound("music\\transform.wav",NULL,SND_FILENAME|SND_ASYNC);

//播放变换方块音效

PlaySound("music\\fadelayer.wav",NULL,SND_FILENAME|SND_ASYNC); //消方块时的音效

PlaySound("music\\lost.wav",NULL,SND_FILENAME|SND_ASYNC); //游戏结束时的音效

响应结束菜单函数

void CMBlockView::OnViewEnd()

{

if(AfxMessageBox("是否结束游戏?",MB_OKCANCEL)==IDOK)

{

russia.end = true; //将结束标志设为真

IfGoon = false; //将继续游戏标志为假

mciSendString("close music\\4.mp3",NULL,0,NULL); //关闭背景音乐

KillTimer(1);

//移除定时器1

}

NewRecord(); //是否破纪录函数

}

响应结束菜单流程图

排行榜功能实现函数

//...........显示排行榜对话框................

void CMBlockView::OnViewPhb()

{

LoadConfig(); //装载配置

CPaihang ph; //排行榜对话框

ph.SetBRecord(m_uPrimary); //显示冠军分数

ph.SetBHolder(m_szPrimary); //显示冠军姓名

ph.DoModal(); //为模态对话框

SaveConfig(); //保存ini信息

}

/............载入配置...............

void CMBlockView::LoadConfig()

{ //----------获取本地目录-------------*/

char

exeFullPath[MAX_PATH]; //MAX_PATH在API 中有定义,为128

CString

strPath; //存储执行程序路径

GetModuleFileName(NULL, exeFullPath, MAX_PATH); //应用程序全路径存放地址

strPath = CString(exeFullPath);

strPath = strPath.Left(strPath.ReverseFind('\\'));

//-----------------------------------*/

strPath += "\\config.ini"; //配置文件名

char strPrimary[80];

GetPrivateProfileString("HOLDER","PrimaryHolder", "匿名

",strPrimary,80,strPath); //从私有初始化文件获取冠军姓名字符串

m_szPrimary=strPrimary; //初始话冠军姓

m_uPrimary = GetPrivateProfileInt("SCORE","Primary",

0,strPath); //从私有初始化文件获取整型分数值

}

//............是否打破记录函数...............

void CMBlockView::NewRecord()

{

int uRecord = m_uPrimary;

相关文档
最新文档