ImageVerifierCode 换一换
格式:DOCX , 页数:80 ,大小:144.49KB ,
资源ID:25440480      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25440480.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计扫雷小游戏.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程设计扫雷小游戏.docx

1、课程设计扫雷小游戏课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目:扫雷小游戏 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李 晓 虹2016 年 1 月 6日一、系统需求分析随着现在生活节奏的加快,人们在工作学习之余需要一个轻松娱乐的放松环境。因此我编写此软件的目的,一方面作为初学者来了解C+环境下的小程序开发,另一方面使用户能在娱乐休闲的同时拓展思维能力。1.1功能需求分析 功 能 简 介 随机布雷可以由电脑进行随机布雷自定义雷的数量可以由用户自定义雷的数量计时有计时装置,可以自开始扫雷后自动记时难度级别选项各个级别的难度对应雷的数量的不同游戏结束提示在游戏结束

2、时会出现提示对话框,并停止计时自定义雷的数量界面自定义雷的数量界面程序主界面游戏运行的界面1.2 运行环境需求 基本操作系统:win7,win XP1.3硬件需求a.处理器型号:奔腾III及同等型号以上处理器 b.内存容量:512MB以上内存(可运行数据库管理系统)c.外存容量:5G以上硬盘空间 d.联机或脱机:脱机 .输入及输出设备的型号和数量:鼠标、彩色显示器1.4基本素材需求二、总体设计扫雷是单人计算机游戏。游戏的用户界面由小方格组成的战场构成。当游戏开始时,计算机将固定的地雷数随机的放到战场的方格。此游戏还允许玩家指定战场中的地雷数。 参考Windows 操作系统提供的扫雷游戏,改进扫

3、雷游戏程序, 增加以下功能:在主界面中添加一个菜单栏,菜单栏中包括游戏和帮助两个菜单,其中游戏菜单中设置初级、中级、高级、自定义、声音、扫雷英雄榜这几个菜单项,帮助菜单中设置游戏规则和制作人员两个菜单项。 背景说明: a.软件名称:扫雷 b.用户:所有扫雷游戏爱好者三、详细设计3.1 具体要求如下:(1)扫雷游戏分为初级、中级和高级三个级别。单击游戏菜单可以选择“初级”、“中级”和“高级”。三个等级的区别在于,其雷的总数不一样,分别为40、80、120个雷,在相同数目的格子中,雷的数目愈多,其难度自然就愈大。(2)选择级别后将出现相应级别的扫雷区域,这时用户使用鼠标左键单击“开始”便启动计时器

4、。 (3)用户要揭开某个方块,可左键单击它。若所揭方块下有雷,用户便输了这一局,若所揭方块下无雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。 (4)如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。 (5)当用户点中雷时,将有提示出现,胜利时,也有提示出现。 游戏的基本步骤为: 开始:按左键开始游戏,单击表情按钮或菜单重新开始; 左键:按下时,是雷则结束,非雷则显示数字; 数字:表示此数字周围一圈八个格子中雷的数目; 右键:奇数次按下,则用小红旗

5、标记,表示此处是雷;偶数次按下,表示对上 次的否定; 结束:左键单击到雷则结束,标记出所有的雷则结束; 3.2游戏流程运行截图游戏开始时截图,点击游戏菜单下的“开始”可以运行,或者点击开始。右边有计时器,左边是分数。这是游戏中途的截图这是游戏失败的截图四、系统调试在编写程序时,不免会出现这样那样的错误,这时需要我们从各个方向来解决。在调试这个游戏时,遇到一些语法和逻辑方面的问题。但是都得到了解决。五、结果分析能够顺利地运行程序六、总结1.通过设计实验,能综合运用了所学知识,编程解决实际问题,是所学知识掌握得更系统扎实。 2.现自己的知识的欠缺和能力的不足,使我们能够了解自己的不足,能及时补救,

6、使自己得到不断完善 。3.通过设计实验,对所学知识有了更深的理解,了解所学知识在实际生活中的运用。 4.通过这次设计的总结,我会在以后的学习中增强自己理论与实践相结合的能力。附件:部分程序源代码:DlgCustom.cpp:#include stdafx.h#include mine.h#include DlgHero.h#include MineWnd.h#include MineDefs.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/CDlgHero:CDlg

7、Hero(CWnd* pParent /*=NULL*/) : CDialog(CDlgHero:IDD, pParent) /AFX_DATA_INIT(CDlgHero) m_szBHolder = _T(); m_szEHolder = _T(); m_szBRecord = _T(); m_szERecord = _T(); m_szIHolder = _T(); m_szIRecord = _T(); /AFX_DATA_INITvoid CDlgHero:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX);

8、/AFX_DATA_MAP(CDlgHero) DDX_Text(pDX, IDC_B_H, m_szBHolder); DDX_Text(pDX, IDC_E_H, m_szEHolder); DDX_Text(pDX, IDC_B_R, m_szBRecord); DDX_Text(pDX, IDC_E_R, m_szERecord); DDX_Text(pDX, IDC_I_H, m_szIHolder); DDX_Text(pDX, IDC_I_R, m_szIRecord); /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CDlgHero, CDialog) /AFX

9、_MSG_MAP(CDlgHero) ON_BN_CLICKED(IDC_RESET, OnReset) /AFX_MSG_MAPEND_MESSAGE_MAP()/void CDlgHero:SetBHolder(CString holder) m_szBHolder = holder;void CDlgHero:SetBRecord(UINT record) m_szBRecord.Format(%d秒, record);void CDlgHero:SetIHolder(CString holder) m_szIHolder = holder;void CDlgHero:SetIRecor

10、d(UINT record) m_szIRecord.Format(%d秒, record);void CDlgHero:SetEHolder(CString holder) m_szEHolder = holder;void CDlgHero:SetERecord(UINT record) m_szERecord.Format(%d秒, record);void CDlgHero:OnReset() CMineWnd *pMine = (CMineWnd*)AfxGetMainWnd(); pMine-ResetRecord(); m_szBHolder = DEFAULT_HOLDER;

11、m_szBRecord.Format(%d秒, DEFAULT_RECORD); m_szIHolder = DEFAULT_HOLDER; m_szIRecord.Format(%d秒, DEFAULT_RECORD); m_szEHolder = DEFAULT_HOLDER; m_szERecord.Format(%d秒, DEFAULT_RECORD); UpdateData(FALSE);DlgCustom.cpp#include stdafx.h#include mine.h#include DlgCustom.h#include MineWnd.h#ifdef _DEBUG#de

12、fine new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CDlgCustom dialogCDlgCustom:CDlgCustom(CWnd* pParent /*=NULL*/) : CDialog(CDlgCustom:IDD, pParent) /AFX_DATA_INIT(CDlgCustom) m_uHeight = 0; m_uNumber = 0; m_uWidth = 0; /AFX_DATA_INITvoid CDlgCustom:DoDataExchange(CDataExchang

13、e* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CDlgCustom) DDX_Text(pDX, IDC_HEIGHT, m_uHeight); DDX_Text(pDX, IDC_NUMBER, m_uNumber); DDX_Text(pDX, IDC_WIDTH, m_uWidth); /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CDlgCustom, CDialog) /AFX_MSG_MAP(CDlgCustom) /AFX_MSG_MAPEND_MESSAGE_MAP()/void CDlgCustom:On

14、OK() UpdateData(); if (m_uWidth 30) m_uWidth = 30; if (m_uHeight 24) m_uHeight = 24; if (m_uNumber m_uWidth * m_uHeight) m_uNumber = m_uWidth * m_uHeight - 1; CMineWnd *pMine = (CMineWnd*)AfxGetMainWnd(); pMine-SetCustom(m_uWidth, m_uHeight, m_uNumber); CDialog:OnOK();void CDlgCustom:InitData(UINT x

15、Num, UINT yNum, UINT mNum) m_uWidth = xNum; m_uHeight = yNum; m_uNumber = mNum;DlgNewRecord.cpp#include stdafx.h#include mine.h#include DlgNewRecord.h#include MineDefs.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/CDlgNewRecord:CDlgNewRecord(CWnd* pParent /

16、*=NULL*/) : CDialog(CDlgNewRecord:IDD, pParent) /AFX_DATA_INIT(CDlgNewRecord) m_szName = _T(匿名); m_szDesc = _T(); /AFX_DATA_INITvoid CDlgNewRecord:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CDlgNewRecord) DDX_Text(pDX, IDC_EDIT_NAME, m_szName); DDX_Text(pDX, IDC_DE

17、SCRIBE, m_szDesc); /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CDlgNewRecord, CDialog) /AFX_MSG_MAP(CDlgNewRecord) /AFX_MSG_MAPEND_MESSAGE_MAP()/void CDlgNewRecord:SetLevel(UINT level) CString szLevel; if (level = LEVEL_PRIMARY) szLevel = 初级; else if (level = LEVEL_SECONDRY) szLevel = 中级; else if (level = LEVEL_

18、ADVANCE) szLevel = 高级; m_szDesc.Format(已破%s记录nr请留尊姓大名, szLevel);CString CDlgNewRecord:GetName() return m_szName;Mine.cpp#include stdafx.h#include Mine.h#include MineDefs.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/BEGIN_MESSAGE_MAP(CMineApp, CWinApp) /AFX

19、_MSG_MAP(CMineApp) /AFX_MSGEND_MESSAGE_MAP()/CMineApp:CMineApp()/CMineApp theApp;const CString className = _T(MineClass);/BOOL CMineApp:InitInstance() SetRegistryKey(CSER_513_2); m_uXMineNum = GetProfileInt(GAME_SETTING, CUSTOM_XNUM, PRIMARY_XNUM); m_uYMineNum = GetProfileInt(GAME_SETTING, CUSTOM_YN

20、UM, PRIMARY_YNUM); /定义并注册MineWnd窗口 m_pMineWnd = new CMineWnd(); WNDCLASS wc; ZeroMemory(&wc, sizeof(wc); wc.hInstance = AfxGetInstanceHandle(); wc.lpfnWndProc = :DefWindowProc; wc.hbrBackground = NULL; wc.hCursor = LoadCursor(IDC_ARROW); wc.hIcon = LoadIcon(IDR_MAINFRAME); wc.lpszClassName = classNa

21、me; wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU); / register the minewnd class /注册窗口 if (!AfxRegisterClass(&wc) AfxMessageBox(注册类失败!); return FALSE; / get the minewnd coordinates, width and height UINT uWidth = DEFAULT_FRAME_X + m_uXMineNum * MINE_WIDTH + LINE_WIDTH_0 * 3 + SIDE_WIDTH_0 + SIDE_WIDTH_

22、1; UINT uHeight = DEFAULT_FRAME_Y + m_uYMineNum * MINE_HEIGHT + LINE_WIDTH_0 * 3 + SIDE_WIDTH_0 * 2 + SIDE_WIDTH_1 + SHELL_S_H; UINT uXPos = GetSystemMetrics(SM_CXSCREEN) / 2 - uWidth / 2; UINT uYPos = GetSystemMetrics(SM_CYSCREEN) / 2 - uHeight / 2; /创建窗口 if ( !m_pMineWnd-CreateEx( NULL, className,

23、 _T(扫雷), WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, uXPos, uYPos, uWidth, uHeight, NULL, NULL) ) AfxMessageBox(创建主窗口失败!); return FALSE; / 绑定该窗口为主窗口 m_pMainWnd = m_pMineWnd; /显示窗口 m_pMineWnd-ShowWindow(SW_NORMAL); return TRUE;int CMineApp:ExitInstance() delete m_pMineWnd; return CWinApp:ExitInstance()

24、;Mines.cpp#include stdafx.h#include Mine.h#include MineDefs.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/BEGIN_MESSAGE_MAP(CMineApp, CWinApp) /AFX_MSG_MAP(CMineApp) /AFX_MSGEND_MESSAGE_MAP()/CMineApp:CMineApp()/CMineApp theApp;const CString className = _T(

25、MineClass);/BOOL CMineApp:InitInstance() SetRegistryKey(CSER_513_2); m_uXMineNum = GetProfileInt(GAME_SETTING, CUSTOM_XNUM, PRIMARY_XNUM); m_uYMineNum = GetProfileInt(GAME_SETTING, CUSTOM_YNUM, PRIMARY_YNUM); /定义并注册MineWnd窗口 m_pMineWnd = new CMineWnd(); WNDCLASS wc; ZeroMemory(&wc, sizeof(wc); wc.hInstance = AfxGetInstanceHandle(); wc.lpfnWndProc = :DefWindowProc; wc.hbrBackground = NULL; wc.hCursor = LoadCursor(IDC_ARROW); wc.hIcon = LoadIcon(IDR_MAINFRAME); wc.lpszClassName = className; wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU); /

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

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