数据结构课程设计.docx
- 文档编号:3433176
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:46
- 大小:170.82KB
数据结构课程设计.docx
《数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计.docx(46页珍藏版)》请在冰豆网上搜索。
数据结构课程设计
西安文理学院软件学院
课程设计报告
设计名称:
数据结构课程设计
设计题目:
实现一个n*m的扫雷程序
学生学号:
1402120427
专业班级:
12级软件工程4班
学生姓名:
王森
学生成绩:
指导教师(职称):
袁溪讲师
课题工作时间:
2014.6.16至2014.6.27
说明:
1、报告中的任务书、进度表由指导教师在课程设计开始前填写并发给每个学生。
2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。
3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。
答辩由指导教师实施。
4、报告正文字数一般应不少于3000字,也可由指导教师根据本门综合设计的情况另行规定。
5、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按不及格处理。
软件学院课程设计任务书
学生姓名
王森
学号
1402120427
专业班级
12级软件工程4班
设计题目
实现一个n*m的扫雷程序
内容概要:
运用Java编写一个n*m的扫雷程序,通过windows系统环境运行实现。
游戏主区域由很多个方格组成。
使用鼠标随机点击一个方格,方格即被打开并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷;如果点开的格子为空白格,即其周围有0颗雷,则其周围格子自动打开。
文献资料:
[1]张广彬.Java课程设计案例精编(第二版)[M].北京:
清华大学出版社,2011.
[2]耿祥义.Java课程设计(第二版)[M].北京:
清华大学出版社,2008.
[3]耿祥义.JAVA大学实用教程[M].北京:
清华大学出版社,2009.
[4]邹林达.陈国君Java2程序设计基础[M].北京:
清华大学出版社,2010.
[5]邹林达.Java2程序设计基础实验指导[M].北京:
清华大学,2010.
设计要求:
游戏需要提供主菜单让玩家进行游戏设置,同时能够显示当前剩余的地雷数量及当前花费时间等相关信息到界面上。
能够接收玩家的鼠标输入功能,左键和右键输入。
能够根据规则翻转相应的格子
能够标示指定格子的功能
当玩家单击的格子中有地雷时,判定玩家失败,游戏结束。
当扫雷游戏中全部格子被打开时,判定玩家成功。
工作期限:
设计工作自2014年6月16日至2014年6月27日止。
指导教师:
院长:
日期:
2014年6月16日
软件学院课程设计进度安排表
学生姓名:
王森学号:
1402120427专业:
软件工程班级:
12级4班
起止日期
内容
备注
6月16日~6月17日
下任务书;收集、阅读、整理相关参考文献,并进行归纳和概括总结,完成项目/任务背景介绍部分文字内容。
6月18日~11月20日
系统功能设计和模块设计、系统体系结构构建。
6月21日~6月24日
各功能模块编码实现,系统各功能模块调试与维护。
6月25日~6月26日
系统功能集成、系统调试与测试,按照模板要求撰写课程设计/项目设计报告。
6月27日
课程设计/项目设计分组答辩,提交课程设计/项目设计报告以及相关文档,进行成绩评定。
指导教师签名:
2014年6月16日
成绩评定表
学生姓名:
王森学号:
1402120427专业:
软件工程班级:
12级4班
类别
合计
分值
各项分值
评分标准
实际得分
合计得分
平时表现
10
10
按时参加设计指导,无违反纪律情况。
完成情况
30
20
按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。
10
能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。
报告质量
35
10
报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。
5
课题背景介绍清楚,综述分析充分。
5
设计方案合理、可行,论证严谨,逻辑性强,具有说服力。
5
符号统一;图表完备、符合规范要求。
5
能对整个设计过程进行全面的总结,得出有价值的结论或结果。
5
参考文献数量在2篇以上,格式符合要求,在正文中正确引用。
答辩情况
25
10
在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。
15
在规定时间内能准确、完整、流利地回答教师所提出的问题。
总评成绩:
分
指导教师:
(签字)
日期:
2014年6月27日
摘要
摘要:
扫雷是一种具有迷惑性的对记忆和推理能力的简单测试,它是长久以来最
欢迎的Windows游戏之一。
游戏目标:
找出空方块,同时避免触雷。
游戏主区域由很多个方格组成。
使用鼠标随机点击一个方格,方格即被打开
并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷;如
果点开的格子为空白格,即其周围有0颗雷,则其周围格子自动打开。
例如,方格中出现1,说明上下左右及斜角合计有一颗雷,依次类推,2则
有2颗,3则有3颗。
关键词:
Java;扫雷;windows系统环境
摘要………………………………………………………………………………………II
第一章课题背景(或绪论、概述)……………………………………………………..1
1.1游戏功能简介………………………………........……........………………………...2
1.2设计背景……………………………………………..…………………………......…2
第二章设计简介及设计方案论述………………………………………………………...3
2.1需求分析………....……………………………………..………………………….…3
2.2总体设计...……………………………………………..………………………….…3
第三章详细设计…………………………………………………………..………………..4
3.1主函数入口…………………………………………..………………………….…......5
3.2界面布局设定…………………………………………..………………………….…..6
3.3对话框设定……………………………………..…………………………..............….7
3.4扫雷程序设定……………………………………..……………….........………….…11
第四章设计结果及分析……….…………………………………………..……………....17
4.1主界面……………..…………………………….………………………………..…...18
4.2对话框界面….……......…………………………………..…………………………...18
4.3扫雷界面………………………………………………..…………………………......19
总结…….……………………………………………………..…………………………...20
参考文献…….………………..………………………………..…………………………....21
附录主要程序代码………...………………………………..…………………………....22
第一章课题背景(或绪论、概述)
这一章应说明本设计课题的背景、目的、意义、应解决的主要问题及应达到的技术要求;本设计的基本理论依据和主要工作内容。
1.1游戏功能简介
1.1.1扫雷游戏概述
扫雷是一种具有迷惑性的对记忆和推理能力的简单测试,它是长久以来最受欢迎的Windows游戏之一。
游戏目标:
找出空方块,同时避免触雷。
1.1.2扫雷的操作方法
游戏主区域由很多个方格组成。
使用鼠标随机点击一个方格,方格即被打开并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷;如果点开的格子为空白格,即其周围有0颗雷,则其周围格子自动打开。
例如,方格中出现1,说明上下左右及斜角合计有一颗雷,依次类推,2则有2颗,3则有3颗。
1.2设计背景
当前随着计算机的深入普及,越来越多的人有了个人电脑,人们运用计算机完成许多重要的工作,计算机在人们的生活中变的越来越来重要。
目前整个游戏产业的运作模式已经跟好莱坞电影产业的运作模式相同,明确的游戏产业分工有助于游戏产业的规模发展与进化,但也无形中让游戏开发成本大增。
为了降低游戏开发成本,开发娱乐性强成本低的游戏就成为当前的主要课题,在这种趋势下各种小型的低成本的游戏软件应运而生。
在这其中,系统自带的小游戏也占据了相当重要的地位,与那些网络游戏和3D游戏相比,它有编写简单容易上手等特点,非常适合人们在完成工作的时候适当的娱乐要求。
这些小游戏大都是以益智和娱乐为目的,不仅给紧张工作的人们以放松,还可以让人们的大脑得到开发。
这些小游戏包括扫雷,弹球,纸牌等等。
而本课题就是扫雷游戏的设计。
第二章设计简介及设计方案论述
2.1需求分析
游戏需要提供主菜单让玩家进行游戏设置,同时能够显示当前剩余的地雷数量及当前花费时间等相关信息到界面上。
能够接收玩家的鼠标输入功能,左键和右键输入。
能够根据规则翻转相应的格子
能够标示指定格子的功能
当玩家单击的格子中有地雷时,判定玩家失败,游戏结束。
当扫雷游戏中全部格子被打开时,判定玩家成功。
2.2总体设计
流程规划大致上可以分为三个部分,分别为:
画面初始、游戏者按下第一个方块和为非地雷方块时展开。
画面初始时,以游戏者最后一次设定的地雷区大小为范围画出地雷区,当游戏者按下第一个方块时产开始计时,接着就是如何判断按下的方块是非地雷时的处理,这也是整个游戏的技术核心,我们可以通过递归的观念来检查周边的方块是否含有地雷及是否继续往外翻开,直到踩到雷或者游戏胜利为止。
第三章详细设计
3.1主函数入口
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclasssaoleiextendsJFrameimplementsActionListener{/****/
privatestaticfinallongserialVersionUID=1L;
privateJButtonbtn;
privateJButton[]btns;
privateJLabelb1;
privateJLabelbnum;
privateJLabelbtime;
privateJLabelb2;
privateTimertimer;
privateintrow=9;
privateintcol=9;
privateintbon=10;
privateint[]a1;
privateint[][]a;
privateintb;
privateHelpDialogdialogh;
privateSetDialogdialogs;
privateAboutDialogdialoga;
privateJPanelp1,p2;
privateContainercontentPane;
/**主函数入口*/
publicstaticvoidmain(String[]args){
newsaolei().run();
}
publicsaolei(){
this.setTitle("扫雷游戏");
contentPane=getContentPane();
setSize(35*col,35*row+80);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
timer=newTimer(1000,(ActionListener)this);
a=newint[row+2][col+2];
SetGUI();
}
3.2界面布局设定
/**界面布局设定*/
publicvoidSetGUI(){
JMenuBarmenuBar=newJMenuBar();
JMenumenu1=newJMenu("游戏");
JMenumenu2=newJMenu("帮助");
JMenuItemmi1=newJMenuItem("初级");
JMenuItemmi2=newJMenuItem("中级");
JMenuItemmi3=newJMenuItem("高级");
JMenuItemmi4=newJMenuItem("自定义");
JMenuItemh1=newJMenuItem("查看帮助");
JMenuItemh2=newJMenuItem("关于扫雷");
setJMenuBar(menuBar);
mi1.addActionListener(this);
mi2.addActionListener(this);
mi3.addActionListener(this);
mi4.addActionListener(this);
h1.addActionListener(this);
h2.addActionListener(this);
menu1.add(mi1);
menu1.add(mi2);
menu1.add(mi3);
menu1.addSeparator();
menu1.add(mi4);
menu2.add(h1);
menu2.add(h2);
menuBar.add(menu1);
menuBar.add(menu2);
b=bon;
bnum=newJLabel(""+bon);
a1=newint[bon];
btn=newJButton("\\(^o^)/");
btn.setPreferredSize(newDimension(80,30));
btn.addActionListener(this);
b1=newJLabel("剩余雷数:
");
b2=newJLabel("时间:
");
btime=newJLabel("0");
btns=newJButton[row*col];
p1=newJPanel();
p1.add(b1);
p1.add(bnum);
p1.add(btn);
p1.add(b2);
p1.add(btime);
p2=newJPanel();
p2.setLayout(newGridLayout(row,col,0,0));
for(inti=0;i btns[i]=newJButton(""); btns[i].setMargin(newInsets(0,0,0,0)); btns[i].addActionListener(this); btns[i].addMouseListener(newGetMouseEvent()); p2.add(btns[i]); btns[i].setEnabled(false); } contentPane.add(p1,BorderLayout.NORTH); contentPane.add(p2,BorderLayout.CENTER); } publicvoidrun(){ setVisible(true); 3.3对话框设定 /**帮助对话框*/ classHelpDialogextendsJDialog{ /****/ privatestaticfinallongserialVersionUID=1L; publicHelpDialog(JFrameowner){ super(owner,"帮助",false); JTextAreajta=newJTextArea(); JScrollPanejsp=newJScrollPane(jta); add(jsp); jta.setEditable(false); jta.setLineWrap(true); jta.setText("扫雷是一种具有迷惑性的对记忆和推理能力的简单测试。 \n\n" +"游戏目标: 找出空方块,同时避免触雷。 \n\n"+"" +"开始游戏: 点击开始游戏的按钮开始游戏。 你可以在游戏菜单中选择游戏的难度以及自定义。 \n\n" +"规则和基本要求: \n\n"+"●挖开地雷,游戏即告结束。 \n●挖开空方块,可以继续玩。 \n" +"●挖开数字,则表示在其周围的八个方块中共有多少个雷,可以使用该信息推断能够安全单击附近的哪些方块。 "); } } /**关于对话框*/ classAboutDialogextendsJDialog{ /****/ privatestaticfinallongserialVersionUID=1L; publicAboutDialog(JFrameowner){ super(owner,"关于",true); add(newJLabel( "扫雷游戏v1.0
ByZHE"),
BorderLayout.CENTER);
JButtonok=newJButton("确定");
ok.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevent){
setVisible(false);
}
});
JPanelpanel=newJPanel();
panel.add(ok);
add(panel,BorderLayout.SOUTH);
setSize(250,150);
}
}
/**自定义设置对话框*/
classSetDialogextendsJDialog{
/****/
privatestaticfinallongserialVersionUID=1L;
publicSetDialog(JFrameowner){
super(owner,"设置",true);
setBounds(owner.getX()+25,owner.getY()+25,245,170);
setResizable(false);
add(jl1);
add(jl2);
add(jl3);
add(jtf1);
add(jtf2);
add(jtf3);
add(bOK);
add(bCancel);
setLayout(null);
jl1.setBounds(20,5,100,20);
jl2.setBounds(20,35,100,20);
jl3.setBounds(20,65,100,20);
jtf1.setBounds(120,5,100,20);
jtf2.setBounds(120,35,100,20);
jtf3.setBounds(120,65,100,20);
bOK.setBounds(33,107,80,30);
bCancel.setBounds(125,107,80,30);
bOK.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevent){
if(jtf1.getText().equals("")||jtf2.getText().equals("")
||jtf3.getText().equals(""))
JOptionPane.showConfirmDialog(saolei.this,"输入有误",
"警告",JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE);
else{
row=Integer.parseInt(jtf1.getText().trim());
col=Integer.parseInt(jtf2.getText().trim());
bon=Integer.parseInt(jtf3.getText().trim());
setVisible(false);
}
}
});
bCancel.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevent){
setVisible(false);
}
});
}
privateJTextFieldjtf1=newJTextField();
privateJTextFieldjtf2=newJTextField();
privateJTextFieldjtf3=newJTextField();
privateJLabeljl1=newJLabel("行数:
");
privateJLabeljl2=newJLabel("列数:
");
privateJLabeljl3=newJLabel("雷数:
");
privateJButtonbOK=newJButton("确定");
privateJButtonbCancel=newJButton("取消");
}
/**事件监听*/
publicvoidactionPerformed(ActionEvente){
intsign=0;
if(e.getActionCommand()=="初级"||e.getActionCommand()=="中级"
||e.getActionCommand()=="高级"
||e
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计