import java.applet.*;
import java.awt.*;
import java.awt.image.*;
/*
*/
public class Fountain extends Applet implements Runnable{
static final int AFTERIMAGENUM=4; //水滴1つに持たせる残像の数
Thread t;
Image buffer;
MemoryImageSource mims;
Palletcolor palletcolor;
Dropofwater dropofwater[];
int image[]; //RGB情報をもった配列
int pallet[]; //対応するピクセルが使っているパレットのインデックスを格納
int width, height;
int maxvelocity; //噴水の水滴が持ち得る最大の初速度
int nowmaxvelocity;
int seednum; //噴水の水滴の最大数
int mindegree; //水滴の打ち出される角度の最低
int maxdegree; //水滴の打ち出される角度の最大
int position[][]; //水滴の位置
long timerstart;
public void init() {
Dimension d = getSize();
width = d.width;
height = d.height;
image = new int[width*height];
mims = new MemoryImageSource(width, height, image, 0, width);
mims.setAnimated(true);
buffer = createImage(mims);
maxvelocity = Integer.parseInt(getParameter("maxvelocity"));
nowmaxvelocity = maxvelocity;
seednum = Integer.parseInt(getParameter("seednum"));
mindegree = Integer.parseInt(getParameter("mindegree"));
maxdegree = Integer.parseInt(getParameter("maxdegree"));
dropofwater = new Dropofwater[seednum];
for(int i=0; i 5000){
palletcolor.setnextColor();
nowmaxvelocity = (int)(maxvelocity * Math.random());
timerstart = System.currentTimeMillis();
}
Thread.sleep(20);
}
}
catch(Exception e){
e.printStackTrace();
}
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
g.drawImage(buffer, 0, 0, this);
}
public void next(){
//まだ打ち出されていない水滴(画面から消えた水滴)を初期化
for(int i=0; iwidth-1 || y>height-1|| y<0){
dropofwater[i].setisonscreen(false);
continue;
}
position[0][y*width + x] = palletcolor.getGradationnum()-1;
}
//前回描画された情報の上に新しい水滴を残像から順に描画
for(int i=0; i