java打地鼠游戏设计本科学位论文Word文档格式.docx
《java打地鼠游戏设计本科学位论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《java打地鼠游戏设计本科学位论文Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
1.2Java语言的发展1
2、软件技术与特点5
2.1Java技术5
2.1.1Java嵌入技术5
2.1.2Jini技术5
2.2Java语言的主要特点6
2.2.1简单性6
2.2.2平台独立性6
2.2.3面向对象6
2.2.4多线程6
2.2.5安全性7
3、设计过程8
3.1设计方案的论证8
3.2概要设计8
3.3软件框架流程图9
3.4界面设计图9
3.5软件项目核心程序11
3.6本次程序中学到的知识12
总结15
参考文献16
致谢17
1、设计内容
概要设计的主要目的是,将游戏的需求转化为游戏的数据结构和系统结构。
通过制定相应文档和规范,以求在开发过程中指导开发人员的进行开发。
并且规定好每个模块的功能和作用。
打地鼠游戏的设计内容:
首先设计几个洞,让洞中随机冒出地鼠,通过鼠标控制锤子,锤子与地鼠接触,则加分,否则不加分,在规定的时间内,如果分值够了,就过关了,否则失败重来。
1.1设计目的与要求
(1)实验目的:
通过编写调试“打地鼠游戏”程序,分析了解“打地鼠游戏”的功能实现过程,掌握游戏设计的有关知识。
(2)实验要求:
按照实验教程的要求完成“打地鼠游戏”程序的编程和调试工作。
1.2Java语言的发展
Java自正式问世以来已经历了四年的历程,时间虽短,发展极快。
一年一度在美国旧金山召开的世界JavaOne语言开发者大会(JavaOneDeveloperConference)盛况空前正说明了这一点。
四年中每年的JavaOne大会,既是了解Java最新技术动态、应用成果和下一步发展趋势的最好场所,又是推动下一年Java快速发展的重要动力。
首届JavaOne大会于1996年召开,各届简况如下:
1996年5月29-31日,第一届,出席会议者6500余人,来自工业界的超过一半。
有人评价说:
“这是近年计算机界最光辉的一次盛会”。
工业界相当看好Java语言,认为它的使用将会引起一场软件革命:
从软件的设计风格、设计方法、设计目标到设计过程,都会产生彻底的变革,“甚至会改变此星球的生活方式”。
1997年,第二届,出席会议者10000人。
Java的追随者不断增加,应用开发迅速起步。
1998年3月24-27日,第三届,出席会议者14000余人(注册人数),注册门票售价1195美元,否则1395美元,即使如此,仍有不少人不惜工本,挤入会场。
本次会议除了软件巨头微软未参加会议外,几乎所有的计算机公司都参加了。
展厅内设300多个展台,先后举行了90场专题讨论会,每场参加的人数从千人至五六千人不等。
会议的主题是:
通过Java的培训来带动Java软件的开发和技术研究,从而发展生产力,获取高额利润,提高生活质量,推动信息产业的进步。
会议展出的内容大致如下:
Java开发工具软件,如:
JMF、JDK、SymantecVisualCafe、JavaDynamicManagementKit、JFC、JNDI、JavaStudio等;
企业信息管理解决方案软件,如:
EJB(EnterpriseJavaBeans);
基于Java技术的信息家电,如:
机顶盒、Java电话等;
个人信息综合服务(Java戒指)、社会信息综合查询亭(Kiosk);
电子商务软件、智能卡、JavaCardAPI等;
网络计算环境下的Java服务器软件、远程方法调用(RMI)、基于Java技术的移动计算设备;
JMS(JavaMessageService)用于出版、票据订阅的软件;
JOS(JavaOS)、基于Java技术的NC和JavaStation。
1999年6月15-18日,第四届,出席会议者达20000人,300多家厂商参展,举办400多场技术讲座,555名演讲者慷慨陈词,精彩纷呈。
这次大会的主要特点是:
Java框架结构被梳理清晰。
本次JavaOne大会上,Sun公司的一个重大举措就是公布了Java平台的最新架构。
重新定义的Java平台以Java2为核心,由面向企业和服务器市场的企业版Java2(J2EE)、面向传统PC客户机市场的标准版Java2(J2SE)和面向信息电器等后PC终端设备市场的Micro版Java2(J2ME)三大部分组成。
其中,J2EE包括EnterpriseJavaBeans(EJB)、JavaServerPages&
JavaServlets、JavaMailAPI和JavaMassageService组成。
而J2ME则是原有的PersonalJava、EmbeddedJava、JavaCard以及刚刚推出的Kjava组成。
虽然新框架结构中的内容都是已有的,但这样重新定义和组合,使得Java平台的概念简单化,从而变得易于理解,更适合于进行市场推广。
2)重点放在企业平台
随着Internet的飞速发展,企业计算模式正摒弃C/S结构而采用Web-Browser结构,此即瘦客户端/胖服务器、大容量数据库的3层或N层体系结构。
由于Java的特点,使得它在开发服务器端的应用程序方面有着得天独厚的优势,面向服务器端的J2EE为当今逐渐流行的N层体系结构提供了一个标准的Java计算平台:
界面一致、工具简易、丰富、Web页面互联便捷,从而能大大加速和简化各种应用系统的开发。
3)加速后PC时代的进程
计算机的发展创造了Internet,但是计算机现在却不是访问Internet的唯一方式。
正在出现的信息化、智能化的消费类电子产品打破了PC作为信息终端的垄断地位,成为人类进入Internet的新门户。
信息终端的多元化预示着所谓后PC(post-PC)时代的到来。
消费类的信息终端量大面广,是典型的瘦客户机,其本身的资源和能力不能与PC相比,但必须更加智能化,并对服务器端的管理提出了更高的要求。
而Java平台恰恰满足了这种要求。
本次大会推出的Kjava虚拟机能运行在16以上的微处理器上,占用内存少,人们可以随心所欲,在资源有限的设备上方便地开发出各种各样的应用,直接运行在不同的消费类或其它电子设备上;
而Jini的出现为Java网络连接提供了公共标准,使得任何Java设备都可以连入网络中被自动识别,并可充分利用网络上已有的各种资源。
大力推进Jini的发展是Sun公司加速后PC时代进程的一项重要策略。
4)应用系统异彩纷呈
与上届大会一样,展出内容有:
应用工具、应用系统、信息家电等。
特别在实时系统开发方面,以IBM为首开发出了应用于工业实时环境的Java嵌入系统,展现出Java在工业领域的广阔应用前景。
Java语言的出现和发展,得到了IT业界的青睐,它像一面大旗,凝聚了世界众多的厂商与Sun公司一道,结成了对抗微软垄断的联盟。
许多知名厂商纷纷购买Java许可证,目前已有90多万个软件开发商加入了Java阵营,1亿个Java最终用户,几千种Java应用软件产品,1500余种Java书籍(自Java问世4年来,平均每天出版一本)。
这真是IT业界的盛事!
IBM公司提出“高举Java大旗,全力以赴”的口号,它在全世界的11个国家有28个实验室,集聚了2500余名技术人员,芯片巨人Intel提出“抓住时机,占领Java阵地”!
决心使Intel芯片系统成为开发Java应用运行的最佳平台;
Novell则宣称“Java是Novell的未来,未来是服务器端Java的市场”;
作为Java发明者的Sun公司,坚持“保卫Java大旗,发展Java之路”的方针。
此外,HP、Oracle、Apple、Sybase、Netscape、Informix、3Com、Motorola等公司均是Sun的坚强同盟。
在我国,Java的引进与开发起步早,发展水平基本与世界同步。
目前,Sun公司已在中国建成了由5个授权中心、20多个Internet/IntarnetJava解决方案中心和10所Java大学、若干培训中心组成的三级结构。
全面推动Java在中国的普及、应用、研究、开发,培养了数以十万计的Java开发人员。
此外,Sun还牵头成立了中外软件厂商的开发联盟。
在中国,Java的开发可以说是“人才济济,成果累累”。
如清华大学王克宏教授带领的课题组面向全国,自96年开始举办了多期Java培训班和讲座,开设了数期本科生、研究生Java课程,出版了“Java系列丛书”10余册,承担了国家“九五”攻关项目“基于Java技术的交互式远程教学系统”,并与日本就Java开发进行了国际合作,成绩斐然;
东大阿派下属的宝钢东软软件技术研究中心是国内是首屈一指的Java研发骨干企业,该中心从95年起就开始了Java的研发,目前,已掌握了PersonalJava的核心移植技术,并成功地将JVM移植到汽车导航平台。
此外,他们还开发出支持Jini协议的即插即用网络打印机软件,以及一套Jini信息家电网络的可视化演示环境,完成了基于JavaBeans的组件化软件开发及运行支持环境等多项成果;
在台湾,22家知名计算机公司成立了“Java联盟”,并在台北建立了“Java开发中心”,新竹建立了“Java语言实验室”;
在香港,举行了全岛Java杯比赛,掀起了学习Java的热潮。
Java的浪潮汹涌澎湃,席卷全球!
2、软件技术与特点
2.1Java技术
2.1.1Java嵌入技术
Java发展至今日,已不仅仅是一种编程语言,实际上已形成了一门技术。
其内容包括:
1)Java软件包:
Java语言及其编程技术、JavaOS、Java开发环境与工具、Java语言的各种软件包、数据库接口JDBC等。
2)Java虚拟机及其规范3)Java嵌入技术(Java芯片)已推出的有Java戒指、Java卡等。
1999年8月2日,Sun公司宣布名为MAJC的专门为Java语言设计的的芯片优化研制成功,欲与Intel试比高低。
该芯片在设计时采用了模块式高性能计算引擎,实质为一种芯片级并行处理机,能以更有效的方式分解计算任务,特别适合处理多媒体数据。
Sun公司希望通过MAJC芯片的发布催生出一个基于Java语言的微处理器家族,与Intel公司竞争。
设想中的Java处理器将应用在从低价消费电子产品到高端因特网服务器领域。
2.1.2Jini技术
1999年初正式发布后,立刻得到业界的广泛支持。
Jini的出现为Java网络连接提供了公共标准,使得任何Java设备都可以连入网络中被自动识别,并可充分利用网络上已有的各种资源。
它把网络上的各类设备(包括消费类电子设备如移动电话、PDA、DTV、HPC、NC、游戏机、电冰箱、智能卡等等)和各种软件组合成一个单一、动态的分布式系统,使网络更易于操纵、易于管理,具有更高的可配置性。
Jini将使网络具有自发性,它的出现大大扩展了“计算”和“计算机”的含义,极大地简化了网络操作,对家庭用户来说,使用网上设备即插即用,就像使用电话一样方便。
Java和Jini不仅可以不依赖于Windows为代表的操作系统,而且引导着信息产业的潮流,使Sun公司能在未来的、非PC类电子产品的数字化市场中强占制高点。
2.2Java语言的主要特点
Java语言是一种适用于网络编程的语言,它的基本结构与C++极为相似,但却简单得多。
它集成了其它一些语言的特点和优势,又避开了它们的不足之处。
它的主要特点如下:
2.2.1简单性
Java与C++相比,不再支持运算符重载、多级继承及广泛的自动强制等易混淆和较少使用的特性,而增加了内存空间自动垃圾收集的功能,复杂特性的省略和实用功能的增加使得开发变得简单而可靠。
简单化的另一个方面是Java的系统非常小,其基本解释和类支持部分只占40KB,附加的基本标准库和线程支持也只需增加175KB。
因此,Java应用软件能在相当小的系统之上独立工作。
2.2.2平台独立性
这是Java最吸引人的地方。
由于它采用先编译成中间码(字节码),然后装载与校验,再解释成不同的机器码来执行,即“Java虚拟机”的思想,“屏蔽”了具体的“平台环境”特性要求,使得只要能支持Java虚拟机,就可运行各种Java程序。
2.2.3面向对象
面向对象(O-O)的技术是近年来软件开发中用得最为普遍的程序设计方法,它通过把客观事物进行分类组合、参数封装、用成员变量来描述对象的性质、状态,而用方法(成员函数)来实现其行为和功能。
O-O技术具有继承性、封装性、多态性等众多特点,Java在保留这些优点的基础上,又具有动态联编的特性,更能发挥出面向对象的优势。
2.2.4多线程
多线程机制使应用程序能并行执行,Java有一套成熟的同步原语,保证了对共享数据的正确操作。
通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易实现网络上实时的交互行为。
2.2.5安全性
Java有建立在公共密钥技术基础上的确认技术。
指示器语义的改变将使应用程序不能再去访问以前的数据结构或是私有数据,大多数病毒也就无法破坏数据。
因而,用Java可以构造出无病毒、安全的系统。
Java语言除上述主要特点外,还有高性能、分布性、强大性、解释性、可移植性等,此处不再赘述。
3、设计过程
3.1设计方案的论证
Eclipse是当今最流行的Java开发TDE之一,它是一个开发源代码、基于Java的课扩展开发平台,因为它具有良好的可扩展性。
J2ME开发可以继承在Eclipse中完成,利用Eclipse界面友好的优势,提高J2ME应用程序的开发效率。
Eclipse框架的这种灵活性来源于其扩展点。
它们是在XML中定义的已知接口,并充当插件的耦合点。
扩展点的范围包括从用在常规表述过滤器中的简单字符串,到一个Java类的描述。
任何Eclipse插件定义的扩展点都能够被其插件使用,反之,任何Eclipse插件也可以组从其他插件定义的扩展点。
除了解由扩展点定义的接口外,插件不知道他们通过扩展点提供的服务将如何被使用。
Eclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件,这类似于微软公司的VisualStudio和Sun微系统公司的NetBeans平台。
Eclipse为工具开发商提供了更好的灵活性,使他门能更好的控制自己的软件技术。
3.2概要设计
本程序工有1个Main源文件:
Main:
该方法负责了游戏的全部工作,主要有游戏的逻辑处理和UI的显示。
该文件用到的函数如下:
MyCanvas:
负责游戏中用到的变量初始化工作,设置游戏的初始化状态,如线程的初始化。
Paint:
负责游戏界面的绘制和命令菜单的添加。
CommandAction:
声明执行操作的接口。
有java接口或者抽象类来实现。
Run:
该函数主要负责处理线程的工作,游戏状态的切换和各种变量的赋值。
Runnable接口:
Runnable接口应该由那些打算通过某一线程执行其实例的类来实现。
类必须定义一个称为run的无参数方法。
此外,Runnable为非Thread子类的类提供了一种激活方式。
通过实例化某个Thread实例并将自身作为运行目标,就可以运行实现Runnable的类而无需创建Thread的子类。
大多数情况下,如果只想重写run()方法,而不重写其他Thread方法,那么应使用Runnable接口。
3.3软件框架流程图
首先,进入游戏界面,显示出游戏的图形,使得老鼠在洞中随机闪烁出现;
然后单击鼠标的click事件,点击老鼠得到相应的分数,最后退出游戏。
如图1所示:
单击鼠标的click事件
图1项目流程图
3.4界面设计图
经过进一步的分析设计,得到的打地鼠游戏界面图,如图2所示:
privatestaticfinallongserialVersionUID=1L;
privateintnum=0;
//设置全局变量
privateJLabel[]mouses;
privateImageIconimgMouse;
privateJLabelback;
privateJLabeljtf;
PlayMouse(){//写一个构造器对成员变量初始化
this.setResizable(true);
//是否能够手动的修改大小
this.getContentPane().setLayout(null);
this.setTitle("
我的打地鼠游戏"
);
back=newJLabel();
back.setBounds(0,-35,600,438);
this.setBounds(300,100,600,438);
//设置框的大小和位置以及坐标
this.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage("
src/com/iotek/mouse/1.png"
),newPoint(3,3),"
self"
));
//把鼠标变成锤子
ImageIconicon=newImageIcon(this.getClass().getResource("
3.jpg"
//加载图片调用构造器
back.setIcon(icon);
imgMouse=newImageIcon(this.getClass().getResource("
2.png"
//对老鼠进行初始化
mouses=newJLabel[9];
//对数组进行初始化
for(inti=0;
i<
9;
i++){//写一个for循环
mouses[i]=newJLabel();
mouses[i].setSize(imgMouse.getIconWidth(),imgMouse.getIconHeight());
//设置老鼠的大小
//mouses[i].setIcon(imgMouse);
mouses[i].addMouseListener(newMouseAdapter(){//通过匿名内部类添加一个监听器,可以监听到所有事件
图2游戏界面图
经过进一步的分析设计,得到的打地鼠游戏加分功能,如图3所示:
publicvoidmouseClicked(MouseEvente){//加分功能
Objectobject=e.getSource();
//点击事件源默认的是object
if(objectinstanceofJLabel){//判断图片正好出现
JLabellabel=(JLabel)object;
if(label.getIcon()!
=null){
num++;
jtf.setText("
您的得分是:
"
+num+"
分"
//每次显示分数都会变化
}
label.setIcon(null);
//如果点完图片就消失
}
}
图3游戏加分图
3.5软件项目核心程序
本次项目中我主要负责的是运用了多线程的技术,代码如下:
publicstaticvoidmain(String[]args){
PlayMoused1=newPlayMouse();
//调用构造器
Threadt1=newThread(d1);
//产生一个线程,让他运行起来
t1.start();
}
@Override
publicvoidrun(){//老鼠闪烁出现多线程
while(true){
try{
Thread.sleep(500);
intindex=(int)(Math.random()*9);
if(mouses[index].getIcon()==null){//图片有没有立刻被点中
mouses[index].setIcon(imgMouse);
//如果没点中就有一定的反应时间
Thread.sleep(800);
//反应时间,可以根据难度的不同设置不同的长度
if(mouses[index].isShowing()){//如果在反应时间仍然没有点就设置为空
mouses[index].setIcon(null);
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
3.6本次程序中学到的知识
本次课程设计我从中学习到了Java的编程思想,主要学到以下内容:
1、游戏编写用到的基本框架,也就是游戏引擎。
2、学习到了Runable接口的使用。
3、一些关键字的使用方法。
4、学习到了多线程的使用方法。
JAVA多线程实现方式主要有三种:
继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。
其中前两