扫雷软件设计报告参考模板

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

摘要
此次设计的一款扫雷游戏,其功能类似于Windows操作系统自带的扫雷游戏。

首先介绍了制作游戏的整体思路及整个游戏设计的流程规划,然后介绍了雷区的布置及地雷随机产生的实现方法;重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为重要,鼠标事件是利用鼠标所发出的信息了解使用者的意图,进而做出相对应的动作,而清除未靠近地雷区方块由于引进了“递归”这个概念而使其简单化。

本次设计只是完成了扫雷游戏的基本功能,在细节方面仍有待完善。

关键词:扫雷、事件、递归
1引言 (1)
1.1课题背景 (1)
1.2本文的主要工作 (1)
2 需求分析及开发环境 (1)
2.1系统目标 (1)
2.2系统应具备的基本功能 (1)
2.3开发环境及工具 (2)
3系统总体设计 (2)
3.1基本简介 (2)
3.2功能模块设计 (3)
4 系统流程与实现 (5)
4.1系统流程 (5)
4.2游戏界面介绍 (6)
总结 (9)
参考文献 (9)
1.1课题背景
扫雷是一个相对来说较为简单的小游戏。

而且由于自身能力有限的问题,所以对于首次尝试制作小游戏的我是一个比较不错的选题。

由于从未制作过任何的软件,为了将自己的所学知识加以运用,制作过程很大上的程度借鉴了别人的思想。

但是我希望通过此次制作和学习过程,可以了解软件设计的方法。

1.2本文的主要工作
本文主要工作时相对较为详细的阐述此个小游戏,也就是扫雷的制作过程,遇到的问题,还有解决办法。

所采用的工具软件和使用的方法。

2 需求分析及开发环境
2.1系统目标
游戏开始时,系统会在雷区的某些小方块中随机布下若干个地雷。

安放好地雷的小方块称之为雷方块,其他的称之为非雷方块。

部署完毕后,系统会在其他非雷方块中填充一些数字。

某一个具体数字表示与其紧邻的8个方块中有多少雷方块。

玩家可以根据这些信息去判断是否可以打开某些方块,并把认为是地雷的方块打上标识。

如果某个数字方块周围的地雷全都标记完,可以指向该方块并同时点击鼠标左右键,将其周围剩下的方块挖开。

如果编号方块周围地雷没有全部标记,在同时点击鼠标左右键时,其他隐藏或未标记的方块将被按下一次(即闪烁一下)。

当玩家将所有地雷找出后,其余的非雷方块区域都已打开,此时游戏胜利。

在游戏过程中,一旦错误地打开了雷方块则立即失败,游戏结束;当玩家标识的地雷数超过程序设定,虽然打开了全部其余方块,游戏仍然不会结束。

2.2系统应具备的基本功能
1、从外观上分析:
菜单
方块
地雷数目显示
计时器
有雷标识
无雷标识
红叉显示
胜利画面
失败画面
2、从操作上分析
鼠标事件:
点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。

如果没雷,则显示周围雷数,如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止,并显示雷的数目。

点击鼠标右键于未知区域,则显示小红叉,将其置为有雷。

在该位置再次点击右键则视为取消设置,红叉消失。

菜单设置:
点击菜单可以选择重置现在的雷区,选择设置可以设置雷区的大小和雷得数目2.3开发环境及工具
Windos XP系统、Ecliipse 6以上
3系统总体设计
3.1基本简介
(1) 扫雷游戏可以自己设置扫雷区域的大小、地雷的数目。

(2) 设置好后将出现相应的扫雷区域,这时用户可以开始点击雷区。

(3) 用户要揭开某个方块,可单击它。

若所揭方块下有雷,用户便输了这一局,若所
揭方块下五雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。

(4) 如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷
的图标,即给出一个扫雷标记。

用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。

(5) 扫雷失败后。

用户可以选择继续。

3.2功能模块设计
布雷
鼠标事件
鼠标左击事件流程图
(1)点击未知区域。

(2)是地雷,游戏结束。

(3)不是地雷,判断周围地雷数目是否为0,为0则显示空白格子,并拓展周围格子,不为0则显示地雷数
空白格子拓展
4 系统流程与实现4.1系统流程
4.2游戏界面介绍
布雷方法
private void SetBomb(int count) {
int counter = 0;
int tempint;
while(counter != count) {
tempint = (int) (Math.random()*(this.myRows * this.myColumns));
if(!this.myButton[tempint].GetStatus()) {
this.myButton[tempint].SetStatus(true);
counter++;
}
}
}
监听点击扫雷方法
private void CheckButton(ExtendButton TempButton) {
if(TempButton.GetStatus()) {
this.timer.stop();
JOptionPane.showMessageDialog(null, "You Failed!", "Game",RMATION_MESSAGE);
this.ShowBomb();
int i = JOptionPane.showConfirmDialog(null, "是否要继续?", "消息", JOptionPane.YES_NO_OPTION);
if(JOptionPane.YES_OPTION == i) {
SetExtendButton();
} else {
this.dispose();
}
return;
}
int[] CircleNum = new int[8];
int temp = 0;
if(!TempButton.GetVisited()) {
CircleNum[0] = TempButton.GetPostion() - this.myColumns- 1;
CircleNum[0] = (CircleNum[0] < 0 || (CircleNum[0] + 1) % this.myColumns == 0) ? -1 : CircleNum[0];
CircleNum[1] = TempButton.GetPostion() - this.myColumns;
CircleNum[1] = (CircleNum[1] < 0) ? -1 : CircleNum[1];
CircleNum[2] = TempButton.GetPostion() - this.myColumns+ 1;
CircleNum[2] = (CircleNum[2] < 0 ||CircleNum[2] %
this.myColumns == 0) ? -1 : CircleNum[2];
CircleNum[3] = TempButton.GetPostion() - 1;
CircleNum[3] = ((CircleNum[3] + 1) % this.myColumns== 0) ? -1 : CircleNum[3];
CircleNum[4] = TempButton.GetPostion() + 1;
CircleNum[4] = (CircleNum[4] % this.myColumns== 0) ? -1 : CircleNum[4];
CircleNum[5] = TempButton.GetPostion() + this.myColumns -1;
CircleNum[5] = (CircleNum[5] > (this.myRows *
this.myColumns - 1) || (CircleNum[5] + 1) % this.myColumns == 0) ? -1 : CircleNum[5];
CircleNum[6] = TempButton.GetPostion() + this.myColumns;
CircleNum[6] = (CircleNum[6] > (this.myRows *
this.myColumns - 1)) ? -1 : CircleNum[6];
CircleNum[7] = TempButton.GetPostion() + this.myColumns +1;
CircleNum[7] = (CircleNum[7] > (this.myRows *
this.myColumns - 1) || CircleNum[7] % this.myColumns == 0) ? -1 : CircleNum[7];
for (int i = 0; i < 8; i++) {
if(CircleNum[i] != -1) {
if(myButton[CircleNum[i]].GetStatus()
&& !myButton[CircleNum[i]].GetVisited()) {
temp++;
}
}
}
扫雷软件设计报告
总结
在程序代码基本完成后,经过不断的调试和修改,最后测试本次所设计的扫雷游戏能够正常运行,没有出现明显的错误和漏洞,但是在一些细节方面仍然需要完善,比如在游戏中可以假如一些声音的提示,在游戏完成和失败的时候弹出一些小的Flash动画,还有就是可以完善一下扫雷英雄榜等等。

总的来说本次设计在功能上已经基本达到要求,在其他细节方面有待以后完善。

通过这次比较完整的一个程序的设计,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的专业基本知识,解决实际问题的能力,同事也提高我查阅文献资料、对程序整体的把握等其他能力水平,并且通过对整体的掌控,对局部的取舍,以及对细节的处理,都使我的能力得到了锻炼,经验得到了丰富。

各种组件的运用,各种算法的应用,各种控件的利用我都是随着设计的不断深入而不断的熟悉并逐步掌握的。

和老师以及同学的沟通更使我对程序整体的规划与设计有了新的认识,也对自己提出了新的要求。

提高是有限的但提高也是全面的,正是这一次设计让我积累了许多实际经验,也必然会让我在未来的工作学习中表现出更高的应变能力和理解力。

参考文献
陆迟.Java语言程序设计(第2版).北京:电子工业出版社,2008.12
叶核亚,陈立.Java2程序设计实用教程.北京:电子工业出版社,2003.5
焦玲,王兴玲.Java程序设计.北京:中国铁道出版社,2006.3
贾素玲,王强.Java编程基础.北京:高等教育出版社,2005.4
聂哲,袁梅冷,杨淑萍.Java面向对象程序设计.北京:高等教育出版社,2005.6
友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。

相关文档
最新文档