(最新版)扫雷游戏实验报告1 下载本文

内容发布更新时间 : 2025/4/2 11:02:51星期一 下面是文章的全部内容请认真阅读。

简易版扫雷游戏实验报告

一、 问题描述

模仿windows扫雷游戏,开发一个简易版扫雷游戏系统。

二、功能分析

总体游戏过程分析:在屏幕中央位置显示一个雷区,雷区范围内预先埋设了一定数量的随机分布的地雷;玩家通过上下左右键控制光标在雷区的各个小方块之间移动并做标记;若能正确标记出雷区中的所有地雷,则游戏胜利;否则踩雷,游戏失败。

简易版扫雷游戏要具备以下功能:

1)

开局:首先选择游戏等级,然后生成不同等级的雷区界面。游戏等级分为三级:各等级方块数为——初级:8×8、中级:16×16、高级:24×24;各级地雷数=总方块数6;雷区每个方块下面或埋藏有1个地雷,或者没有地雷;

2)

挖雷:将光标移到某个方块,并按空格或回车键,可挖开它;若所揭方块下有雷,则踩雷,此时所有含地雷的块都标记?,该局游戏失败;如果方块上出现数字,它代表在它周围的8个方块中共有多少颗地雷;

3)

标记地雷:在光标所在的某个方块上按F或f键,则标记此块下埋着地雷(实际上可能是误标),显示为F。每标记一个

1 地雷,地雷数减少1;

4)

标记疑问:在光标所在的某个方块上按Q或q键,则在某方块上面标一个问号(?),意味着没有把握判定它是否有雷。标记为?的块可在恰当的时候再按标记地雷或挖开;

5)

自动挖开:如果某个数字方块周围的地雷全都标记完,则在该方块上按A或a键,将其剩下的方块挖开;

6) 7)

输入:通过键盘输入相关指示信息; 输出:提示游戏是否成功,是否继续。

三、程序设计

扫雷游戏系统的顶层层次图如下:

从以下几方面“自顶向下”进一步逐步求精:

? 继续分析已有功能,直到精化出所有子功能,确定模块间接口; ? 描述精化后每个模块的处理过程; ? 确定主要的数据及其数据结构; ? 确定输入输出数据的内外部形式; ? 界面的设计 以下是详细设计:

(1)确定游戏的界面。游戏屏幕中央显示由小方块组成的雷区,小方块的背景显示为浅灰,表示该方块没有被挖开或标记;小方块的背景显示为深灰,表示它已经被挖开或标记为“F”、“?”或“*”;当选中一个方块要操作时,它的边框线为红色。在屏幕的左上方显示游

2 戏是否成功等信息,这也是游戏结果的表现形式。如图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 *垂直起始位置*

3