📄 dot.java
字号:
package FireFlower;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.util.Vector;
//所有烟花式样的父类,方便以后添加烟花式样
public abstract class Dot {
int x=30;//该点的横坐标
int y=30;//该点的竖坐标
Color col; //该点的颜色
int pace=30;//该点上升的速度
int size=6;//点的大小
final Point endPoint=new Point();//记录该点完结的位置
//记录该点的状态,就是是否是爆破状态,1是上升状态,2是爆炸状
//态的初始化,3是爆炸状态,4是消失状态
int state=1;
int circle=1;
LittleDot[] ld=new LittleDot[200];
int WALLOP=20; //设爆炸后每个点所受到的冲击力是10N
int GRAVITY=20;
public Dot(Color col,int endX,int endY){
circle=1;
state=1;
pace=25;
this.x=endX;
this.y=FireFlower.SIZE_Y-80;
this.col=col;
endPoint.x=endX;
endPoint.y=endY;
state=1;
}
public void rise(){
//处理上升的的情况
y-=pace;
x=x;
if(y<=endPoint.y)y=endPoint.y-2;
if(x<=endPoint.x)x=endPoint.x-2;
}
// 判断是否爆炸
public boolean whetherBlast(){
//判断是否爆炸
if(y<=endPoint.y&&x<=endPoint.x){
// state=2;
return true;}
else return false;
}
// 初始化爆炸的情况
public abstract LittleDot[] initBlast();
// 处理爆炸的情况
public abstract LittleDot[] blast();
public void myPaint(Graphics g,Vector lList){
if(state==1){
g.setColor(col);
g.fillOval(x,y,size,size);
g.fillRect(x+2,y+6,2,4);
}
else if(state==2){
g.setColor(col);
g.fillOval(x,y,size,size);
LittleDot[] ld2=initBlast();
ld=new LittleDot[ld2.length];
ld=ld2;
for(int i=0;i<ld.length/4;i++){
g.setColor(ld[i].col);
g.fillOval(ld[i].x,ld[i].y,2,2);
}
state=3;
}
else if(state==3){
circle++;
//System.out.println(dot.circle);
this.ld=blast();
for(int i=0;i<ld.length;i++){
g.setColor(ld[i].col);
g.fillOval(ld[i].x,ld[i].y,2,2);
} //for
}
else if(state==4){
synchronized(lList){
lList.remove(this);}
}
}
public String toString(){
return "该点现在得位置是x="+x+",y="+y+"," +
"爆炸点是x="+endPoint.x+",y="+endPoint.y+"颜色是"+col;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -