扫雷游戏实验报告1..doc

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
扫雷游戏实验报告1.

简易版扫雷游戏实验报告 一、 问题描述 模仿windows扫雷游戏,开发一个简易版扫雷游戏系统。 二、功能分析 总体游戏过程分析:在屏幕中央位置显示一个雷区,雷区范围内预先埋设了一定数量的随机分布的地雷;玩家通过上下左右键控制光标在雷区的各个小方块之间移动并做标记;若能正确标记出雷区中的所有地雷,则游戏胜利;否则踩雷,游戏失败。 简易版扫雷游戏要具备以下功能: 开局:首先选择游戏等级,然后生成不同等级的雷区界面。游戏等级分为三级:各等级方块数为——初级:8×8、中级:16×16、高级:24×24;各级地雷数=总方块数/6;雷区每个方块下面或埋藏有1个地雷,或者没有地雷; 挖雷:将光标移到某个方块,并按空格或回车键,可挖开它;若所揭方块下有雷,则踩雷,此时所有含地雷的块都标记?,该局游戏失败;如果方块上出现数字,它代表在它周围的8个方块中共有多少颗地雷; 标记地雷:在光标所在的某个方块上按F或f键,则标记此块下埋着地雷(实际上可能是误标),显示为F。每标记一个地雷,地雷数减少1; 标记疑问:在光标所在的某个方块上按Q或q键,则在某方块上面标一个问号(?),意味着没有把握判定它是否有雷。标记为?的块可在恰当的时候再按标记地雷或挖开; 自动挖开:如果某个数字方块周围的地雷全都标记完,则在该方块上按A或a键,将其剩下的方块挖开; 输入:通过键盘输入相关指示信息; 输出:提示游戏是否成功,是否继续。 三、程序设计 扫雷游戏系统的顶层层次图如下: 从以下几方面“自顶向下”进一步逐步求精: 继续分析已有功能,直到精化出所有子功能,确定模块间接口; 描述精化后每个模块的处理过程; 确定主要的数据及其数据结构; 确定输入输出数据的内外部形式; 界面的设计 以下是详细设计: (1)确定游戏的界面。游戏屏幕中央显示由小方块组成的雷区,小方块的背景显示为浅灰,表示该方块没有被挖开或标记;小方块的背景显示为深灰,表示它已经被挖开或标记为“F”、“?”或“*”;当选中一个方块要操作时,它的边框线为红色。在屏幕的左上方显示游戏是否成功等信息,这也是游戏结果的表现形式。如图2所示。 (2)决定游戏的输入方式。采用键盘,通过光标的移动来选择操作的小方块,根据所敲击的键值来选择游戏的功能。 下面是对键盘功能键的定义: 上,下,左,右键用来移动光标的位置; 回车或者空格键用来挖开光标当前指向的一个方块; F, f 标记当前光标指向的方块有地雷; Q, q 在光标指向方块打一个问号,表示可能有地雷; A , a 自动挖开光标周围的方块; ESC 退出游戏。 (3)确定主要的数据,这里主要是有关雷区的数据。 雷区界面数据 int MAXCOL=640; /*屏幕最大宽度*/ int MAXROW=480; /*屏幕最大高度*/ #define _ROW 24 /*雷区最多方块行数*/ #define _COL 24 /*雷区最多方块列数*/ int ROW=8; /*当前游戏雷区行数*/ int COL=8; /*当前游戏雷区列数*/ #define SIZEX 20 /*雷区方块的水平大小(像素数)*/ #define SIZEY 20 /*雷区方块的垂直大小(像素数)*/ #define STARTX (MAXCOL-COL*SIZEX)/2 /*水平起始位置*/ #define STARTY (MAXROW-ROW*SIZEY)/2 /*垂直起始位置*/ 雷区内部数据 int totalMine; /* 整个雷区所含的地雷总数*/ int table[_ROW][_COL]; /* 数组table的每个元素值记录了雷区对应方块是否有雷:1表示有雷,0表示没有雷*/ int num[_ROW][_COL]; /* 数组num的每个元素值记录了雷区对应方块周围有多少个地雷*/ int flag[_ROW][_COL]; /* 数组flag的每个元素值记录了雷区对应方块当前的状态*/ 在整个系统中table[_ROW][_COL]、num[_ROW][_COL]、flag[_ROW][_COL]是最核心的数据,是雷区的内部表示,游戏的挖雷、标记雷、标记疑问、自动挖开等界面操作,在内部实际上是对这些数据的操作。 方块(i,j)的状态取值: #define UNFLAG 0 /* 表示该方块还没有被打开或者标记*/ #define FLAGED 1 /* 标记该方块有地雷*/ #define QUESTION 20 /* 表示该方块可能有地雷*/ #define EXPLOD 30 /

文档评论(0)

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

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

1亿VIP精品文档

相关文档