扫雷游戏报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《扫雷游戏》程序设计报告

院系中兴电信学院

专业计算机科学与技术

班级7B1431

小组成员强建敏张伟田志杰赵立

一、开发环境

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

Microsoft®WindowsTM22000或XP以上操作系统。

800×600或以上的屏幕分辨率

microsoft visual studio 2010

二、系统功能

游戏共由两个类组成

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

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

三、系统设计

1、扫雷格子模块功能设计

地雷格子的处理是扫雷游戏的核心内容,包括如下几个部分。

(1)地雷铺设模块。

游戏中的地雷个数可以根据玩家设定。地雷分布是调用随机数发生函数生成随机数。利用随机数去除最大行数或者最大列数,得到放置地雷行列坐标。然后分别防止地雷到不同的行和列的格子中去。

(2)自动打开周围不是地雷的格子。

在游戏中,当玩家单击的格子周围没有地雷格子时,就需要程序自动地把周围的格子自动打开来提高玩家的效率。

以上的实现,由如下代码实现。

public void LoadGame()

{

int x = Convert.ToInt16(cbX.Text);//行坐标

int y = Convert.ToInt16(cbY.Text);//纵坐标

intmine_count = Convert.ToInt16(cbMinecount.Text);//地雷个数

mines = new List();

mines = CreateMines(x, y, mine_count);//生成随机地雷集合

intbtnx = plMines.Location.X + 5;

intbtny = 5;

for (int i = 0; i < x; i++)

{

for (int j = 0; j < y; j++)

{

Button btn = CreateButton(btnx, btny);

btn.Tag = j + "," + i;

plMines.Controls.Add(btn);

btnx += 40;

}

btnx = plMines.Location.X + 5;

btny += 40;

Application.DoEvents();

}

}

2、玩家输入模块功能设计

在扫雷游戏中,用的最多的就是鼠标的输入。而鼠标输入又分为鼠标左键单击和右键单击两种处理类型。

1. 鼠标左键的处理

要实现鼠标左键的处理,需要如下几个步骤。

(1)接收玩家在界面上的鼠标左键输入信息。

(2)对当前鼠标的坐标进行判断。

(3)当在按钮区时,调用控制按钮的处理函数。

(4)当在地雷区时,如果当前游戏的状态是等待输入或者正在运行时,就得到当前选中的格子指针;反之,不进行响应。

(5)在得到格子指针后,对选中格子的状态进行判断。如果是正常的格子,即未被打开过的格子,就转到格子处理函数;如果不是不是能够的格子,则不进行响应。

2. 鼠标右键的处理

要实现鼠标右键的处理,需要如下几个步骤。

(1)接收玩家在界面上的鼠标右键输入信息。

(2)对当前鼠标的坐标进行判断。

(3)当在地雷区时,如果当前游戏的状态是等待输入或者正在运行时,就得到当前选中的格子指针;反之,不进行响应。

(4)根据当前格子的状态进行变化。其变化规则为:如果是正常状态,则变成标记(★)状态;如果是标记状态,则变成未知(?)状态;如果是未知状态,则变成正常状态。

voidbtnMine_MouseUp(object sender, MouseEventArgs e)

{

if (e.Button.ToString().ToUpper() == "RIGHT") {

Button btn = (Button)sender;

if (btn.Text == "")

{

btn.Text = "★";

btn.BackColor = Color.YellowGreen;

}

else if (btn.Text == "★")

{

btn.Text = "?";

btn.BackColor = Color.Salmon;

}

else if (btn.Text == "?")

{

btn.Text = "";

btn.BackColor = Color.Transparent;

}

IsSuccess();

}

}

3、游戏规则模块功能设计

游戏规则模块的实现,主要由游戏胜利和游戏结束判断函数组成。通过对游戏的结果进行判断,实现扫雷游戏的规则。

(1)游戏胜利的判断

通过遍历整个地雷数组,查找是否全部的地雷格子已经被标记或者找出来。如果已经全部被找出来或者标示出来,那么说明玩家胜利。反之,说明玩家未胜利,需要继续游戏。

(2)游戏结束的判断

当玩家打开一个格子时,就对当前格子进行判断。如果是地雷,说明玩家不幸踩雷。游戏以失败结束。而如果不是地雷,就对玩家选中的格子周围的标示进行判断,如果有判断错误的格子,也说明玩家失败游戏结束。

游戏胜利判断代码:

public void IsSuccess()

{

bool Success = false;

intmcount = 0;

相关文档
最新文档