用java写一个樱花飘落的动态代码
时间: 2024-05-19 17:14:29 浏览: 18
import javax.swing.*;
import java.awt.*;
import java.util.Random;
public class CherryBlossom extends JFrame {
public static void main(String[] args) {
new CherryBlossom();
}
public CherryBlossom() {
super("Cherry Blossom");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setContentPane(new DrawingPanel());
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private class DrawingPanel extends JPanel {
private static final int NUM_OF_CHERRY_BLOSSOMS = 50;
private static final int MAX_Y_COORDINATE = 500;
private static final int MAX_X_COORDINATE = 700;
private static final int MAX_DIAMETER = 20;
private static final int MIN_DIAMETER = 10;
private static final int MAX_SPEED = 5;
private static final int MIN_SPEED = 1;
private final CherryBlossom[] cherryBlossoms = new CherryBlossom[NUM_OF_CHERRY_BLOSSOMS];
private final Random random = new Random();
public DrawingPanel() {
setPreferredSize(new Dimension(MAX_X_COORDINATE, MAX_Y_COORDINATE));
setBackground(Color.WHITE);
for (int i = 0; i < NUM_OF_CHERRY_BLOSSOMS; i++) {
cherryBlossoms[i] = new CherryBlossom(random.nextInt(MAX_X_COORDINATE), random.nextInt(MAX_Y_COORDINATE), random.nextInt(MAX_DIAMETER - MIN_DIAMETER) + MIN_DIAMETER, random.nextInt(MAX_SPEED - MIN_SPEED) + MIN_SPEED);
}
new Thread(() -> {
while (true) {
for (CherryBlossom cherryBlossom : cherryBlossoms) {
cherryBlossom.move();
}
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
repaint();
}
}).start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (CherryBlossom cherryBlossom : cherryBlossoms) {
cherryBlossom.draw(g);
}
}
}
private static class CherryBlossom {
private int x;
private int y;
private final int diameter;
private final int speed;
public CherryBlossom(int x, int y, int diameter, int speed) {
this.x = x;
this.y = y;
this.diameter = diameter;
this.speed = speed;
}
public void move() {
y += speed;
if (y > DrawingPanel.MAX_Y_COORDINATE) {
y = 0;
x = new Random().nextInt(DrawingPanel.MAX_X_COORDINATE);
}
}
public void draw(Graphics g) {
g.setColor(Color.PINK);
g.fillOval(x, y, diameter, diameter);
}
}
}
相关推荐
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)