import java.applet.Applet;
import java.awt.*;
//星がきらめいているようなアニメーションをさせるクラス
public class Star{
private Color col1; //指定された色
private Color col2; //白色
private int an[]; //アニメーションの順序
public Star(int cr,int cg,int cb){
col1 = new Color(cr,cg,cb); //指定された色に設定
col2 = Color.white; //白色
an = new int[6]; //アニメーションの順序
for(int i = 0 ; i < 6 ; i++){
an[i] = i;
}
}
public void star0(Graphics g,int x,int y){ //1段目の星をx,yを中心に書く
g.setColor(col1);
g.drawLine(x ,y ,x ,y );
}
public void star1(Graphics g,int x,int y){ //2段目の星をx,yを中心に書く
g.setColor(col1);
g.drawLine(x - 1 ,y ,x - 1 ,y );
g.drawLine(x + 1 ,y ,x + 1 ,y );
g.drawLine(x ,y - 1 ,x ,y - 1);
g.drawLine(x ,y + 1 ,x ,y + 1);
g.setColor(col2);
g.drawLine(x ,y ,x ,y );
}
public void star2(Graphics g,int x,int y){ //3段目の星をx,yを中心に書く
g.setColor(col1);
g.drawLine(x - 2 ,y ,x - 2 ,y );
g.drawLine(x + 2 ,y ,x + 2 ,y );
g.drawLine(x ,y - 2 ,x ,y - 2);
g.drawLine(x ,y + 2 ,x ,y + 2);
g.setColor(col2);
g.drawLine(x - 1 ,y ,x + 1 ,y );
g.drawLine(x ,y - 1 ,x ,y + 1);
}
public void star3(Graphics g,int x,int y){ //4段目の星をx,yを中心に書く
g.setColor(col1);
g.drawLine(x - 3 ,y ,x - 2 ,y );
g.drawLine(x + 2 ,y ,x + 3 ,y );
g.drawLine(x ,y - 3 ,x ,y - 2);
g.drawLine(x ,y + 2 ,x ,y + 3);
g.setColor(col2);
g.drawLine(x - 1 ,y ,x + 1 ,y );
g.drawLine(x ,y - 1 ,x ,y + 1);
}
public void star4(Graphics g,int x,int y){ //5段目の星をx,yを中心に書く
g.setColor(col1);
g.drawLine(x - 5 ,y ,x - 3 ,y );
g.drawLine(x + 3 ,y ,x + 5 ,y );
g.drawLine(x ,y - 5 ,x ,y - 3);
g.drawLine(x ,y + 3 ,x ,y + 5);
g.setColor(col2);
g.drawLine(x - 1 ,y - 1 ,x - 1 ,y - 1);
g.drawLine(x + 1 ,y + 1 ,x + 1 ,y + 1);
g.drawLine(x + 1 ,y - 1 ,x + 1 ,y - 1);
g.drawLine(x - 1 ,y + 1 ,x - 1 ,y + 1);
g.drawLine(x - 2 ,y ,x + 2 ,y );
g.drawLine(x ,y - 2 ,x ,y + 2);
}
public void star5(Graphics g,int x,int y){ //6段目の星をx,yを中心に書く
g.setColor(col1);
g.drawLine(x - 8 ,y ,x - 5 ,y );
g.drawLine(x + 5 ,y ,x + 8 ,y );
g.drawLine(x ,y - 8 ,x ,y - 5);
g.drawLine(x ,y + 5 ,x ,y + 8);
g.setColor(col2);
g.drawLine(x - 2 ,y - 2 ,x - 1 ,y - 1);
g.drawLine(x + 1 ,y + 1 ,x + 2 ,y + 2);
g.drawLine(x + 1 ,y - 1 ,x + 2 ,y - 2);
g.drawLine(x - 2 ,y + 2 ,x - 1 ,y + 1);
g.drawLine(x - 4 ,y ,x + 4 ,y );
g.drawLine(x ,y - 4 ,x ,y + 4);
}
//(x,y)を中心としてn番目の絵を描写
public void starnum(Graphics g,int n,int x,int y){
switch(n){
case 0:
star0(g,x,y);
break;
case 1:
star1(g,x,y);
break;
case 2:
star2(g,x,y);
break;
case 3:
star3(g,x,y);
break;
case 4:
star4(g,x,y);
break;
case 5:
star5(g,x,y);
break;
}
}
public void twinkle(Graphics g,int n,int x,int y){
if(n >= an.length) n = an.length - 1;
else if(n < 0) n = 0;
starnum(g,an[n],x,y);
}
public void setAnimation(int a[]){//アニメーションの順序を指定
an = a;
}
public int getFrameNum(){ //アニメーションのフレーム数を返す
return an.length;
}
}
|