一个简单的QQ空间下雪效果的Java代码示例

发布时间 2023-10-22 13:03:06作者: 艾伯克

 

 以下是一个简单的QQ空间下雪效果的Java代码示例编辑


```java
import java.awt.*;
import javax.swing.*;

public class SnowFall extends JFrame {
    private int width, height;
    private int snowCount;
    private int[] snowXPositions, snowYPositions;
    private int[] snowSpeed;
    private Color[] snowColors;

    public SnowFall(int width, int height, int snowCount) {
        this.width = width;
        this.height = height;
        this.snowCount = snowCount;
        snowXPositions = new int[snowCount];
        snowYPositions = new int[snowCount];
        snowSpeed = new int[snowCount];
        snowColors = new Color[snowCount];
        for (int i = 0; i < snowCount; i++) {
            snowXPositions[i] = (int) (Math.random() * width);
            snowYPositions[i] = (int) (Math.random() * height);
            snowSpeed[i] = (int) (Math.random() * 5 + 1);
            snowColors[i] = Color.WHITE;
        }
        setBounds(300, 200, width, height);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setResizable(false);
    }

    public void paint(Graphics g) {
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, width, height);
        for (int i = 0; i < snowCount; i++) {
            g.setColor(snowColors[i]);
            g.fillOval(snowXPositions[i], snowYPositions[i], 5, 5);
            snowYPositions[i] += snowSpeed[i];
            if (snowYPositions[i] > height) {
                snowXPositions[i] = (int) (Math.random() * width);
                snowYPositions[i] = 0;
                snowSpeed[i] = (int) (Math.random() * 5 + 1);
                snowColors[i] = Color.WHITE;
            }
        }
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        repaint();
    }

    public static void main(String[] args) {
        new SnowFall(800, 600, 200);
    }
}
```
该代码创建了一个名为SnowFall的JFrame,通过在画布上绘制白色小圆点来模拟下雪效果。在paint方法中,先绘制黑色背景,然后循环绘制每个雪片,更新雪片的y位置并重新绘制画面。每次循环后,程序暂停100毫秒以控制帧率。在main方法中创建SnowFall对象时,可以设置窗口大小和雪片数量。

本文转载:https://www.winkp.com/category/qqkongjian