C++设计扫雷游戏报告Word文档下载推荐.docx

上传人:b****2 文档编号:2969023 上传时间:2023-05-01 格式:DOCX 页数:43 大小:305.94KB
下载 相关 举报
C++设计扫雷游戏报告Word文档下载推荐.docx_第1页
第1页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第2页
第2页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第3页
第3页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第4页
第4页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第5页
第5页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第6页
第6页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第7页
第7页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第8页
第8页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第9页
第9页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第10页
第10页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第11页
第11页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第12页
第12页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第13页
第13页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第14页
第14页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第15页
第15页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第16页
第16页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第17页
第17页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第18页
第18页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第19页
第19页 / 共43页
C++设计扫雷游戏报告Word文档下载推荐.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++设计扫雷游戏报告Word文档下载推荐.docx

《C++设计扫雷游戏报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++设计扫雷游戏报告Word文档下载推荐.docx(43页珍藏版)》请在冰点文库上搜索。

C++设计扫雷游戏报告Word文档下载推荐.docx

能够显示主菜单和界面;

能够接收鼠标输入功能;

能够根据规则翻转相应的格子;

能够标记指定格子的功能;

游戏胜负判断功能;

英雄榜记录更新;

游戏支持背景音乐功能;

游戏提供帮助说明。

实训分工安排

本程序由两人共同完成

其中**同学主要负责程序代码编写调试的工作;

***同学主要负责游戏界面设计的工作;

要求

两人合作完成同一项目

分工合作后汇总进行统一测试与更正

使用VisualC++6.0实现用户界面

使用实训室及主要设施设备

L4B305

联想商用电脑

D2527

联想Y460

实训成果

1完成了此次实训容

2完成了实训报告

3提高了自己的合作能力以及编程能力

摘要

游戏业发展一日千里,该行业极大的影响和改变了人们的生活和娱乐方式,游戏为消费者提供丰富多彩的虚拟空间,使消费者可以自由自在的享受虚拟世界的乐趣,实现自己在现实生活着那个可能永远不能实现的梦想,满足了消费者的心理和精神需求。

扫雷游戏是Windows操作系统自带的一个小游戏,过去的几年里Windows操作系统历经数次换代,变得越来越庞大、复杂,但这个可爱的小游戏在任何版本的Windows操作系统里去却依然保持着原貌。

但几乎每个电脑使用者都接触过它,并且深爱着这款小游戏。

扫雷游戏是比较经典的一款小游戏,实现它的方法很多,可以用很多不同算法和语言实现,如C,C++,VB,JAVA等。

本论文研究的是以VisualC++6.0为开发环境,设计并开发一款扫雷游戏,其功能类似于Windows操作系统自带的扫雷游戏。

论文首先介绍了制作游戏的整体思路及整个游戏设计的流程规划,然后介绍了雷区的布置及地雷随机产生的实现方法;

重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解使用者的意图,进而做出相对应的动作,而清除未靠近地雷区方块由于引进了“递归”这个概念而使其简单化。

关键字:

扫雷;

VisualC++6.0;

事件;

递归

 

I

Abstract

Gameindustrydevelopsbyleapsandbounds,andithasagreatimpactonthewaypeopleliveandentertainment,gamesprovideconsumerswithavarietyofvirtualspace,sothatconsumerscanenjoythefreefunofthevirtualworld,achievethedreamthatmayneverachieveinreallife,andsatisfythepsychologicalandspiritualneedsconsumer.

TheSweepMineGameisasmallgamethattheWindowsoperatingsystemhave.OverthepastfewyearstheWindowsoperatingsystemhasexperiencedanumberofchang,andbecomemuchlargerandmorecomplexed.However,thislovelygameinanyversionoftheWindowsoperatingsystemhaskeeptheoriginalappearance.Almosteverycomputerusershavecomeintocontactwithit,andlovethisgame.

TheSweepMineGameisanclassicallittlegame,andtherearemanywayscanachieveit,wecanusemanydifferentalgorithmsandlanguages,suchasC,C++,VB,JAVAandsoon.ThisstudyisbasedonVisualC++6.0todesignedandmadethesweepminegame,it’sfunctionissimilartothegamethattheWindowsoperatingsystemhas.Firstweintroducedthewholeideaofmakingthegameandtheprocessplanningofthegamedesign,thenintroducedthemethodofthelayoutofminefieldsandminesrandomlygenerated.Andfocusesontheprocessofdealingwiththeincidentinthegame,amongthem,themouseeventsandclearanceofunexplodedlandminesaroundtheboxarethetwomostimportantthing,themouseeventsistousethemessagethatthemousegivetounderstandthetheuser'

sintent,thenmakethecorrespondingaction,andclearanceofunexplodedlandminesaroundtheboxhasbecamesimplywiththeintroductionofthe"

recursive"

.

Keywords:

SweepMine,;

VisualC++6.0;

Affairs,;

Recursion

摘要·

·

Abstract·

1引言

1.1系统概述

我所设计的扫雷游戏包含以下功能:

1.2需求分析

随着世界经济的长足发展和计算机技术的日益成熟,计算机被应用到人类活动的各个领域,各种应用软件也相继问世,这其中有相当一部分是游戏软件。

使用游戏软件自然是为了满足人们对娱乐性的要求,而有些软件大都采用3D设计对系统配置的要求较高。

在众多游戏软件中,也不乏一些小游戏的身影,它们对系统的配置要求较低。

能够满足人们对娱乐性的需求,是人们在完成工作娱乐时候的最好选择。

在各种操作系统中都附带了一些小的游戏,而这些游戏也成为电脑用户软件中不可或缺的一部分。

扫雷游戏是比较经典的一款小游戏,过去的几年里Windows操作系统历经数次换代,变得越来越庞大、复杂,但这个可爱的小游戏在任何版本的Windows操作系统里去却依然保持着原貌。

作为本系统的开发工具,MicrosoftVisualC++6.0成为首选。

它具有可视化的编程界面、详细的提示、以及完善的帮助文档,使得软件开发人员感到无比的亲切感。

1.3运行环境

Intel®

Pentium®

2及以上的处理器,32M以上存,20M以上硬盘空间。

Microsoft®

WindowsTM22000或XP以上操作系统。

800×

600或以上的屏幕分辨率。

2概要设计

2.1设计思路

在设计之前,我们先来了解这款游戏的规则:

在不打开任何藏有地雷的格子情况下,以最快的速度找出所有的地雷。

如果在打开格子的过程中,不小心翻开(踩到)藏有地雷的格子,则宣告失败(游戏结束),惟有将所有不含地雷的格子打开,游戏才算成功。

游戏的操作方面主要以鼠标为主,当鼠标指针对准未翻开的格子按下左键时即表示翻开格子,当鼠标指针对准未翻开的方块按下右键时即表示标示或疑示地雷,反复按下右键则格子会以未标示→标示→疑似三者关系不断循环。

游戏者可以通过地雷区的数字提示了解以数字为中心的其周边八个格子所含的地雷数,假若翻开的格子显示数字“3”,则表示以其为中心的周边格子藏有3个地雷。

当按下的格子不是地雷,且周边八个格子也都没有地雷时,格子会以被翻开格子的八个方向将空白格子翻开。

2.2模块功能介绍

游戏共由四个类和一个模块组成,如图1所示。

Ø

主界面对话框类:

主要负责主界面、菜单及各个窗口类对象的创建和调用等处理。

扫雷窗口类:

主要负责接收玩家鼠标输入的打开格子位置、格子变换、花费时间及地雷格子的显示等处理。

英雄榜对话框类:

主要负责游戏等级记录的更新。

背景音乐播放模块:

主要负责游戏中背景音乐的播放。

帮组对话框类:

主要负责帮助提示的显示及其它显示功能。

图1游戏主要类结构

2.3模块结构图

2.3.1游戏主界面的设计

扫雷的游戏主界面设计,如图2所示。

图2设计的游戏主界面

2.3.2游戏主菜单结构的设计

扫雷的游戏菜单设计,如图3所示。

图3设计的游戏菜单结构

2.4程序流程图

扫雷游戏程序流程图,如图4所示。

图4程序流程图

2.5功能设计分工

我和***同学一组。

我主要负责程序代码的编写运行和调试等;

***同学主要负责位图设计、界面设计等。

3详细设计

3.1游戏菜单的实现

在扫雷游戏中,通过如下几个步骤即可实现添加游戏的菜单。

(1)在扫雷游戏工程的资源中添加一个菜单资源,其属性如表1所示。

(2)给每个菜单栏添加响应函数到CMineDlg类中。

(3)菜单响应函数的实现,如代码1所示。

表1主菜单属性

ID

类别

说明

IDR_MAIN_MENU

弹出菜单

游戏的主菜单

IDR_START_GAME

菜单栏

开始游戏

IDR_EXIT_GAME

退出游戏

IDR_PLAY_MUSIC

选择菜单

播放音乐

IDR_HELP

帮助

IDR_ABOUT

关于

代码1菜单响应函数的实现

BEGIN_MESSAGE_MAP(CMineDlg,CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

//菜单资源与函数映射表

ON_COMMAND(IDR_ABOUT,OnAbout)

ON_COMMAND(IDR_EXIT_GAME,OnExitGame)

ON_COMMAND(IDR_HELP,OnHelp)

ON_COMMAND(IDR_PLAY_MUSIC,OnPlayMusic)

ON_COMMAND(IDR_START_GAME,OnStartGame)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

BOOLCMineDlg:

:

OnInitDialog()//初始化对话框

{

CDialog:

OnInitDialog();

m_bStart=1;

//设置游戏状态

InitMenu();

//初始化菜单

returnTRUE;

//初始化成功

}

//省略部分代码

voidCMineDlg:

OnOK()//单击“确认”按钮响应函数

OnOK();

OnCancel()//单击“退出”按钮响函数

OnCancel();

OnAbout()//关于菜单栏响应函数

CAboutDlgdlg;

//创建关于对话框

dlg.DoModal();

//弹出关于对话框

OnExitGame()//退出菜单栏响应函数

//调用基类退出函数

OnHelp()//帮助菜单栏响应函数

CHelpDlgdlg;

//创建帮助对话框

//弹出帮助对话框

OnPlayMusic()//背景音乐菜单栏响应函数

CWnd*pMain=AfxGetMainWnd();

CMenu*pMenu=pMain->

GetMenu();

//判断播放音乐菜单当前状态

BOOLbCheck=(BOOL)pMenu->

GetMenuState(IDR_PLAY_MUSIC,MF_CHECKED);

if(m_bStart)

{

if(bCheck)

{

pMenu->

CheckMenuItem(IDR_PLAY_MUSIC,

MF_BYCOMMAND|MF_UNCHECKED);

}

else

MF_BYCOMMAND|MF_CHECKED);

PlayBackMusic(!

bCheck);

//调用播放背景音乐功能函数

}

OnStartGame()

mine.StartGame();

//调用游戏开始接口函数

InitMenu()//初始化菜单函数

pMenu->

CheckMenuItem(IDR_PLAY_MUSIC,MF_BYCOMMAND|MF_UNCHECKED);

3.2游戏帮助对话框的实现

扫雷游戏中的帮助是使用一个对话框来实现的。

其实现步骤如下。

(1)添加一个对话框资源到工程中,并填写说明文字,如图5所示。

图5帮助对话框

(2)编写一个CHelpDlg对话框类,主要是加载IDD_HELP对话框资源。

通过资源中的文字说明对游戏操作方法进行描述。

同时只包含单击“知道了”按钮的响应函数。

其类声明如代码2所示。

代码2CHelpDlg对话框类声明

#if!

defined(AFX_HELPDLG_H__)

#defineAFX_HELPDLG_H__

//HelpDlg.hCHelpDlg类声明头文件

//CHelpDlgdialog对话框类

classCHelpDlg:

publicCDialog//公共继承于CDialog类

public:

CHelpDlg(CWnd*pParent=NULL);

//构造函数

//对话框资源

enum{IDD=IDD_HELP_DLG};

//加载资源

//重载函数

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

//DDX/DDVsupport

protected:

virtualvoidOnOK();

//单击“确定”按钮响应函数声明

DECLARE_MESSAGE_MAP()

};

#endif

(3)CHeroDlg对话框类的实现,需要实现对话框类的构造函数、析构函数和“知道了”按钮响应函数,其代码如代码3所示。

代码3对话框类的实现

//HelpDlg.cpp:

implementationfile

#include"

stdafx.h"

//插入头函数

Mine.h"

HelpDlg.h"

//插入类声明头文件

//CHelpDlgdialog对话框类实现

CHelpDlg:

CHelpDlg(CWnd*pParent/*=NULL*/)//构造函数

:

CDialog(CHelpDlg:

IDD,pParent)

voidCHelpDlg:

DoDataExchange(CDataExchange*pDX)

DoDataExchange(pDX);

BEGIN_MESSAGE_MAP(CHelpDlg,CDialog)

//CHelpDlgmessagehandlers消息响应函数

OnOK()//单击“知道了”按钮响应函数

3.3游戏英雄榜对话框的实现

扫雷游戏英雄榜的实现,分为如下步骤:

(1)创建一个资源对话框,并添加响应的控件,如图6所示。

图6英雄榜对话框资源

(2)配置(setup.ini)文件格式如下:

[HERO]

Name=XXX

Time=0

(3)添加CHeroDlg类,其中需要包含IDD_HERO_DLG对话框资源和“设置可写记录标志”接口函数声明,用于外部函数调用时,设置是否对配置文件进行写操作。

类的声明如代码4所示。

代码4CHeroDlg类的声明

defined(AFX_HERODLG_H__)

#defineAFX_HERODLG_H__

//HeroDlg.h头文件

//CHeroDlgdialog

classCHeroDlg:

publicCDialog

voidSetWriteFlg(BOOLbflg);

//接口函数,设置可记录标志变量

CHeroDlg(CWnd*pParent=NULL);

//standardconstructor构造函数

enum{IDD=IDD_HERO_LIST};

CStringm_name;

//保存变量

intm_time;

//保存时间变量

public:

virtualintDoModal();

//弹出对话框函数声明

//单击“久仰”按钮响应函数声明

private:

BOOLm_bWriteflg;

//记录标志变量

(4)CHeroDlg类的实现过调用系统API函数,来对配置文件进行读写操作。

而“设置读写标志”接口函数,是对类的一个成员变量m_bWrite进行赋值操作,达到写入或者读取的区分。

其代码如代码5所示。

代码5CHeroDlg类的实现

//HeroDlg.cpp:

implementationfile源文件

//插入头文件

HeroDlg.h"

//CHeroDlgdialog对话框

CHeroDlg:

CHeroDlg(CWnd*pParent/*=NULL*/)//构造函数

CDialog(CHeroDlg:

m_bWriteflg=FALSE;

//初始化写标志变量为假

voidCHeroDlg:

//变量与资源映射

//{{AFX_DATA_MAP(CHeroDlg)

DDX_Text(pDX,IDC_NAME_EDIT,m_name);

DDX_Text(pDX,IDC_TIME_EDIT,m_time);

//}}AFX_DATA_MAP

BEGIN_MESSAGE_MAP(CHeroDlg,CDialog)

//{{AFX_MSG_MAP(CHeroDlg)

ON_BN_CLICKED(IDOK_BTN,OnBtn)//按钮与函数映射

//CHeroDlgmessagehandlers消息句柄

SetWriteFlg(BOOLbflg)//设置写入标志

m_bWriteflg=bflg;

intCHeroDlg:

DoModal()//弹出对话框

charpszTmp[128]={0};

//读取配置文件

GetPrivateProfileString("

HERO"

"

name"

"

pszTmp,127,"

.\\hero.ini"

);

//读入

m_name=CString(pszTmp);

if(!

m_bWriteflg)

GetPrivateProfileString("

time"

0"

pszTmp,127,"

//读入等级

m_time=atoi(pszTm

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2