import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class SnonDemo {
public static void main(String[] args) {
JFrame jFrame = new JFrame();
jFrame.setTitle("飄雪");
jFrame.setSize(800,600);
jFrame.setResizable(false);
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SnowPanel panel = new SnowPanel();
//啓動線程
Thread t = new Thread(panel);
t.start();
jFrame.add(panel);
jFrame.setVisible(true);
}
}
class SnowPanel extends JPanel implements Runnable{
int[] snowX;//x座標集合
int[] snowY;//y座標集合
public SnowPanel(){
//創建300個星星
snowX = new int[300];
snowY = new int[300];
Random r = new Random();
for(int i=0;i<snowX.length;i++){
snowX[i] = r.nextInt(800);
snowY[i] = r.nextInt(600);
}
}
@Override
public void paint(Graphics g){
super.paint(g);
setBackground(Color.BLACK);
g.setColor(Color.WHITE);
g.setFont(new Font("宋體",Font.PLAIN,15));
for(int i=0;i<snowX.length;i++){
g.drawString("*", snowX[i], snowY[i]);
}
}
@Override
public void run(){
Random r = new Random();
while(true){
//1.修改星星座標
for(int i=0;i<snowY.length;i++){
//方式一
if(snowY[i]>600){
// snowY[i] = -snowY[i];
snowY[i] = 0;
}else{
snowY[i]++;
}
//方式二
// snowY[i]=(snowY[i]++)%600;
//snowX[i] = r.nextInt(4)>1 ? snowX[i]-1 : snowX[i]+1 ;
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
//2.重新繪畫
repaint();
}
}
}