扫雷游戏课程设计报告.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
类名 成员类 别 类型 成员名 描述 Base 方法 static int Output(const char*) 在当前位置上输出一串字 符 static int GotoXY(int,?int); 取得控制台上光标的坐标 位置并返回 static int GetKey(); 等待按下键,并返 回所对应的按键控 制符 基类 基类?Base: (一)?需求分析 题目: 32、实现一个?N*M?的扫雷游戏 设计要求: 能够实现一个?N*M?的扫雷游戏 a、能够打开一个方格(由于做的是静态显示,故在控制台上方格用‘—’代替),已打开 的方格不能关闭 b、能够标记一个方格,标记方格的含义是对该方格有雷的预测(并不表示真的一定有雷) c、能够给出游戏结果:输、赢 d、N?和?M?可由玩家自己设置 系统功能需求分析: 一个数字和一个雷(boom)。你可以打开(open)一个方格,如果你打开的是 一个 boom,那么就失败;否则就会打开一个数字,该数字是位于[0,8]的一个整数,该数字表 示其所有?邻居方格所包含的雷数,应用该信息可以帮助你扫雷。点击到了某区域发现其周 围没有雷,那么显而易见应该点开周围的区域,拓展空白区域 (二)概要设计 由于知识储备不足,VC?中的?MFC?应用程序又过于复杂,故退而求其次,不再采用动态显示 和界面图形化,采用静态显示来实现扫雷游戏中的主要功能。 用键盘上的‘1’键代替鼠标左击,即打开一个方格查看其属性,已打开的方格不能在关闭; 用键盘上的‘2’键代替鼠标右击,即标记一个方格,标记方格的含义是对该方格有雷的预 测(并不表示真的一定有雷) 用键盘上的‘↑’‘↓’‘←’‘→’四个键来实现光标在控制台上的自由移动, 相当于用鼠标实现光标在图形界面的移动 游戏区域的高度与宽度及总雷数可由玩家自己设定 应题目要求设计了一个基类:Base?和一个继承类:Game。 基类?Base?主要实现一些基本功能:游戏结束时输出游戏的结果:输赢; 返回控制台上光标的位置返回按下键时所对应的按键控制符 类名 成 员 类 别 类型 成员名 描述 Game 属 性 int curX,curY 光标位置 int poolWidth,poolHeight 游戏区域的高度 与宽度 int pool[GAME_MAX_HEIGHT+1][GAME_MAX_W IDTH+1] 用二维数组来存 储雷的相关属性 const static int GMARK_BOOM; GMARK_EMPTY GMARK_MARK; 雷的属性:雷 (*),空,标记 (#) 方 法 int initpool(int,int,i nt) 初始布雷 Int MoveCursor() 移动光标 int huatu(int) 在控制台上把扫雷区域显示 出来 int tryopen(int,int) 在一个坐标点上(x,y)点击, 在该位置上显示其周围的雷 数或拓展空白区域或失败 int shownum(int,int) 得到一个坐标位置周围的雷 数,并把数值返回 int tuozhan(int,int) 如果一个坐标点的周围没有 雷,则拓展空白区域,并递 归拓展 int saolei() 扫雷并判断输赢 继承类?Game?是本程序的主要内容,也是实现扫雷游戏的关键部分。 主要实现的功能:初始化图形界面,把游戏区域在控制台上显示出来;利用随机函数进行 随机布雷,以保证玩家每次玩游戏时雷的分布位置均不同;得到一个坐标位置周围的雷数, 并把数值返回;在一个坐标点上(x,y)点击,在该位置上显示其周围的雷数或拓展空白区域 或失败;如果一个坐标点的周围没有雷,则拓展空白区域,并递归拓展;其中?saolei()函 数是类?Game?里的关键函数体,用来判断玩家按下了哪个键,并作出相应反应(上下左右 四个方向的移动,打开一个方格,标记一个方格),并判断游戏的输与赢 继承类? 继承类?Game: 核心算法: (1)布雷函数: 初始化时把数组里的值全部置为?0,然后利用?srand(),rand()随机机制产生随机数,分 别对列和行取模,便产生了雷的随机位置。但是布雷前,先要判断此随机位置 是否已经布上了雷。 int?Game::initpool(int?width,int?height,int?num) { poolWidth=width; poolHeight=height; if(num0||num=width*height||widthGAME_MAX_HEIGHT||width=0||height=0||hei ghtGAME_MAX_HEIGHT) return?1; //初始是把游戏区域也即是数组里的值全都置为?0 for(int?y=0;y=height+1;y++) {fo

文档评论(0)

dashifuniu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档