java技术在游戏开发的应用本科毕业论文(编辑修改稿)内容摘要:

, repaint( )方法立即被系统自动调用,而实际上 repaint()方法是自动调用 update()方法 */ 下面的方法支持基本的绘图和 画图像: void drawLine( ) void drawArc( ) void drawPolygon( ) void drawRect( ) void drawRoundRect( ) void fill3DRect( ) void fillOval( ) 实例 1: 10 Applet 的 AWT 绘制 : class ArcCanvas extends Canvas{ //类 ArcCanvas int startAngle=0。 int endAngle=45。 boolean filled=false。 Font font。 public void paint(Graphics g){ //paint 方法,该方法的作用是在 Canvas 上画图 Rectangle r=getBounds()。 int hlines=。 int vlines=。 ()。 for(int i=1。 i=hlines。 i++) { (0,i*10,i*10)。 } for(int i=1。 i=vlines。 i++) { (i*10,0,i*10,)。 } ()。 if(filled) { (0,0,startAngle,endAngle)。 } else { (0,0,startAngle, endAngle)。 } ()。 (font)。 (0,)。 (,0,)。 (0,0,)。 11 (,0,0,)。 int sx=10。 int sy=。 (“ S=” +startAngle,sx,sy)。 (“ E=” +ednAngle,sx,sy+14)。 } public void redraw(boolean filled,int start,int end){ //重画方法 =filled。 =start。 =end。 } 12 游戏开发中的交互 一个优秀的游戏必定是与玩家不断的沟通,给予玩家充分的操作时间,而游戏又必须快速地,正确的对玩家的动作作出反映,否则这样的游戏,不能称为一个 好 游戏。 所以说,游戏开发中的交互与其他技术有着相同的地位,是一个游戏必备的核心。 在 Java 游戏的开发中,往往使用事件处理器来进行设计。 1. 事件:用户对程序的某一种功能性操作。 Java 中的事件 [3]主要有两种: 1) 组件类事件 ponentEvent、 ContainerEvent、 WindowEvent、 FocusEvent、 PaintEvent、MouseEvent 共六大类, 它们均是当组件的状态发生变化时产生。 2) 动作类事件 ActionEvent、 TextEvent、 AdjustmentEvent、 ItemEvent 共四类。 它们均对应用户的某一种功能性操作动作。 Java 中的事件类都包含在 JDK 的 包中。 : 用户编程定义每个特定事件发生时程序应做出何种响应,并且这些响应代码会在对 应的事件发生时由系统自动调用。 事件委托授权处理模型 以上版本实现了事件委托授权处理模型的机制。 1) 事件源:产出事件的组件。 2) 监听器:对组件所产生的事件作出具体响应的代吗,即事件产出与处理分别由两个不同类(它们可以分别放在不同的程序中)加以编程实现。 3) 事件处理机制: AWT 组件自身不编程处理相应的事件,面是交由事件监听器(它可以是组件所在的容器类或另外的 Java 程序类,只要它们实现了相关的事件监听器接口即可)处理(事件授权处理模型)。 4) 事件处理的包: 包 ,它提供 AWT事件所需的类和接口 ActionEvent 类对应 ActionListener 接口; MouseEvent 类对应 MouseMotionListener 接口和 MouseListener 接口; 13 WindonEvent 类对应 WindonListener 接口 即发生了 XXXEvent 类型的事件,那么处理该事件的接口为 XXXListener);它们的父类为 EventObject 类。 5)事件编程的基本原则: 事件处理的类代码要对某一类事件加以处理,则应实现它们所对应的接口,并且给出该接口中定义的全部事 件响应函数的功能实现(重写其函数体);然后在创建组件时注册该事件的监听器(响应者)。 6)事件注册: 事件源通过对特定的事件进行注册,以指定该事件的监听器(响应者)是谁。 7)事件注册函数: 函数名由 “add + 事件类型对应的监听器接口名称 ” 组成;函数参数为监听器对象(实现事件响应的类的对象,如容器组件自身响应该事件,则监听器对象应用 this 代表)。 8)事件编程步骤: ① 实现某一事件的监听器接口(定义事件处理类并实现监听器接口)。 ② 在事件处理类中重写(实现)其事件处理的函数体。 ③ 在创建 AWT组件时注 册事件处理代码以指定该事件的监听器(响应者)是谁。 由于事件监听器接口是 Abstract 类型,意谓着实现该接口的类应全部实现其各个成员函数,但实际应用中可能只需处理某些事件响应代码;此时再采用实现事件监听器接口可能会导致编程复杂。 JDK中提供事件适配器方式来实现事件编程。 1) 每一种监听器接口有相应的适配器类,程序员只需让事件处理类从某一适配器类派出而不采用实现监听器接口的方式,这样仅需重写用户感兴趣的相应函数体代码。 2) 在事件注册时,应将监听器设为适配器的派生类(子类)对象,该适配器类中 事件响应函数将被执行。 14 实例 3[4]: 事件触发实例: //侦听器对象 ButtonEventHandler(用来侦听按钮的点击操作) class ButtonEventHandler implements ActionListener { //窗体对象 private EventDemo form = null。 //通过构造体传入窗体对象, //作用在于让侦听器对象明白事件源处于 //哪个窗体容器中 public ButtonEventHandler(EventDemo form) { = form。 } //委托方法 public void actionPerformed(ActionEvent e) { //该方法将会把事件的处理权交给窗体容器类的 //btnPress_Click 方法处理。 (e)。 } } 15 基于 AWT 及 SWING 的游戏界面开发 抽象窗口工具包 AWT (Abstract Window Toolkit) 是 API 为 Java 程序提供的建立图形用户界面 GUI (Graphics User Interface)工具集, AWT 可用于Java 的 applet 和 applications 中。 它支持图形用户界面编程的功能包括: 用户界面组件;事件处理模型;图形和图像工具,包括形状、颜色和字体类;布局管理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关;数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴。 AWT 是 Swing 的基础。 Swing 的产生主要原因就是 AWT 不能满足图形化用户界面发展的需要。 AWT 设计的初衷是支持开发小应用程序的简单用户界面。 随着发展的需要, Swing 出现了, Swing 组件几乎 都是轻量组件,与重量组件相比,没有本地的对等组件,不像重量组件要在它们自己的本地不透明窗体中绘制,轻量组件在它们的重量组件的窗口中绘制。 Swing 是由 100%纯 Java 实现的,Swing 组件是用 Java 实现的轻量级( lightweight)组件,没有本地代码,不依赖操作系统的支持,这是它与 AWT 组件的最大区别。 由于 AWT组件通过与具体平台相关的对等类( Peer)实现,因此 Swing 比 AWT 组件具有更强的实用性。 Swing 在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。 Swing 采用了 一种 MVC 的设计范式,即 ” 模型 视图 控制 ”( ModelViewController),其中模型用来保存内容,视图用来显示内容,控制器用来控制用户输入。 Swing 外观感觉采用可插入的外观感觉( Pluggable Look and Feel, PLamp。 F) 实例 4:[9] Windows 经典游戏扫雷 GUI 构造代码: package。 import .*。 import .*。 import .*。 import。 16 public class Game extends JFrame implements ActionListener{ private Container myContainer。 private GridLayout myLayout。 ExtendButton[] myButton = new ExtendButton[81]。 private Game() { (“ Game” )。 ( 500,500 )。 ()。 } private void InitButton() { myContainer = getContentPane()。 myLayout = new GridLayout( 9, 9, 1, 1 )。 ( myLayout )。 for(int i=0。 i 81。 i++) { myButton[i] = new ExtendButton()。 myButton[i].SetPostion(i)。 (myButton[i])。 myButton[i].addActionListener( this )。 } ()。 (13)。 show()。 } 17 多线程技术的应用 线程 简介 [15] 进程就是程序的运行时的一个实例。 线程 可以看作单独地占有 CPU时间来执行相应的代码的。 对早期的计算机(如 DOS)而言,线程既是进程,进程既是进程,因为 它 是单线程的。 当然一个程序可以是多线程的,多线程的各 个线程看上去像是并行地独自完成各自的工作,就像一台一台计算机上运行着多个处理机一样。 在多处理机计算机上实现多线程时,它们确实可。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。