⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beacon.java

📁 Java案例开发集锦,里面提供了很好的学习例子
💻 JAVA
字号:
import java.applet.Applet;import java.awt.Color;import java.awt.Graphics;import java.net.MalformedURLException;import java.net.URL;import java.util.Random; public class Beacon extends Applet implements Runnable{public int AnimationSpeed,           MissileStyleVariability,           MaxMissileNumber,           MaxMissileExplosionEnergy,           MaxMissilePatchNumber,           MaxMissilePatchLength,           Gravity;public String MissileSoundtrack;private int mx,my;private Thread thread=null;private Missile rocket[];public void init()   {   int i;   String p;   p=getParameter("AnimationSpeed");   AnimationSpeed=(p==null)?100:Integer.valueOf(p).intValue();   MissileSoundtrack=getParameter("MissileSoundtrack");   p=getParameter("MissileStyleVariability");   MissileStyleVariability=(p==null)?20:Integer.valueOf(p).intValue();   p=getParameter("MaxMissileNumber");   MaxMissileNumber=(p==null)?5:Integer.valueOf(p).intValue();   p=getParameter("MaxMissileExplosionEnergy");   MaxMissileExplosionEnergy=(p==null)?500:Integer.valueOf(p).intValue();   p=getParameter("MaxMissilePatchNumber");   MaxMissilePatchNumber=(p==null)?50:Integer.valueOf(p).intValue();   p=getParameter("MaxMissilePatchLength");   MaxMissilePatchLength=(p==null)?100:Integer.valueOf(p).intValue();   p=getParameter("Gravity");   Gravity=(p==null)?20:Integer.valueOf(p).intValue();   mx=size().width-1;   my=size().height-1;   rocket=new Missile[MaxMissileNumber];   for(i=0;i<MaxMissileNumber;i++)rocket[i]=new Missile(mx,my,Gravity);   }public void start()   {   if(thread==null)      {      thread=new Thread(this);      thread.start();      }   }public void stop()   {   if(thread!=null)      {      thread.stop();      thread=null;      }   }public void run()   {   int i,       e=(int)(Math.random()*MaxMissileExplosionEnergy*3/4)+         MaxMissileExplosionEnergy/4+1,       p=(int)(Math.random()*MaxMissilePatchNumber*3/4)+         MaxMissilePatchNumber/4+1,       l=(int)(Math.random()*MaxMissilePatchLength*3/4)+         MaxMissilePatchLength/4+1;   long s=(long)(Math.random()*10000);   boolean sleep;   Graphics g=getGraphics();   URL u=null;   while(true)      {      try {          thread.sleep(100/AnimationSpeed);          }      catch(InterruptedException x){}      sleep=true;      for(i=0;i<MaxMissileNumber;i++)         sleep=sleep&&rocket[i].sleep;      if(sleep&&Math.random()*100<MissileStyleVariability)         {         e=(int)(Math.random()*MaxMissileExplosionEnergy*3/4)+           MaxMissileExplosionEnergy/4+1;         p=(int)(Math.random()*MaxMissilePatchNumber*3/4)+           MaxMissilePatchNumber/4+1;         l=(int)(Math.random()*MaxMissilePatchLength*3/4)+           MaxMissilePatchLength/4+1;         s=(long)(Math.random()*10000);         }      for(i=0;i<MaxMissileNumber;i++)         {         if(rocket[i].sleep&&Math.random()*MaxMissileNumber*l<1)            {            try {                u=new URL(getDocumentBase(),MissileSoundtrack);                }            catch(MalformedURLException x){}            play(u);            rocket[i].init(e,p,l,s);            rocket[i].start();            }         rocket[i].show(g);         }      }   }public void paint(Graphics g)   {   g.setColor(Color.black);   g.fillRect(0,0,mx+1,my+1);   }}class Missile{public boolean sleep=true;private int energy,patch,length,            mx,my,            gravity,            ox,oy,            vx[],vy[],            x,y,            red,blue,green,            t;private Random random;public Missile(int a,int b,int g)   {   mx=a;   my=b;   gravity=g;   }public void init(int e,int p,int l,long seed)   {   int i;   energy=e;   patch=p;   length=l;   random=new Random(seed);   vx=new int[patch];   vy=new int[patch];   red=(int)(random.nextDouble()*128)+128;   blue=(int)(random.nextDouble()*128)+128;   green=(int)(random.nextDouble()*128)+128;   ox=(int)(Math.random()*mx/2)+mx/4;   oy=(int)(Math.random()*my/2)+my/4;   for(i=0;i<patch;i++)      {      vx[i]=(int)(Math.random()*energy)-energy/2;      vy[i]=(int)(Math.random()*energy*7/8)-energy/8;      }   }public void start()   {   t=0;   sleep=false;   }public void show(Graphics g)   {   if(!sleep)      if(t<length)         {         int i,c;         double s;         Color color;         c=(int)(random.nextDouble()*64)-32+red;         if(c>=0&&c<256)red=c;         c=(int)(random.nextDouble()*64)-32+blue;         if(c>=0&&c<256)blue=c;         c=(int)(random.nextDouble()*64)-32+green;         if(c>=0&&c<256)green=c;         color=new Color(red,blue,green);         for(i=0;i<patch;i++)            {            s=(double)t/100;            x=(int)(vx[i]*s);            y=(int)(vy[i]*s-gravity*s*s);            g.setColor(color);            g.drawLine(ox+x,oy-y,ox+x,oy-y);            if(t>=length/2)               {               int j;               for(j=0;j<2;j++)                  {                  s=(double)((t-length/2)*2+j)/100;                  x=(int)(vx[i]*s);                  y=(int)(vy[i]*s-gravity*s*s);                  g.setColor(Color.black);                  g.drawLine(ox+x,oy-y,ox+x,oy-y);                  }               }            }         t++;         }      else         {         sleep=true;         }   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -