扫雷游戏报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;