您现在的位置:中国下载站学院中心网络编程JAVA教程JAVA入门教程 → 文章列表

JBuilder 2005开发Applet游戏全接触

作者:佚名  来源:不详  发布时间:2007-4-13 14:43:15   

减小字体 增大字体

 
 

  引言

  一张湘绣汇集了湘女累月的心血,我们称之为劳动密集型,一块芯片集聚着众多高新的科技,我们称之为技术密集型,一个实例承载了丰富的知识点,是否可以称为知识密集型呢:)?用一张网捞到更多的鱼是渔夫的追求,通过一个实例学到更多的知识点则是我们这些开发人员的企盼。

  本文拟通过一个耳熟能详的指法练习游戏讲解如何在JBuilder 2005下开发Applet应用程序,通过本文,你将可以学习到图形用户界面开发、动画处理、声音播放、事件处理、多线程、I/O读写、Applet打包、Applet安全模型、数字签名、JRE插件制作、JDK5.0等方面的知识,并适时介绍笔者一些开发经验。

  指法练习Applet游戏介绍

  1、界面及功能

  指法练习的Applet游戏的界面如下图所示:

  

  图 1 指法练习的用户界面

  如上图所示,这个Applet共由11个组件组成,左边的主界面是画布Canvas组件,被分隔为10个栏。程序会随机在这些栏中产生下落的字母,用户按下匹配的字母键盘按键后,即为击中,相应的字母将消失,正确数递增1;字母落到画布底端后,还没有被击中,失败数递增1;每产生一个下落的字母,总数递增1。

  游戏提供了3个JButton的按钮,分别用于控制游戏的开始/暂停、结束以及保存游戏成绩。在未启动游戏前第一个按钮显示为三角箭头的图标,点击后启动游戏,随后按钮图标切换为暂停的图标。而第二个为停止按钮,其上显示结束的图标,当游戏处于运行或暂停的状态时,点击该按钮将停止游戏以便重新开始。而第三个按钮保存游戏的成绩到客户端的D:esult.txt文件中。

  整个界面采用BorderLayout布局管理器,画布位于BorderLayout.CENTER区,而右边的控制台JPanel位于BorderLayout.EAST区。控制台的JPanel采用GridLayout布局管理器。

  2、程序组成

  每个下落的字母对应一个线程实例,称为DropCharThread线程,它由一个产生器定时产生出来,这个产生器也是一个线程称为GenerateDropThread线程,下面是这个Applet的类图:

  

  图 2 Applet类图

  TypeTrainApplet类继承了JApplet,是游戏的主类,DropCharThread和GenerateDropThread都是其内部类,后两者都继承Thread,以线程的方式运行,下面对这3个类重要的成员变量和成员方法进行说明。

  1).TypeTrainApplet

  继承JApplet的Applet主类,负责构造用户界面、响应用户操作事件、更新游戏统计数据等。

  · 重要成员变量

  统计数据变量

volatile int totalCount = 0;//生产下落字母的总数。
volatile int rightCount = 0;//正确击中的字母数。
volatile int errorCount = 0;//未被击中且到达画布底部的字母数。

  这3个变量用volatile作了修饰,这是因为这3个变量会被每个字母下落线程更改,为防止各个线程通过各自的缓存更改变量值造成线程间值的不同步,需要将这3个变量设置为volatile的类型,这样这些变量的更改值对于其他线程马上可见。

   字母下落速率控制变量

private static int stepLen = 2; //每次下落的步长,即字母每移一步的象素。
private static int stepInterval = 50; //每两步之间的时间间隔,以毫秒为单位。
private static int columnCount = 10; //画布被分隔为多个栏
private static int generateInterval = 500; //创建一个新的下落字母线程的时间间隔,以毫秒为单位

  Applet通过通过这4个变量达到控制产生字母的快慢和字母下落的速度及栏数,可以进一步规划这些值,以形成游戏的难度级别。有鉴于此,我们特地将这些参数的值通过HTML的<Applet>参数传入。这样,只需要更改HTML的<applet>参数值就可以达到控制游戏难度级别的目标,而不需更改Applet程序。

   其他

int colWidth; //下落字母每栏的宽度,在运行期才获取这个变量值,它由画布的宽度和栏数决定。
volatile char pressKeyChar; //记录当前按键对应的字母。
int statusCode = 0; //记录游戏所处的状态,其中1:运行态、,2:暂停态 0:停止态。

  · 重要成员方法

private void drawResult()//将统计结果写到界面的对应JLabel中。
private void resetGame()//重置游戏现场

  2) DropCharThread

  是一个线程,将一个随机的字母在画布的特定栏中往下落下,并实时检测是否被击中,如果击中马上消失,否则一直落到画布的底部。

  ·重要成员变量

char c; //对应的字母
int colIndex; //对应画布的栏序号,第一栏为1,第二栏为2,以此类推
int x, y; //当前字母在画布中的坐标

  ·动作类型常量

private static final int ACTION_DRAW_FONT = 1; //表示画字符
private static final int ACTION_CLEAR_FONT = 2; //表示清除字符

  不应当直接用1或2表示动作的类型,而应该定义一个更有意义的常量,这样不但于理解,也便于以后的维护。

  ·重要成员方法

public DropCharThread(char c, int colIndex)//构造函数,传入特定的字母和栏序号
private void draw(int actionType)//在画布中特写的位置上画字母

  3) GenerateDropThread

  ·重要成员变量

Random random = new Random(); //负责产生随机数

  ·重要成员方法

private char getRandomChar()//获取一个随机的字母

  负责定时产生一个DropCharThread线程实例,通过generateInterval成员变量控制产生DropCharThread线程实例的频率。

  当游戏玩家点击Applet的开始按钮后,Applet将启动游戏,这3个类之间的交互关系可以通过以下的顺序图来描述,如下图所示:

  

  图 3 开始游戏的顺序图

  1)当用户按下Applet的开始按钮后激发一个事件。

  2) Applet响应这个事件,调用事件响应方法,在方法中实例化一个GenerateDropThread线程,并启动这个线程。

  3) GenerateDropThread线程定时产生一个DropCharThread线程,并让赋予一个随机的字母和栏序号。

  4)DropCharThread线程启动,将字母在特定的栏中从上至下落下。

  程序框架

  1、利用向导生成Applet

  首先创建一个工程(File->New...->Project->双击Project页中的Project图标),我们将工程名取为game,然后利用下面的步骤,调用Applet向导生成TypeTrainApplet。

  1) 启动Applet向导

  File->New...->Web->双击Web页中Applet的图标启动共4步的Applet向导。

  2) 向导第1步,填写Applet的详细信息。

  

  图 4 Applet向导第1步

  ·ClassName:Applet的类名,填入TypeTrainApplet

  ·Package:包名,接受默认值

  ·Base Class:父类,有两个选项,一个是java.applet.Applet,另一个是javax.swing.JApplet。前者以AWT为基础,而后者以Swing为基础。如果客户端浏览器的JRE版本很低,且你不希望客户下载额外的插件,则需要考虑用java.applet.Applet,且不能应用高版本JDK中的特性,这里我们用javax.swing.JApplet。

  ·Generate header comments:在产生Applet代码时,产生类标题头的注释说明,你大可不必生成这些注释。

  ·Can run standalone:是否将Applet设置为可独立运行,如果勾选,JBuilder为其生成了一个main函数,这样就可以在脱离浏览器或AppletViewer的情况下,像一般可运行类一样运行这个Applet中的功能,我们不勾选它。

  ·Generate standard methods:是否生成Applet的标准函数,大家都知道Applet通过4个函数管理着Applet的生命周期,它们分别是init()、start()、stop()、destroy()。如果不勾选这个选项,向导只会生成init()方法,而其他3个方法不会生成。在我们的例子中,需要用到其他3个方法,所以需要勾选。

  按Next到下一步。

  3) 定义Applet的参数

  Applet的参数是指通过网页中<applet>标签的<param>指定的参数值,这些值可以在Applet类中引用到。这样就允许在不改变Applet程序的情况下,仅通过网页中<applet>属性值的更改控制Applet的表现。我们在这一步中为Applet设置4个控制变量参数,如下图所示:

  

  图 5 为Applet设置参数

  这一步的设置,不但为网页生成了参数声明,还为Applet程序生成了从网页获取参数值的方法,在Applet初始化时,即将网页中的参数值赋给Applet的成员变量。

  点击Add Parameter新增一行,声明一个新的参数,其中Name*为网页中参数的名字,而Variable*为Applet类成员变量名,通过Type*栏设置成员变量的数据类型。你还可以为参数在Default栏中指定一个默认的值,在Desc中给出描述说明信息,其中带*的栏是必填的栏。

  点击Next到下一步。

  4) 设置包含这个Applet的网页

  在这一步里,我们指定包含这个Applet网页的<applet>标签的一些属性,如下图所示:

  


在百度中搜索更多JBuilder 2005开发Applet游戏全接触相关网页 转贴于:中国下载站

  • 上一篇文章:Java新手留意:Java编程三十条规则
  • 下一篇文章:关于Java栈与堆的思考
  • 阅读统计:[]
  • 中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页

    相关文章
    文章评论(评论内容只代表网友观点,与本站立场无关!)

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

             (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码


    设为首页 - 关于我们 - 广告服务 - 网站地图 - 加入收藏 - 网站声明 - 网站帮助 - 友情链接

    • Copyright (C) 2006-2008 www.cndownz.com All Rights Reserved.
      中国下载站 版权所有. 粤ICP备05141802号. 对本站有任何建议、意见或投诉,请来信:cndownzcom@yahoo.com.cn.
      喜欢中国下载站(cndownz.com),请把中国下载站(cndownz.com)告诉你QQ上的5位好友,多谢支持!