import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.security.Key;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Rain4 {
public static void main(String[] args) {
JFrame frame = new JFrame(); //實例化窗體對象frame
Pool pool = new Pool(); //容器
frame.setUndecorated(true); //啓用裝飾
frame.add(pool); //添加容器到對象
frame.setVisible(true); //顯示窗口
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//關閉窗口時退出程序
frame.setSize(1920, 1080); //寬,高
frame.setResizable(false); //不可改變窗口大小
frame.setBackground(Color.black); //背景黑色
frame.setLocationRelativeTo(null); //居中
frame.setOpacity(1.0f); // 設置窗體透明度
frame.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(new ImageIcon("/images/back.png").getImage(), //鼠標樣式
new Point(10, 20), "stick"));
frame.addKeyListener(new KeyListener() {//鍵盤監聽
public void keyPressed(KeyEvent e) {//鍵盤事件
if (e.getKeyCode() == KeyEvent.VK_ESCAPE || e.getKeyCode() == KeyEvent.VK_SPACE) { //ESC或空格見退出
System.exit(0);
}
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
});
pool.action();
}
}
@SuppressWarnings("serial")
class Pool extends JPanel {
Random r = new Random();
Rain[] str;
public Pool() {
str = new Rain[200];
for (int i = 0; i < str.length; i++) {
str[i] = new Rain();
}
}
public void paint(Graphics g) {
ImageIcon back = new ImageIcon("images/back.jpg");// 背景圖
g.drawImage(back.getImage(), 0, 0, getWidth(), getHeight(), null);
// BufferedImage image = new BufferedImage(1920, 1080,
// BufferedImage.TYPE_INT_RGB);
// g.drawImage(image, 0, 0, null);
for (int i = 0; i < str.length; i++) {
Font f = new Font("微軟雅黑", Font.PLAIN, 2);
g.setFont(f);
g.setColor(str[i].color);
g.drawLine(str[i].x, str[i].y, str[i].x, str[i].y - r.nextInt(50));
}
}
public void action() {
for (int i = 0; i < str.length; i++) {
str[i].start();
}
while (true) {
repaint();
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Rain extends Thread {
Random r = new Random();
int x, y, e, g, b, step;
Color color;
public Rain() {
y = r.nextInt(1000);
x = r.nextInt(1920);
step =100;// 防止移動距離爲零
}
public void move() {
step-=1;
if(step<2){
step +=200;
}
if (r.nextInt(5) <2) {
y += step;
if (y >= 1080) {
color = new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255));
y = 0;
x = r.nextInt(1920);
}
} else {
if (x > 1920) {
color = new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255));
x = 0;
}
}
}
public void run() {
while (true) {
move();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
JAVA流星雨
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.