JAVA雷电小游戏_第1页
JAVA雷电小游戏_第2页
JAVA雷电小游戏_第3页
JAVA雷电小游戏_第4页
JAVA雷电小游戏_第5页
已阅读5页,还剩18页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湘潭职业技术学院毕业设计说明书湘潭职业技术学院2016届毕业设计设计题目: JAVA雷电小游戏 专 业: 计算机应用技术 班 级: 13计应301 学 号: 201303010118 设 计 者: 刘岳文 指导老师: 冯国军、 章益 完成时间: 2016年5月18日 摘要 SWT 是Standard Widget Toolkit)即标准小窗口工具箱,是一个GUI开源框架,著名的IDEeclipse就是用这门技术开发的。是IBM公司推出的一种在Eclipse中使用的集成开发环境,SWT提供可移植的API,并与底层本机OS GUI平台紧密集成,它是一个与本地窗口系统集成在一起的小部件集和图形库。这款雷电游戏是一款风靡全球的游戏,运行程序后允许用户选择执行选项菜单。本设计主要实现的功能是让飞机能向4个方向移动,并且打出子弹,子弹击中敌人,子弹和敌人同时消失,产生效果,能智能的移动并且打出子弹。这款游戏使用Java做出的小型游戏,也是较为经典的游戏之一,基本电脑上可以见到这款游戏,并用Java对游戏的界面布局、画面设计进行了设计,并实现一个富有娱乐性、稳定的小型游戏。本论文介绍了Eclipse,对Eclipse的开发环境进行简单的描述,然后对游戏的需求做了一些简单的分析;说明了游戏的设计和实现过程,展示了一些游戏界面,对一部分内容进行了测试,也达到预期目标。目录第一章 JAVA语言与应用41.1 JAVA语言简介51.2 Eclipse开发环境61.3 SWT7第二章 需求分析82.1 游戏设计的需求分析82.1.1技术可行性82.1.1功能需求82.1.2本系统的现实意义92.2 系统运行环境9第三章 游戏的详细设计103.1 界面功能设计103.2 系统的实现12第四章 程序的实现144.1程序实现14 4.2界面实现15第五章 测试运行155.1游戏功能测试155.2游戏新开始功能测试165.3游戏暂停/继续功能测试175.4游戏帮助功能测试18总结19参考文献20致谢21前言第一章 JAVA语言与应用1.1 JAVA语言简介Java编程语言风格十分接近C+语言,继承了C+语言面向对象技术的核心,Java舍弃了C+语言中容易引起错误的指针,改以引用取代,同时移除原C+与原来运算符重载,也移除多重继承特性,改用接口取代,增加垃圾回收器功能。在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动拆装特性。太阳公司对Java语言的解释是:“Java编程语言是个简单、面向对象、分布式、解释式、健壮、安全和系统无关、可植入、高性能、多线程和动态的语言。”Java不同于一般的编译语言和解释语言。它首先将源代码编译成节码(bytecode),然后依赖各种不同于平台的虚拟机来解释语言行子节码,从而实现了“一次编译、到执行”的跨平台特性。在早期JVM中,这在一定程度上降低了Java程序的运行效率。但在J2SE1.24发布后。Java的C#语言执行速度有了大幅提升。 大家想一想,在PC下用windows编写的程序能够不做修改就直接拿到UNIX系统上运行吗?显然是不可以的,因为程序的执行最终必须转换成为计算机硬件的机器指令来执行,专门为某种计算机硬件和操作系统编写的程序是不能够直接放到另外的计算机硬件上执行的,至少要做移植工作。要想让程序能够在不同的计算机上能够运行,就要求程序设计语言是能够跨越各种软件和硬件平台的,而java满足了这一需求。 Sun公司绝没想到本想用于消费电子产品开发的编程语言却率先在网络中得到了广泛应用,但是也可以说是东方不亮西方亮,正是因为java语言在设计目标上的正确性使得java语言是金字总会发光的。C语言是面向过程的语言,也是使用率非常高的语言;而面向对象的思想引入到编程语言之后,C语言就被改造成为面向对象的C语言,得到了广泛的应用。但是C语言必须兼容C语言,因此C语言是面向过程和面向对象混合的语言。java语言产生于C语言之后,是完全的面向对象的编程语言,充分吸取了C语言的优点,采用了程序员所熟悉的C和C语言的许多语法,同时又去掉了C语言中指针、内存申请和释放等影响程序健壮性的部分,可以说java语言是站在C语言这个巨人的肩膀上前进的。 java语言的一个目标是跨平台,因此采用了解释执行而不是编译执行的运行环境,在执行过程中根据所在的不同的硬件平台把程序解释为当前的机器码,实现跨平台运行。而动态下载程序代码的机制完全是为了适应网络计算的特点,程序可以根据需要把代码实时的从服务器中下载过来执行,在此之前还没有任何一种语言能够支持这一点。 任何事物的产生既有必然的原因也有偶然的因素,java语言的出现也验证了这一点。1991年,美国Sun Microsystems公司的某个研究小组为了能够在消费电子产品上开发应用程序,积极寻找合适的编程语言。消费电子产品种类繁多,包括PDA、机顶盒、手机等等,即使是同一类消费电子产品所采用的处理芯片和操作系统也不相同,也存在着跨平台的问题。当时最流行的编程语言是C和C语言,Sun公司的研究人员就考虑是否可以采用C语言来编写消费电子产品的应用程序,但是研究表明,对于消费电子产品而言C语言过于复杂和庞大,并不适用,安全性也并不令人满意。于是,Bill Joy先生领导的研究小组就着手设计和开发出一种语言,称之为Oak。该语言采用了许多C语言的语法,提高了安全性,并且是面向对象的语言,但是Oak语言在商业上并未获得成功。时间转到了1995年,互联网在世界上蓬勃发展,Sun公司发现Oak语言所具有的跨平台、面向对象、安全性高等特点非常符合互联网的需要,于是改进了该语言的设计,最终,Sun公司给该语言取名为Java语言,造就了一代成功的编程语言。与传统型态不同太阳公司在推出Java时就将其作为开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言群体的力量而非公司的力量”是太阳公司的口号之一,并获得广大软件开发商的认可。此外,微软公司后来推出了与之竞争的NET平台以及模仿Java的C#语言。1.2 Eclipse开发环境 Eclipse框架的这种灵活性来源于其扩展点.它们是在XML中定义的已知接口,并充当插件的祸合点.扩展点的范围包括从用在常挽表述过滤器中的简单字符串,到一个Java类的描述.任何Eclipse插件定义的扩展点都能够被其它插件使用,反之,任何Eclipse插件也可以遵从其它插件定义的扩展点.除了解由扩展定义的接口外,插件不知道它们通过扩展点提供的服务将如何被使用. Eclipse的最大特点是它双胞胎接受由Java开发者自己编写的开放源代码插件,这类似于微软公司的Visual Studio和Sun公司Net Bean:平台.Eclipse为工具开发商提供了更好的灵活性,使他们能更好地控制自己的软件技术.Eclipse软件是一款非常受欢迎的java开发工具,国内使用它的java开发人员越来越多。1.3 SWTSWT(Standard Widget Toolkit)即标准小窗口工具箱,是一个GUI开源框架,著名的IDEeclipse就是用这门技术开发的。是IBM公司推出的一种在Eclipse中使用的集成开发环境,SWT提供可移植的API,并与底层本机OS GUI平台紧密集成,它是一个与本地窗口系统集成在一起的小部件集和图形库。SWT由JNI(Java Native Interface,Java 本机接口)调用操作系统的内部API,因此运行速度快,能够获得与操作系统的内部应用程序相同的外观。不够成熟和稳定。SWT因其设计上的一些缺陷,如资源管理,Windows友好等,被认为是不稳定的。它可以在Windows上表现得很好,但在其他操作系统上,它经常是不稳定且容易崩溃的。这很大程度上是因为它把资源管理交给开发者来处理,而并不是所有的开发人员能够正确地处理这些。不可扩展。.不在JRE的标准库中。因此必须将它和程序捆绑在一起,并为所要支持的每个操作系统创建单独的安装程序。第二章 需求分析2.1 游戏设计的需求分析2.1.1经济可行性设计的开发是基于JDK1.6和eclipse3.6的,因为它们都是免费而且开源的软件,所以实现本设计的 成本就有所降低。随着计算机、网络通讯和信息技术的迅猛发展以及人类精神生活品质的提高,国际、国内的各种各样的大型综合游戏网站如雨后春笋般的发展起来。一款好的游戏带来的经济效益可以说是不可 估量的,比如现在网上最流行的魔兽世界、征途等大型网络版游戏。本游戏可单机运行。2.1.2功能需求这个项目为了满足玩家在视觉上的效果,在游戏界面上添加了一些唯美的图片,从而是游戏能从视觉上更加吸引玩家,并设置了暂停、继续按钮,以方便玩家更方便的玩这个游戏。主界面就是我方与敌方的对决,还有我方和敌方的移动方式,然后就是子弹的生成,然后是我方与敌方的对战结果。2.1.3操作可行性本设计是一个网络版的游戏平台,只是模拟了现在社会上的一些网络游戏的部分功能, 所以操作简易,玩家不需要了解内部流程,只是和一般其他的网络游戏一样的操作即可开始游戏。相对于开发者而言,整个系统形成主要由JDK5.0虚拟环境和eclipse3.2共同完成,无需更多复杂的工具和服务器支持。2.2系统运行环境(1)网络服务器操作系统:Windows 系统; (2)开发工具:eclipse3.6.2; (3)运行环境:J2SDK 1.6; (4)编程语言:Java 语言;第三章 游戏的详细设计3.1 界面功能设计系统的总体设计通过其所需功能分为三大项,分别是:游戏,暂停/继续和帮助。1.游戏: 游戏分为2小项:开始新游戏、退出游戏。2.暂停/继续: 暂停/继续分为2小项:暂停、继续。3.帮助: 帮助是告诉玩家如何操作。界面如下图1-1所示:图1-1主界面设计如下:public void update(Graphics g) screenImage = this.createImage(Fram_width, Fram_length);Graphics gps = screenImage.getGraphics();gps.fillRect(0, 0, Fram_width, Fram_length);/ 设置界面长度 宽度g.drawImage(screenImage, 0, 0, null);this.setSize(Fram_width, Fram_length); / 设置界面大小this.setLocation(280, 50); / 设置界面出现的位置this.setTitle(雷电小游戏);/ 窗口界面的说明功能模块说明:1、 功能模块说明:可以实现左右上下移动、发射子弹。空格键打出子弹。 智能的敌方,随机移动,随机打出子弹。 死亡。加入飞机、子弹、其他的图片,使界面看上去更美观。2、 功能模块说明:按下开始新游戏会开始一盘新的游戏,按下退出可以退出游戏,按下暂停可以暂停,如果想继续游戏按下继续就可以继续上一盘游戏。3、关于功能模块说明:在帮助中有 操作提示。3.2 系统的实现算法方面的问题 起初连接数据库的语句全部都是在调用页一句一句的书写,这样一来不仅做了很多 重复的工作,而且使页面看起来很繁琐,经过翻阅书籍发现可以将连接数据库的语句统 一放到一个页面里,然后在需要调用连接数据库语句的页面调用就可以了,这样既节省 时间,又避免出现书写错误。 字符串方面的问题 发现对字符串的比较存在大小写之分,所以要先将要比较 的两个字符串转化成相同的格式或者强行限制输入的字符串大小写相同,然后再进行比 较;如果查询的结果为空,那么应该给出提示信息,这样才能真正做到人机界面友好。 主界面功能实现 在此模块内,用户如果想使用组内其他成员的功能时, 主界面主要由主界面主要由一个面版,五个按钮、一个界面、和一个菜单栏组成。按下相应的键。界面会做出相应的动作。 主 要 方 法 包 括 : actionPerformed()为接口方法,处理 ActionEvent 事件。ActionListenerA ,()为接口方法,处理Frame事件。部分设计如下:1、Hero 表示玩家的类玩家的属性Fram_width=400页面的静态全局宽度Fram_length=630页面的静态全局长度xX轴坐标yY轴坐标voidgameOver(Graphics g)游戏结束方法,做清理工作和相应的提示boolean isLive()判断是否存活void setLive(boolean live)设置存活状态,以便从新开始游戏 2、FlyingObjectFlyingObject对象width = 30飞机的全局静态宽度length = 30飞机的全局静态长度getXX轴坐标getYY轴坐标boolean live飞机是否存活,初始化为活着的GameFrame tcGameFrame对象move 用于控制飞机的方向random随机数,用于控制敌方出现数3、GameFrame飞机用户类,继承Frame,实现PaintThread private class PaintThread implements Runnable /设置线性属性 public void run() / TODO Auto-generated method stub while (printable) repaint(); try Thread.sleep(50); catch (InterruptedException e) e.printStackTrace(); 4、 GameCanvas用于与GameFrame中的线性相互关联 public void run() long time = 0; while (true) if(!GameFrame.printable)/与另个类关联 Try Thread.sleep(50); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace(); 5、 boss的出现 if (score 2000 & bossBlood = 0) if (hx 150 & hx 50 & hy 140) if (isCovered) hbul1.remove(hbul1.get(i);/设置敌方boss的移动isCovered = false;money += 99;/击杀能得到的金币score += 100;/击杀能得到的分数bossBlood -= 40;/boss的血量private void heroBullet2VSEnemy(int i, long time) int hx = hbul2.get(i).getX();/boss出现的位置int hy = hbul2.get(i).getY();if (hy 0) hbul2.remove(hbul2.get(i);return;第四章 程序的实现4.1程序实现 本程序是用Java编写的小游戏,名为雷电。可以进行开始新游戏、继续、暂停、帮助的多功能设计,图形用户界面要用到Java课程里的第六章的知识,需要用到抽象窗口工具集即AWT和Swing来设计实现,由于游戏需要有功能按键来控制游戏的重新开始,退出,暂停,帮助等,所以在实现过程中,设计菜单项。本设计是一个网络版的游戏平台,只是模拟了现在社会上的一些网络游戏的部分功能, 所以操作简易,玩家不需要了解内部流程,只是和一般其他的网络游戏一样的操作即可开始游戏。相对于开发者而言,整个系统形成主要由JDK5.0虚拟环境和eclipse3.2共同完成,无需更多复杂的工具和服务器支持。本系统开发过程是利用Java编程语言和eclipse集成开发环境配合使 用来实现的,它是基于TCP/UDP协议和Socket编程技术,建立以C/S为结构模式的娱乐性游戏平台。还有是对一些技术理论,J2SE 框架,Java 语言,系统 运行所支持的操作系统,联机通信机制及 Java 图形编程等理论做了简单的实现。4.2界面实现 本节展示雷电刚刚进入游戏后的界面,窗口上有本游戏的名字“雷电”。雷电游戏界面如下图所示:图1游戏首页核心代码如下: public static final int Fram_width = 400; / 静态全局窗口大小public static final int Fram_length = 630; this.setSize(Fram_width, Fram_length); / 设置界面大小this.setLocation(280, 50); / 设置界面出现的位置this.setTitle(雷电小游戏);游戏开始后的界面,通过 四个键控制我方的战机在屏幕内移动,来进行攻击或躲避敌方发射的子弹,防止我方的战机死亡,可以通过控制空格键来发射子弹,对敌方造成最大伤害。游戏的流程图程序开始运行后首先要初始化游戏,然后进行一次成功与否的判断,若成功了程序进入下一个模块,若没有成功,重新返回初始化。再次进行初始化游戏。成功后进入主控模块,直至用户停止游戏,程序结束。游戏开始的流程图如下:开始否是结束进入主控模式是否成功初始化第五章 测试运行5.1游戏功能测试运行程序,弹出运行窗口。若没有显示出来,则程序错误。如图图1-2测试界面启动设置如下:public static final int Fram_width = 400; / 静态全局窗口大小public static final int Fram_length = 630;this.setMenuBar(jmb);/ 菜单Bar放到JFrame上this.setVisible(true);this.setSize(Fram_width, Fram_length); / 设置界面大小this.setLocation(280, 50); / 设置界面出现的位置this.setTitle(雷电小游戏);this.addWindowListener(new WindowAdapter() / 窗口监听关闭public void windowClosing(WindowEvent e) System.exit(0) 设置主界面的宽度、高度,给主界面加标题,设置主界面菜单。5.2游戏新开始功能测试运行程序后,在菜单栏单击游戏,若显示出下拉菜单就会出现开始新游戏/退出,则程序运行成功。若点击无反应,则程序错误。如图图1-3测试开始按钮详细设置如下: jmb = new MenuBar();jm1 = new Menu(游戏); jm1.setFont(new Font(TimesRoman, Font.BOLD, 12);/ 设置菜单显示的字体 jmi1 = new MenuItem(开始新游戏);jmi2 = new MenuItem(退出); jmi1.setFont(new Font(TimesRoman, Font.BOLD, 12);/ 设置菜单显示的字体jmi2.setFont(new Font(TimesRoman, Font.BOLD, 12);/ 设置菜单显示的字体 jm1.add(jmi1);/加入下拉菜单jm1.add(jmi2);/加入下拉菜单if (e.getActionCommand().equals(NewGame) printable = false;Object options = 确定, 取消 ;int response = JOptionPane.showOptionDialog(this, 您确认要开始新游戏!, ,JOptionPane.YES_OPTION, JOptionPane.QUESTION_MESSAGE, null,options, options0);/弹出窗口if (response = 0) printable = true;new GameFrame();this.dispose(); else printable = true;new Thread(new PaintThread().start(); / 线程启动设置主界面的下拉菜单,设置下拉菜单的字体大小,把下拉菜单加入菜单栏中,当点击菜单时,会产生相应的变化。5.3游戏暂停/继续功能测试运行程序后,点击暂停按钮,会暂停游戏,若没有弹出,则程序错误。若成功在点击继续按钮,游戏会继续,若继续就行,则程序正确,反之则程序错误。如图图1-4测试暂停/继续按钮设计如下:jm2 = new Menu(暂停/继续);jm2.setFont(new Font(TimesRoman, Font.BOLD, 12);/ 设置菜单显示的字体jmi3 = new MenuItem(暂停);/ 设置下拉菜单jmi4 = new MenuItem(继续);jmi3.setFont(new Font(TimesRoman, Font.BOLD, 12);/ 设置显示的字体大小jmi4.setFont(new Font(TimesRoman, Font.BOLD, 12);/ 设置显示的字体大小else if (e.getActionCommand().endsWith(Stop) printable = false;/ 线性关闭 else if (e.getActionCommand().equals(Continue) if (!printable) printable = true;设置主界面的下拉菜单,设置下拉菜单的字体大小,把下拉菜单加入菜单栏中,当点击菜单时,会产生相应的变化,通过线性来控制界面的暂停。5.4游戏帮助功能测试运行程序后,点击帮助按钮,弹出帮助信息,若没有弹出,则程序错误。如图图1-5测试说明按钮设计如下:jm3 = new Menu(帮助);jm3.setFont(new Font(TimesRoman, Font.BOLD, 12);/ 设置菜单显示的字体jmi5 = new MenuItem(游戏说明);jmi5.setFont(new Font(TimesRoman, Font.BOLD, 12);/ 设置显示的字体大小 if (e.getActionCommand().equals(help) printable = false;JOptionPane.showMessageDialog(null, 用 控制方向,空格键发射!,提示!, JOptionPane.INFORMATION_MESSAGE);/弹出窗口this.setVisible(true);printable = true;new Thread(new PaintThread().start(); / 线程启动设置主界面的下拉菜单,设置下拉菜单的字体大小,把下拉菜单加入菜单栏中,当点击菜单时,会产生相应的变化,通过线性来控制界面的暂停。总结本次设计已是大学最后一次对专业知识的综合实践活动,同时也是我所做的工作量最大的一次作业, 因此从一开始我对本次毕业设计就给予了高度重视。从选题、收集资料、学习相关技术到实际编程,我都 一丝不苟的对待了。当然其间我也走了不少弯路,有时甚至需要推倒重来,但同时我也多次体会过克服困 难后的成就感。通过实习我不仅领会了基

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论