java实现下雪雪花飘落并堆积效果
在一个800*600的画布上实现雪花飘落并在下方堆积的一个效果。实现方案是画两层雪花,一层是飘落的,一层是在下方不动并堆积的。 演示效果(黄色的是月亮): 代码:
import java.awt.Color; import java.awt.Frame; import java.awt.Graphics; import java.awt.Panel; public class Snow{ public static void main(String[] args){ Frame w = new Frame();//创建一个面板 w.setSize(800, 600);//设置面板大小 w.setBackground(Color.black);//设置背景颜色 MyJPanel p = new MyJPanel();//创建了一个画布对象 w.add(p); Thread t = new Thread(p);//创建一个线程 t.start();//启动线程 w.setVisible(true);//显示面板 } } class MyJPanel extends Panel implements Runnable{ int[] x = new int[100]; int[] y = new int[100]; int[] y1 = new int[100]; public MyJPanel(){ for(int i=0;i<100;i++){ x[i]=this.randomNum(800); y[i]=this.randomNum(600); } } public void paint(Graphics g){ g.setColor(Color.yellow); g.fillOval(600, 70, 130, 130); g.setColor(Color.black); g.fillOval(550, 50, 130, 130); g.setColor(Color.white); for(int i =0;i<=100;i++){ g.drawString("*", x[i], y[i]); for (int j = -1; j < y1[i]; j++) { g.drawString("*", x[i], 600-j*3); } } } public void run(){ while(true){ for (int i = 0; i < y.length; i++) { if(y[i]<=600){ y[i]++; }else{ y1[i]++; y[i] = 0; } } repaint(); try { Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //随机数生成 public int randomNum(int a){ return (int)(Math.random()*a); } }
上一篇:
IDEA上Java项目控制台中文乱码