水波效果程序:
import java.awt.*;
import java.applet.Applet;
public class Splash extends Applet implements Runnable{
int XMAX=112;
float[] m_Height=new float[XMAX];
float[] m_G=new float[XMAX];
float b=1.01f;
float fWeight=3;
private Thread m_NAMI2D=null;
public boolean mouseDown(Event event,int i,int j){
m_Height[i/4-1]+=j/2;
m_Height[i/4]+=j;
m_Height[i/4+1]+=j/2;
return false;
}
public void paint(Graphics g){
g.setColor(Color.blue);
float f1=3F*fWeight;
float f2=f1-2.0F;
m_Height[0]=m_Height[1];
m_Height[XMAX-1]=m_Height[XMAX-2];
float f=m_Height[0];
for(int i=1;i<XMAX-1;i++){
float f3=((f+f2*m_Height[i]+m_Height[i+1])/f1+m_G[i])/b;
f=m_Height[i];
m_G[i]=f3-f;
m_Height[i]=f3;
g.clearRect((i-1)*4,(int)f3-30,4,60);
g.fillRect((i-1)*4,(int)f3+30,4,60);
}
}
public void run(){
do
try{
repaint();
Thread.sleep(50L);
}
catch(InterruptedException _ex){
stop();
}
while(true);
}
public void start(){
if(m_NAMI2D==null){
m_NAMI2D=new Thread(this);
m_NAMI2D.start();
}
}
public void stop(){
if(m_NAMI2D!=null){
m_NAMI2D.stop();
m_NAMI2D=null;
}
}
public void update(Graphics g){
paint(g);
}
}