二维伞的雨滴效应java
时间: 2023-07-29 10:12:14 浏览: 68
二维伞的雨滴效应可以通过Java语言的图形库实现。下面是一个基于Java Swing的例子:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class UmbrellaRain extends JPanel implements Runnable {
private static final int WIDTH = 600;
private static final int HEIGHT = 600;
private static final int RADIUS = 150;
private List<RainDrop> rainDrops = new ArrayList<>();
public UmbrellaRain() {
setBackground(Color.WHITE);
setDoubleBuffered(true);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Umbrella Rain");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(WIDTH, HEIGHT);
frame.setLocationRelativeTo(null);
frame.setContentPane(new UmbrellaRain());
frame.setVisible(true);
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(10);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
rainDrops.add(new RainDrop(new Random().nextInt(2 * RADIUS), 0));
repaint();
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE);
g.drawOval((WIDTH - 2 * RADIUS) / 2, (HEIGHT - 2 * RADIUS) / 2, 2 * RADIUS, 2 * RADIUS);
for (RainDrop rainDrop : rainDrops) {
g.setColor(Color.BLUE);
g.fillOval((WIDTH - 2 * RADIUS) / 2 + rainDrop.x, (HEIGHT - 2 * RADIUS) / 2 + rainDrop.y,
5, 5);
rainDrop.y += 1;
if (rainDrop.y > 2 * RADIUS) {
rainDrops.remove(rainDrop);
}
}
}
class RainDrop {
int x;
int y;
public RainDrop(int x, int y) {
this.x = x;
this.y = y;
}
}
}
```
这个程序使用了Java的图形库,创建了一个圆形的伞面,并在伞面上模拟了雨滴的落下效果。程序使用一个线程不断地向雨滴列表中添加新的雨滴,然后在`paintComponent`方法中绘制出每一个雨滴,并模拟雨滴下落的过程,当雨滴到达伞面下方时,从雨滴列表中移除。