⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java游戏编程初步--英雄会之强强联手.htm

📁 编写游戏的初步知识
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0057)http://heromeeting.blogdriver.com/heromeeting/267616.html -->
<HTML><HEAD><TITLE>Java游戏编程初步--英雄会之强强联手</TITLE>
<META http-equiv=Content-Type content="text/html; charset=GBK">
<META http-equiv=Pragma content=no-cache>
<META http-equiv=Cache-Control content=no-cache>
<META http-equiv=Expires content=0>
<META 
content="用JBuilder7开发一个简单的J2EE 应用 Java游戏编程初步 JSP拼图  JSP+Servlet+JavaBean&#10;     ORACLE+MySQL&#10;     WEBSERVICE+Structs+EJB&#10;    JBuilder+Eclipse+WorkShop&#10;   Tomcat+Jboss+Weblogic 博客 博客动力 blog blogdriver blogger 中国" 
name=description>
<META 
content="英雄会之强强联手 用JBuilder7开发一个简单的J2EE 应用 Java游戏编程初步 JSP拼图  博客 博客动力 blog blogdriver blogger 中国" 
name=keywords><LINK href="Java游戏编程初步--英雄会之强强联手.files/diary.css" type=text/css 
rel=stylesheet>
<SCRIPT src="Java游戏编程初步--英雄会之强强联手.files/checkReply.js" 
type=text/javascript></SCRIPT>

<META content="MSHTML 6.00.2800.1458" name=GENERATOR></HEAD>
<BODY>
<DIV id=container>
<DIV id=header>
<H1 class=title><A 
href="http://heromeeting.blogdriver.com/">英雄会之强强联手</A></H1></DIV>
<DIV id=category><A 
href="http://heromeeting.blogdriver.com/heromeeting/267610.html">用JBuilder7开发一个简单的J2EE 
应用- -</A>| <A href="http://heromeeting.blogdriver.com/">回首页</A> | - -<A 
href="http://heromeeting.blogdriver.com/heromeeting/268958.html">JSP拼图</A></DIV>
<DIV class=entity>
<H2 class=diaryTitle>Java游戏编程初步- -</H2>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

<P>
<P>现在流行的游戏似乎都是用C或C++来开发的。在java平台上几乎没有很大型及可玩的流行游戏。由于java是个新生语言,他的许多特性还有待大家的发掘,但是我们不能否认Java在游戏编程方面的强大性。本文将带领大家一步一步学习编写Java游戏。最终打造属于自己的Java游戏。</P>
<P>  在开始之前我们得确认你已经安装了Java 
JDK,并已经安装了浏览器软件如IE。本章是以Internet为开发对象,一步一步教大家认识Java的Thread、Applets….以及游戏编程要注意的一些方方面面。并在每一小部分附上了相应的源代码以供大家参考,最后我们还会对我们的游戏程序进行指导性的提示。在文章中我们还穿插了很多建设性的问题,让读者参与到我们的开发中来。但是由于本章指在带领大家进入这个门槛,大部分知识并不会很详细说明,有兴趣的读者可查阅相关的资料补充。在开始之前我们还得确认你已经知道类,继承和java语言的一些基本属性了。</P>
<P>  <B>基本applet</B></P>
<P>  Applets是一种Web浏览器上的小程序,由于applet对系统而言绝对安全,所以它做的事比aaplication有限,但是对于客户端的程序,applets仍然是个很强大的工具。为了浏览和运行方便,我们就以applet为开发对象。</P>
<P>  开发Applets程序,我们得继承Applet类,并覆写必要的函数,下面几个函数控制了Web页面上的applet生成与执行。</P>
<P>
<TABLE cellSpacing=0 cellPadding=0 width="90%" border=1>
  <TBODY>
  <TR>
    <TD width="11%">函数</TD>
    <TD width="89%">作用</TD></TR>
  <TR>
    <TD width="11%">Init()</TD>
    <TD width="89%">这个函数会被自动调用,执行applet的初始化动作—包括组件在版面上的分配,你一定得覆写它</TD></TR>
  <TR>
    <TD width="11%">Start()</TD>
    <TD 
      width="89%">每当浏览器显示applet内容时,都会调用它,让applet开启其正规工作(尤其是那些被stop()关闭的工作),调用init()之后也会调用这个函数</TD></TR>
  <TR>
    <TD width="11%">Stop()</TD>
    <TD 
    width="89%">每当浏览器不显示内容时,都会调用它。让applet关闭某些耗资源的工作,调用destory()之后也会调用这个函数</TD></TR>
  <TR>
    <TD width="11%">Destroy()</TD>
    <TD 
width="89%">浏览器将applet自网页移除之际,便会调用它,以执行”applet不再被使用”应该做的最后释放资源等动作</TD></TR>
  <TR>
    <TD width="11%">Paint()</TD>
    <TD width="89%">让你在Applet界面上进行相应的绘画动作,每次刷新时都会重画</TD></TR></TBODY></TABLE></P>
<P>  所有的applet文件源文件名和java应用程序一样都是.java为扩展名,编译后的执行文件扩展名为.class,由于在applet中已经没有了main()函数,它是和html自动集成,所以我们要执行applet,要在html源文件中放入一特定的标签(tag),才能告诉网页如何装载并执行这个applet,这里有一点要注意,我们执行的网页必须能执行java程序。</P>
<P>  普通Html 源码格式</P>
<P>
<TABLE cellPadding=0 width="100%" bgColor=#ffffff border=0>
  <TBODY>
  <TR>
    <TD>
      <P><HTML></P>
      <P><APPLET CODE="HelloWorld.class" WIDTH=300 HEIGHT=500></P>
      <P></APPLET></P>
      <P></HTML</P></TD></TR></TBODY></TABLE></P>
<P><BR>  <applet code ="HelloWorld.class" width=300 
height=500>这行即applet的执行处。</P>
<P>  applet 执行文档为 ="HelloWorld.class" 告诉网页”applet ”扩展文件为HelloWorld.class</P>
<P>  width 和 height 告诉浏览器这个显示的applet的大小 </P>
<P>  有关标签(tag)的说明,大家可在网上找到很多相关的说明文档。</P>
<P></P>
<P>  <B>线程</B></P>
<P>  由于apllet,java应用程序的执行都和线程有关。我们来大概了解一下线程的概念。</P>
<P>  线程也称为轻型进程 
(LWP)。每个线程只能在单个进程的作用域内活动、协作和数据交换,并且在计算资源方面非常廉价。线程需要操作系统的支持,因此不是所有的机器都提供线程。Java 
编程语言,作为相当新的一种语言,已将线程支持与语言本身合为一体,这样就对线程提供了强健的支持。</P>
<P>  Thread 类是一个具体的类,即不是抽象类,该类封装了线程的行为。要创建一个线程,程序员必须创建一个从 Thread 类导出的新类。程序员必须覆盖 
Thread 的 run() 函数来完成有用的工作。用户并不直接调用此函数;而是必须调用 Thread 的 start() 函数,该函数再调用 
run()。</P>
<P>  但是使用Thread类实现线程,增加了程序的类层次,所以一般程序员都由另一个java线程接口Runnable接口来实现,Runnable接口只有一个函数run(),此函数必须由实现了此接口的类实现。</P>
<P>  线程中有几个重要的方法是我们得了解:</P>
<P>   Thread.start(): 启动一个线程</P>
<P>   Thread.stop(): 停止一个线程</P>
<P>   Thread.sleep(time in milliseconds): 暂停线程在一个等待时间内。<BR></P>
<P><B>  动画技术 </B></P>
<P>  <B>自由降落动画</B></P>
<P>  了解了一些基本概念后,下面我们就开始我们的实质性的工作。我们设计一个球从屏幕顶上降落到屏幕下面,程序实现比较简单,但是这是游戏动画中不可少的一部分。在开始之前我们来看看我们的applet开始语句。</P>
<P>
<TABLE cellPadding=0 width="100%" bgColor=#ffffff border=0>
  <TBODY>
  <TR>
    <TD>
      <P>import java.awt.*;<BR>import java.applet.*; </P>
      <P>public class Ball </P>
      <P>extends Applet implements Runnable </P>
      <P>{ </P>
      <P>public void init() { }</P>
      <P>public void start() { }</P>
      <P>public void stop() { }</P>
      <P>public void destroy() { }</P>
      <P>public void run () { }</P>
      <P>public void paint (Graphics g) { } </P>
      <P>} </P></TD></TR></TBODY></TABLE></P>
<P>  在开始函数中我们要新建程序的主线程,并启动这个线程。一旦做好这些准备工作以后,当applet第一次被显示时,就会创建线程对象的一个实例,并把this对象作为建构方法的参数,之后就可以启动动画了</P>
<P>
<TABLE cellPadding=0 width="100%" bgColor=#ffffff border=0>
  <TBODY>
  <TR>
    <TD>
      <P>public void start ()<BR>{</P>
      <P>// 定义一个新的线程<BR>Thread th = new Thread (this);<BR>// 启动线程<BR>th.start 
      ();</P>
      <P>} </P></TD></TR></TBODY></TABLE></P>
<P>  现在我们来看看线程的run方法,它在循环while(),中每隔20毫秒重画动画场景。sleep这个方法很重要,如果在run循环中没有这部分,圆的重画动作将执行得很快,其他方法将得不到有效执行,也即我们在屏幕上将看不到球的显示。</P>
<P>
<TABLE cellPadding=0 width="100%" bgColor=#ffffff border=0>
  <TBODY>
  <TR>
    <TD>
      <P>public void run ()<BR>{</P>
      <P>//<BR>while (true)<BR>{</P>
      <P>// 重画applet画面<BR>repaint();</P>
      <P>try<BR>{</P>
      <P>// 暂停线程20毫秒<BR>Thread.sleep (20);</P>
      <P>}<BR>catch (InterruptedException ex)<BR>{</P>
      <P>}</P>
      <P>}</P>
      <P>}<BR></P></TD></TR></TBODY></TABLE></P>
<P>  我们接着读下去之前,有几个问题需要回答。你也许会问,浏览器调用Java小程序的start和stop方法吗? run 方法是如何被调用的? 
情况是这样的,当浏览器启动了一个内部线程时,就相应地启动了applet 的运行。当网页显示时,就启动了applet的start 
方法。Start方法创建一个线程对象,并把applet自身传送给线程,以实现run方法。</P>
<P>  此时,两个线程在运行:由浏览器启动的初始线程,以及处理动画的线程。快速查看applet的start方法,可以知道它创建了线程,并启动了它。类似地,当网页被隐藏后,applet的stop方法就调用了线程的stop方法。</P>
<P>  注意:在Applets和Threads中的 start/stop子程序</P>
<P>  在Applet 和Thread 两个类中都有start和stop方法,但它们的功能不同。一旦Applet 
显示时,就调用applet的start方法,一旦applet 隐藏时,就调用applet的stop 
方法。相反,线程的start方法将调用run方法,线程的stop方法将停止正在执行的线程。</P>
<P>public void paint(Graphics g); </P>
<P>  paint() 方法所传入的参数—— java.awt.Grphics 
对象将是一个经裁剪的相关显示区的图像代表(而不会是整个显示区)。我们对圆球图形元素的绘制就是在通过重写 paint()方法,在其中对传入的Graphics 
对象g进行操作完成的。 </P>
<P>  当我们应用程序的逻辑要对系统界面进行更新时,调用 repaint() 方法来通知AWT线程进行刷新操作。repaint() 方法实际会让 
AWT线程去调用另外一个方法,update。update方法在默认情况下会做两件事,一是清除当前区域内容,二是调用其 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -