用Java做一个星空程序
时间: 2024-01-13 17:04:27 浏览: 116
微信小程序的后端Java Demo程序
当使用Java来实现一个星空程序时,你可以借助Java的图形库来绘制星空效果。下面是一个简单的示例代码,展示了如何使用Java Swing库来创建一个绘制星空的程序:
```java
import javax.swing.*;
import java.awt.*;
public class StarrySky extends JFrame {
private static final int WIDTH = 800; // 窗口宽度
private static final int HEIGHT = 600; // 窗口高度
private Star[] stars; // 星星数组
public StarrySky() {
setTitle("Starry Sky");
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
// 初始化星星数组
stars = new Star[100];
for (int i = 0; i < stars.length; i++) {
int x = (int) (Math.random() * WIDTH);
int y = (int) (Math.random() * HEIGHT);
int size = (int) (Math.random() * 5) + 1;
int speed = (int) (Math.random() * 3) + 1;
stars[i] = new Star(x, y, size, speed);
}
}
@Override
public void paint(Graphics g) {
super.paint(g);
// 绘制背景
g.setColor(Color.BLACK);
g.fillRect(0, 0, WIDTH, HEIGHT);
// 绘制星星
g.setColor(Color.WHITE);
for (Star star : stars) {
g.fillOval(star.getX(), star.getY(), star.getSize(), star.getSize());
}
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
StarrySky starrySky = new StarrySky();
starrySky.setVisible(true);
// 更新星星位置
while (true) {
for (Star star : starrySky.stars) {
star.updatePosition();
}
starrySky.repaint();
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
class Star {
private int x; // x坐标
private int y; // y坐标
private int size; // 大小
private int speed; // 移动速度
public Star(int x, int y, int size, int speed) {
this.x = x;
this.y = y;
this.size = size;
this.speed = speed;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public int getSize() {
return size;
}
public void updatePosition() {
y += speed;
if (y > StarrySky.HEIGHT) { // 如果超出窗口范围,则重新从顶部开始
y = 0;
x = (int) (Math.random() * StarrySky.WIDTH);
}
}
}
```
这个程序使用Java的Swing库创建了一个窗口,并通过继承JFrame类来实现。在窗口中绘制星空效果,首先初始化了一些随机位置和大小的星星对象,并在`paint`方法中使用`Graphics`对象绘制这些星星。然后,通过不断更新星星的位置和重绘窗口来实现星星的移动效果。
你可以将上述代码保存为`StarrySky.java`文件,并使用Java编译器进行编译,然后运行该程序,即可看到一个简单的星空效果。
阅读全文