📄 snow_down.java
字号:
程序代码:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
public class Snow extends Applet implements Runnable
{
Thread thread;
private Image offImg; // 缓冲图象
private Graphics offG; // 缓冲
Image bgimg ;
private final int snow_num = 200; // 雪花数量
private int[][] snows = new int[snow_num][2];
// 存放雪花位置的数组,[index][0]为x,[index][1]为y
public void init()
{
offImg = createImage(getSize().width, getSize().height); // 创建缓冲图象大小
offG = offImg.getGraphics();
try{
bgimg = getImage(new URL("http://www.delfan.com/images/snow.jpg"));
}catch(Exception e){}
setSize(180,135);
for(int i=0; i<snow_num; i++) // 先随机生成雪花的位置
{
snows[i][0]=(int)(Math.random()*10000) % getSize().width;
snows[i][1]=(int)(Math.random()*10000) % getSize().height;
}
}
public void paint(Graphics g)
{
offG.drawImage(bgimg,0,0,this);
offG.setColor(Color.white);
for(int i=0; i<snow_num; i++) // 画雪花
offG.drawRect(snows[i][0],snows[i][1],1,1) ;
if(offG!=null) g.drawImage(offImg,0,0,this);
}
public void update(Graphics g)
{
paint(g);
}
public void run()
{
Thread current = Thread.currentThread();
while (thread == current)
{
try
{
Thread.currentThread().sleep(40);
} catch (InterruptedException e) {}
for(int i=0; i<snow_num; i++) // 处理下落过程
{
snows[i][0]=snows[i][0]+(int)(Math.random()*1000)%5-2;
snows[i][1]=snows[i][1] + (int)(Math.random()*1000)%3+1;
if(snows[i][1]>getSize().height) snows[i][1]=0;
if(snows[i][0]<0 || snows[i][0]>getSize().width) snows[i][0] =
(int)(Math.random()*1000) % getSize().width;
}
repaint();
}
}
public void start()
{
thread = new Thread(this); // 启动线程
thread.start();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -