用好粒子系统,自己也可以自制一场烟火!
比如说这样的,这就是一个慢慢优化的过程。
下面就上代码大家仔细体会一下吧
import javax.swing.JFrame;
import javax.swing.JPanel;
public class FireWorksMain extends JPanel {
public static void main(String[] args) {
FireWorksMain fw = new FireWorksMain();
fw.initUI();
}
public void initUI() {
JFrame f = new JFrame();
f.setTitle("烟花");
f.setSize(800, 700);
f.setDefaultCloseOperation(3);
f.setLocationRelativeTo(null);
f.add(this);
f.setVisible(true);
FireWorksThread ft = new FireWorksThread(this);
ft.start();
}
}
主函数类都很熟悉了吧
import java.awt.Color;
public class Particle {
// 粒子的起点,速度,重力
public VecT position, velocity, acceleration;
public Color color;
public double life, age, start_time;
public int size;
// 在界面上绘制时的x,y坐标
public int x, y;
public int getX() {
return (int) position.x;
}
public int getY() {
return (int) position.y;
}
}
粒子类也是一样的
public class VecT {
public double x, y;
public VecT(double x, double y) {
this.x = x;
this.y = y;
}
// 向量加
public VecT add(VecT p) {
return new VecT(this.x + p.x, this.y + p.y);
}
// 向量乘
public VecT multiply(double f) {
return new VecT(this.x * f, this.y * f);
}
}
向量类也不要变
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics;
import j