java爱心烟花特效代码
时间: 2024-08-02 14:01:40 浏览: 82
在Java中创建爱心烟花特效通常涉及到动画和图形处理,这里提供一个简单的示例,使用Java Swing库来绘制动态爱心形状。请注意,这只是一个基础的概念,实际应用中可能需要更复杂的算法和图形库如JavaFX。
```java
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Path2D;
import java.util.Random;
public class LoveFireworks extends JFrame {
private static final int WIDTH = 800;
private static final int HEIGHT = 600;
private Timer timer;
public LoveFireworks() {
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setLocationRelativeTo(null);
timer = new Timer(50, e -> paintFrame());
timer.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
Random rand = new Random();
for (int i = 0; i < 10; i++) { // 创建10个爱心随机位置
double x = rand.nextDouble() * (WIDTH - 50);
double y = rand.nextDouble() * (HEIGHT - 50);
g2d.setStroke(new BasicStroke(4));
g2d.setColor(Color.getHSBColor((float) rand.nextDouble(), 1, 1)); // 随机颜色
drawHeart(g2d, x + 25, y + 25); // 绘制爱心在随机位置
}
}
private void drawHeart(Graphics2D g2d, double centerX, double centerY) {
Path2D.Float path = new Path2D.Float();
path.moveTo(centerX - 17, centerY + 17);
path.lineTo(centerX + 17, centerY + 17);
path.lineTo(centerX, centerY - 9);
path.quadTo(centerX, centerY - 17, centerX - 9, centerY - 17);
path.lineTo(centerX - 17, centerY + 17);
path.lineTo(centerX - 9, centerY + 9);
path.lineTo(centerX, centerY - 9);
path.closePath();
g2d.fill(path);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new LoveFireworks().setVisible(true));
}
}
```
这个程序会启动一个窗口,每50毫秒会在画布上绘制一个新的随机位置的心形,颜色也随机变化。如果你想要创建更复杂的烟花效果,可以考虑添加运动路径、颜色渐变等特性。