📄 rocket.java
字号:
//这个类表示一个Rocket
import java.awt.*;
import java.applet.*;
import java.util.*;
import java.net.*;
class Rocket
{
public boolean sleep=true;
private int energy,patch,length,
mx,my, //显示区域长度,宽度
gravity, //重力大小,表示碎片下降快慢
centerRocketX,centerRocketY, //Rocket中心坐标
vx[],vy[], //Rocket中保存碎片patch末坐标点的数组赋值
//坐标点以Rocket中心为原点
offX,offY, //patch相对于Rocket偏移的坐标
red,blue,green,
t;
private Random random;
public Rocket(int a,int b,int g)
{
mx=a;
my=b;
gravity=g;
}
public void init(int e,int p,int l,long seed)
{
//e:Rocket爆炸能量
//p:Rocket中patch个数
//l:每一个patch长度
//seed:限制init()方法中几个随机数的最大值
int i;
energy=e; //给烟火Rocket能量赋值
patch=p; //给爆炸碎片个数赋值
length=l; //给碎片长度赋值
random=new Random(seed);
//创建碎片数组
vx=new int[patch];
vy=new int[patch];
red=(int)(random.nextDouble()*128)+128;
blue=(int)(random.nextDouble()*128)+128;
green=(int)(random.nextDouble()*128)+128;
//给Rocket中心坐标赋值
centerRocketX=(int)(Math.random()*mx/2)+mx/4;
centerRocketY=(int)(Math.random()*my/2)+my/4;
//给每一个patch末坐标点赋值
for(i=0;i<patch;i++)
{
vx[i]=(int)(Math.random()*energy)-energy/2;
vy[i]=(int)(Math.random()*energy*7/8)-energy/8;
}
}
public void start()
{
t=0;
sleep=false;
}
public void show(Graphics g)
{
if(!sleep)
if(t<length)
{
int i,c;
double s;
Color color;
//随机设置显示颜色
c=(int)(random.nextDouble()*64)-32+red;
if(c>=0&&c<256)
red=c;
c=(int)(random.nextDouble()*64)-32+blue;
if(c>=0&&c<256)
blue=c;
c=(int)(random.nextDouble()*64)-32+green;
if(c>=0&&c<256)
green=c;
color=new Color(red,blue,green);
for(i=0;i<patch;i++)
{
s=(double)t/100;
offX=(int)(vx[i]*s);
offY=(int)(vy[i]*s-gravity*s*s);
g.setColor(color);
//在坐标(centerRocketX+offX,
// centerRocketX-offY)处画点
g.drawLine(centerRocketX+offX,centerRocketY-offY,
centerRocketX+offX,centerRocketY-offY);
//如果这个patch远离Rocket,则应画两个点
if(t>=length/2)
for(int j=0;j<2;j++)
{
s=(double)((t-length/2)*2+j)/100;
offX=(int)(vx[i]*s);
offY=(int)(vy[i]*s-gravity*s*s);
g.setColor(Color.black);
//在坐标(centerRocketX+offX,
// centerRocketX-offY)处画点
g.drawLine(centerRocketX+offX,centerRocketY-offY,
centerRocketX+offX,centerRocketY-offY);
}
} //for
t++;
} //if
else
{
sleep=true;
}
} //show()
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -