(五)、漫天星辰
import java.awt.*; import java.util.Random; public class panel extends Panel implements Runnable { int x=10; int y=10; int size=30; int m=500; int n=350; int k=650; int s=200; int f=200; public void paint(Graphics g) { //绘画云朵 g.setColor(Color.LIGHT_GRAY); g.fillOval(m,250,300,150); g.fillOval(n,300,300,100); g.fillOval(k,300,300,100); //绘画月亮 Color c = new Color(255, 255, 0); g.setColor(c); g.fillOval(200, 200, 100, 100); Color c1 = new Color(0, 0, 0); g.setColor(c1); //绘制半月 g.fillArc(s, f, 100, 100, 0, 360); //绘画星星 Color c2 = new Color(255, 192, 203); g.setColor(c2); Font f = new Font("黑体", Font.BOLD, size); g.setFont(f); int i=0; Random r=new Random(); while(i++<300){ x=r.nextInt(1980)+1; y=r.nextInt(1024)+1; g.drawString("*", x, y);} } public void run(){ //覆盖线程的操作 while(true){ if(n>=1980){ //云朵 n=350; //左 m=500; //中 k=650; //右 } if(f>310){ //半月 s=200; f=200; } f++; s++; x++; y++; m++; k++; n++; try { Thread.sleep(30); }catch (Exception e){ e.printStackTrace(); }repaint(); } } }
主方法:
import java.sql.SQLOutput; import java.util.*; import java.awt.*; import java.lang.Math; public class hello { public static void main(String []avgs) { Frame f=new Frame(); f.setTitle("宝马"); f.setBackground(Color.BLACK); f.setSize(800,800); panel p=new panel(); f.add(p); Thread t=new Thread(p); //添加线程 t.start(); f.setLocationRelativeTo(null); f.setVisible(true); System.out.println(Thread.activeCount()); //当前线程活跃数目 //Thread.currentThread().getThreadGroup().list(); //得到调用线程的列表 } }
注意:我们在使用Thread 类的sleep()方法的时候,我们要对其进行异常处理操作,否则会报错的.
(六)、提词器
方法类:
import java.awt.*; import java.util.Random; public class panel extends Panel implements Runnable { int x=100; public void run(){ while (true){ x=x+10; if(x>1920){ x=100; } try { Thread.sleep(30); }catch (Exception e){ e.printStackTrace(); }repaint(); } } public void paint(Graphics g) { Font f=new Font("黑体",Font.BOLD ,80); Color c=new Color(225,215,30); g.setColor(c); g.setFont(f); g.drawString("你",x,250); } }
主类:
import java.sql.SQLOutput; import java.util.*; import java.awt.*; import java.lang.Math; public class hello { public static void main(String []avgs) { Frame f=new Frame(); f.setTitle("宝马"); f.setBackground(Color.BLACK); f.setSize(1920,1080); panel p=new panel(); f.add(p); Thread t=new Thread(p); t.start(); f.setLocationRelativeTo(null); f.setVisible(true); System.out.println(Thread.activeCount()); //当前线程活跃数目 //Thread.currentThread().getThreadGroup().list(); //得到调用线程的列表 } }
(七)、回弹的小球
类方法
import javax.swing.*; import java.awt.*; import java.util.Random; public class panel extends Panel implements Runnable { int x=100; int y=100; int att=0; public void run(){ while (true){ //设置四个姿态: //右墙 if(att==0){ x++; y++; } //下强 if(att==1){ x--; y++; }if(att==2){//左墙 x--; y--; }if(att==3){//上强 x++; y--; } if(x>733){ if(att==0){att=1;} else{att=2;} } if(y>711){回弹 if(att==1){att=2; }else{att=3;} } if(x<0){ if(att==2){ att=3; }else{ att=0; } } if(y<0){ if(att==3){att=0;} else{att=1;} } try { Thread.sleep(1); }catch (Exception e){ e.printStackTrace(); }repaint(); }} public void paint(Graphics g) { Color c=new Color(255,0,255); g.setColor(c); g.fillOval(x,y,50,50); } }
类方法:
import java.sql.SQLOutput; import java.util.*; import java.awt.*; import java.lang.Math; public class hello { public static void main(String []avgs) { Frame f=new Frame(); f.setTitle("宝马"); f.setBackground(Color.BLACK); f.setSize(800,800); panel p=new panel(); f.add(p); Thread t=new Thread(p); t.start(); f.setLocationRelativeTo(null); f.setVisible(true); } }
(八)满天星辰(垂直降落版本)
基本思路:如果要垂直降落的话,我们需要借助一个载体来帮我们储存乱序的300颗星星,首先我们呢可以想到数组的作用。数组可以帮我们用来储存元素的一系列的操作。首先我们要分析这个数组要建立在paint方法的外面因为如果放在里面,在线程的调用的同时我们的数组也会重新更新。我们的而目的是不让数组更新,所以数组必须在类外进行初始化。初始化的时候我们得想到构造函数,利用构造函数进行对数组得第一个300元素进行随机分配。然后在run函数里面对初始化得数组进行高度++程序,从而到达垂直降落的效果。
类方法:
import javax.swing.*; import java.awt.*; import java.util.Random; public class panel extends Panel implements Runnable { int []m=new int[300]; int []n=new int[300]; public panel(){ //利用构造函数进行初始化前300 for(int i=0;i<300;i++){ Random r=new Random(); int m1=r.nextInt(1920)+1; int n1=r.nextInt(1080)+1; m[i]=m1;n[i]=n1; } } public void run(){ while(true){ for(int i=0;i<300;i++) { n[i]++; if(n[i]==1080){ n[i]=0; } } try { Thread.sleep(10); } catch (Exception e) { throw new RuntimeException(e); }repaint(); } } public void paint(Graphics g){ Font f1 = new Font("黑体", Font.BOLD, 30); Random r = new Random(); int m1=r.nextInt(255)+1; int m2=r.nextInt(255)+1; int m3=r.nextInt(255)+1; g.setFont(f1); Color c = new Color(m1, m2, m3); g.setColor(c); for (int i=0;i<300;i++) { //绘制300个星星 g.drawString("*", m[i], n[i]); } } }
主方法:
import java.sql.SQLOutput; import java.util.*; import java.awt.*; import java.lang.Math; public class hello { public static void main(String[] avgs) { Frame f=new Frame("小球的撞击效果示范图"); f.setSize(1920,1080); f.setBackground(Color.black); f.setLocationRelativeTo(null); panel p=new panel(); f.add(p); Thread t=new Thread(p); t.start(); f.setVisible(true); } }