ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:95.68KB ,
资源ID:4762254      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4762254.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java实训报告扫雷.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java实训报告扫雷.docx

1、java实训报告扫雷-学院课程设计(实训)报告系 部 _ 信息工程系_ 专 业 _软件技术 班 级 _ _ 学 号 姓 名 课 题 扫雷 指导教师 _ 报告成绩 _日 期: 2011 年 12 月 29日摘 要 本次课程设计是用java语言及相关知识设计一个扫雷游戏系统,完成扫雷的基本功能。并在此基础上,自行完善和优化系统功能。理解和掌握选择游戏级别,记录游戏时间和保存游戏成绩的方法,学习程序设计的基本思路和方法,培养计算机专业学生运用所学知识解决计算机应用领域内实际问题能力,进一步提高动手操作能力和用java语言综合编成能力,程序调试技能。一、前言 4二、正文 52.1设计题目及要求 52.

2、2概要(总体)设计 62.3详细设计 62.4程序的核心代码 72.5调试中出现的问题 92.6运行结果10三、总结 12四、参考文献 12五、附录 12一、前言扫雷最原始的版本可以追溯到1973年一款名为“方块”的游戏。不久之后,“方块”被改写成了游戏“Rlogic”。在“Rlogic”里,玩家的任务是作为美国海军陆战队队员,为指挥中心探出一条没有地雷的安全路线,如果路全被地雷堵死就算输。两年后,汤姆安德森在“Rlogic”的基础上又编写出了游戏“地雷”,由此奠定了现代扫雷游戏的雏形。1981年, 微软公司的 罗伯特杜尔 和 卡特约翰逊 两位工程师在Windows 3.1系统上加载了该游戏,

3、扫雷游戏才正式在全世界推广开来。这款游戏的玩法是在一个9*9(初级),16*16(中级),16*30(高级),或自定义大小的方块矩阵中随机布置一定量的地雷(初级为10个,中级为40个,高级为99个)。由玩家逐个翻开方块,以找出所有地雷为最终游戏目标。如果玩家翻开的方块有地雷,则游戏结束。二、正文2.1设计题目及要求(需求分析)1设计题目:基于Java的扫雷游戏2游戏的描述:本产品是一个简单的游戏软件,目的是尽快找到雷区中的所有地雷,而不许踩到地雷。如果挖开的是地雷,您将输掉游戏。3实现的功能:可以实现简单的游戏功能开始游戏、改变雷数。4游戏的界面:游戏的菜单栏中有开始游戏和列行 宽 选项,游戏

4、的显示界面中有游戏的主界面和信息界面(列、行、宽和雷的个数)。5软件可实现扫雷游戏的简单操作:1)、游戏功能:点击鼠标左键点击下寻找地雷右键点击下标记地雷点击笑脸的标记开始重新游戏计雷功能:游戏当前雷数2)、设置功能:设置扫雷的行、宽、列和改变雷数6用户的操作:在游戏菜单上,单击开局。单击游戏区中的任何方块,要启动计时器。通过单击即可挖开方块。如果挖开的是地雷,则您输掉游戏。如果方块上出现数字,则表示在其周围的八个方块中共有多少颗地雷。要标记您认为可能有地雷的方块,请右键单击它。2.2概要(总体)设计1流程图2扫雷概述(类)JAVA的图形界面图形界面简称GUI,是用图形的方式,借助菜单、按纽等

5、标准界面元素和鼠标操作,帮助用户方便地想计算机系统发出指令、启动操作,并将系统的运行结果同样以图形方式显示给用户的技术。JAVA的图形界面技术既为使用java.awt包来创建图形界面的方法,包括AWT组件、窗口和菜单设计、布局管理器以及绘图操作等。AWT概述 AWT既抽象窗口工具集,用于图形用户界面的开发。AWT的功能包括以下方面:(1)丰富的图形界面组件。(2)强大的事件处理模型图形和图形工具,包括形状、颜色和字体。(3)布局管理器,可以进行灵活的的窗口布局,设计特定窗口的尺寸和和屏幕分辨率。(4)无关数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴操作。(5)打印和无鼠标操作。Java

6、.awt是java基本包中最大的一个,其中定义了所有的GUI组件类,以及其他用于构造图形界面的类。AWT基本组件(1)标签组件(Label)标签组件显示的是静态文本,在通常情况下是不能编辑的,能起到提示的作用Label组件有三种构造函数:Label(): 创建空的标签Label(String):创建一个带初始字符串的标签。Label(String,int):创建一个带初始字符串及指定对齐方式的标签。(2)文本域文本域一般用来让用户输入姓名、信用卡号等这样的信息,它是一个能够接收用户的键盘输入的小块区域。TextField():创建空的文本域(3)按钮(Button) 几乎所有的交互式程序中都会

7、有按纽,它是一种交互能力强且交互方便的控件,这个控件提供了“按下并动作”的基本用户界面。按纽的构造方法有:Button():建立一个没有标示字符串的新按纽类对象。Button(String Label):建立一个标示字符串为Label的新按纽类的对象(4)画板组件(Panel)我们在界面上安排各种组件时,有时会需要将组件成组放置,这时就可以使用面板组件。Panel是最简单的容器组件,本身是一个矩形区域,可以在其中放入各种组件。但它仅仅是安排各种组件的一种结构,需要最后加入到别的容器中才能实现GUI的功能。面板组件的创建Panel():用默认的布局管理器创建面板组件。Panel(LayoutMa

8、nager layout):用指定的布局管理器创建面板组件。(5)框架窗口组件(Frame) Frame是独立于浏览器的可独立运行的主窗口,通常用于进行开发桌面应用程序。Frame拥有边界和标题栏设置,其大小可以进行设置调整。Frame里面需要加入组件,也可以加入菜单,或在上面绘图。 Frame的创建Frame():创建一个没有窗口标题的窗口框架。Frame(String):创建一个指定窗口标题的窗口框架。2.3详细设计游戏胜利和失败的条件创建,当所有雷都被找出时胜利,当左键点击到雷时失败,具体实现函数如下示:public void paint(Graphics g) 胜利失败条件 g.cle

9、arRect(0,0,600,600); g.drawString(Game Over,0,200);2.4 程序的核心代码public void paint(Graphics g) int x,y,w; int s; int cx = bw/2 - 4; int cy = bw/2 + 4; g.clearRect(0,0,600,600); for(i=1;i=bx;i+) for(j=1;j=by;j+) draw(g,i,j); if(f = 1) Font f = new Font(11,1,70); Font fo = g.getFont(); g.setColor(Color.w

10、hite); g.setFont(f); /g.setSize(); g.drawString(Game Over,0,200); g.setFont(fo); if( f = 2 ) Font f = new Font(11,1,70); Font fo = g.getFont(); g.setColor(Color.white); g.setFont(f); /g.setSize(); g.drawString(You win!,0,200); g.setFont(fo); 2.5调试中出现的问题1. 类定义未找到错误java.lang.NoClassDefFoundError。h

11、8603;原因分析由于该程序调用到的JAVA 类文件没有正确上传。JAVA 类文件已经上传,但应用服务器并未检测到,建议将JSP 页面重新更新。􀀛解决方案将JAVA 类文件重新上传。将JSP 页面更新并上传;或将应用程序服务器进行重新启动。2. 解决java.lang.StackOverflowError 错误。􀀛错误信息严重:Exceptioninitializingpagecontextjava.lang.StackOverflowError.􀀛原因分析运行一个程序,JVM 会开辟一块内存空间去储存程序进行时的某些信息,当程序运行时需要

12、储存的信息超过了分配的空间,就会出现那样的问题.比如死循环,递归次数过多,等等。􀀛解决方案首先从程序代码优化方面着手,检查是否有死循环、递归等程序,如果有,修正、优化相关代码。2.6运行结果1 运行程序,生成指定行列数的扫雷游戏的图形界面,运行结果如图所示2 鼠标左键点击到雷时,失败,游戏结束,运行结果如图所示:3 改变雷的个数,从15个雷改为20个雷,开始游戏,运行结果如图所示:4 所有雷都被找出时,游戏胜利,运行结果如图所示:三、总 结这不是我第一次做课程设计,但这个扫雷游戏我平常也会经常的玩,所以对于做这个扫雷游戏的课程设计我也是很兴奋,虽然这设计过程中遇到很多困难,但

13、都在尽力的克服,对于我自己做出的这个程序我还是比较满意的,基本功能基本都实现了,图形界面虽然不能说是非常友好,但好象也至少能看的过去,通过这个课程设计我学到了很多的东西,把以前所学的课本知识很好的用到了实践当中,并且通过实践,重新发现了很多问题和很多以前不理解的没掌握的知识点,并且通过完成这个设计,很好的重新的理解并掌握了各种知识点。四、参考文献1耿祥义.JAVA大学实用教程.电子工业出版社.2005.032朱战立,沈伟编著Java程序设计实用指南电子工业出版社,2005.13美Cay S.Horstmann.程峰等译. JAVA2核心技术.机械工业出版社.2003.064 陈占伟,刘旭,陈文

14、霞 Java程序设计武昌,武汉大学出版社,2011年7月 第一版5 朱庆生,古平,java程序设计北京,清华大学出版社,20116 包海山,李占玲,java程序设计案例教程,北京,机械工业出版社7 刘瑞挺,侯冬梅,java程序设计实用教程,北京,清华大学出版社,2009五、附 录全部程序代码import java.awt.*;import javax.swing.*;import java.util.Random;import java.awt.event.*;class Min extends JPanel /雷的类 /备注:鼠标的左键 = 1;右键 = 3;中键 = 2 private i

15、nt flag = 0,statu = 0; /定义雷的属性 0:没有打开 1:打开 2:标示为雷 3:不确定 /flag = 0 不是雷 ; flag = 1是雷 private int but,count = 0; /but:哪一个鼠标键被按下去了 count:这个区域周围有多少个雷 private int mx = 0,my = 0,mw = 10; /定义雷的坐标和宽度 public Min() /构造函数 statu = 0; public Min(int f,int x,int y,int w) /构造函数 flag = f; mx = x; my = y; mw = w; pub

16、lic int getFlag()return flag; public int getStatu()return statu; public int getMx()return mx; public int getMy()return my; public int getMw()return mw; public int getCount()return count; public void setFlag(int f)flag = f; public void setCount(int c)count = c; public void setData(int f,int x,int y,i

17、nt w,int s) /传递值 flag = f; mx = (x-1)*w; my = (y-1)*w; mw = w-1; statu = s; /根据你点击鼠标的不同来改变雷的属性 public int sendKey(int key) /返回值,如果游戏结束则返回-1 int rtn = 1; if(key = 3) switch(statu) case 1: break; case 2: statu = 3; break; case 3: statu = 0; break; case 0: statu = 2; break; rtn = 1; if(key = 1 & statu

18、= 0) switch(flag) case 0: statu = 1; rtn = 2; break; case 1: statu = 1; rtn = -1; break; return rtn; class DrawPanel extends JPanel private int i,j; private int f = 0; /if f = 1 then game over ,if f =2 then win private int chx = 0,chy = 0; /专门记录坐标x,y的值 private int msum = 6,ksum = 0; /msum:雷的个数,ksum:

19、标示雷的个数 private int bx = 10,by = 10,bw = 40; /bx,by:棋盘的大小,bw:棋子的大小 public Min board = new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new

20、Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new

21、 Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),n

22、ew Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),

23、new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(

24、),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min

25、(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new M

26、in(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new

27、Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), ne

28、w Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),n

29、ew Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(), new Min(),new Min(),new Min(),new Min(),new Min(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1