<applet code=FishEat.class codebase=. width=640 height=480>
alt="Your browser understands the <APPLET> tag but isn't running the applet, for some reason."
Your browser is completely ignoring the <APPLET> tag!
</applet>
code=FishEat.class指明经过编译的Java类文件;codebase=.指明该类文件所在路径;width=640 height=480指明Java Applet的显示大小。
alt=后面字符串在浏览器不支持Java Applet运行时显示。
每个Java Applet都需要从Applet类中派生类。类中有如下重要方法,如表1所示。
表1 Java Applet中重要方法
方法名 |
调用方法 |
Init |
程序装载时只执行一次 |
Start |
每次重新访问Applet时调用 |
Stop |
Applet所在页面被其它页面取代时调用 |
Paint |
需要重绘屏幕时调用 |
Update |
一般用于显式调用paint方法 |
Run |
执行线程中代码 |
游戏中的每种鱼都对应一个gif图形文件。鱼的图形从Internet上下载得到,并且经过PhotoShop处理,使其背景能够透明显示,这样,鱼的图形便能与蓝色背景相融合。所有鱼的图片都有正向和反向两个文件。用getImage函数装载图片,用drawImage函数显示图片。
为了消除图片显示闪烁,可以创建一个后台图形对象,将所有要显示的东西先向这个后台对象写入,然后再一次性地将该后台对象显示到屏幕。
要使小鱼动起来,需要建立一个线程,在该线程中每隔一段时间要按一定规则更改小鱼的坐标。这样周而复始地改变小鱼的坐标并显示,实际效果就是小鱼在不停地游动。
大鲨鱼和小鱼图片相重叠时,程序中会有一个判断,从而增加分数和生命值,并暂停该小鱼的显示,实际效果就是小鱼被吃掉了。
同样,大鲨鱼图片和气泡相重叠时,程序也会进行判断,从而减少生命值。
4 程序代码
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
/*从Applet中派生类,同时加入鼠标处理、线程处理*/
public class FishEat extends Applet implements MouseMotionListener,Runnable
{
public Image offScreenImage; //后台画布
public Graphics offScreen; //后台图形对象
public int mousex,mousey,lastmousex,lastmousey;
//表示鼠标的当前坐标和上一次的坐标
public int direction=1; //表示大鲨鱼的前进方向,1为正向,0为反向
public Thread timer; //时间线程
public int[][] fishpos; //记录小鱼的当前坐标
public int[][] bubblepos; //记录气泡的当前坐标 public int showfish1,showfish2,showfish3,showfish4,
|