亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ufo_attack.java

?? JavaApplet實(shí)例編程 本代碼面向Java的愛好者和從事網(wǎng)絡(luò)開發(fā)的院校學(xué)生及技術(shù)人員。
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
// Free to use and copy for any purpose.
//
// No responsability for any mis-use or problems 
// due to the usage of this code on any device.
// (i.e. crashing your browser and/or your OS)
//
//引入所需的類包
import java.awt.*;
import java.applet.*;
import java.util.*;
//將類UFO_Attack轉(zhuǎn)換為線程,并實(shí)現(xiàn)Runnable接口
public class UFO_Attack extends Applet implements Runnable {
	Image buffer   = null ;	// 臨時(shí)圖像緩沖
	Image backdrop = null ; // 背景幕 
	Image bgimg    = null ; // 原背景幕
	Image ufostrip = null ;	// UFO 序列圖
	Image missile  = null ; // 導(dǎo)彈序列圖
	Image missile_explosion = null ; // 導(dǎo)彈爆炸序列圖

	MediaTracker tracker = null ;//媒體跟蹤器,用來監(jiān)測圖像的裝載

	Graphics  buf_g = null ; // 緩沖中的圖像對象
	Graphics  bkd_g = null ; // 背景幕的圖像對象
	Dimension window_size = null;//窗口尺寸
	Font font ;                
	Font font_s ;              //顯示字的字體
	
    AudioClip explosion  = null ; //爆炸聲
    AudioClip newufo   = null ; //新的UFO出現(xiàn)時(shí)發(fā)出的聲音
    AudioClip missile_launch = null ; //導(dǎo)彈發(fā)射的聲音
	
    Thread  game  = null ; //程序的主線程
	boolean game_over = true ; //用來判斷游戲結(jié)束與否
	int     mouse_x   = 100 ; //鼠標(biāo)的X坐標(biāo),用來控制導(dǎo)彈和發(fā)射架的移動
    Rectangle paint_area = new Rectangle() ; //對象出現(xiàn)的區(qū)域
    Rectangle new_area   = new Rectangle() ; //對象即將出現(xiàn)的區(qū)域

	Launcher L  = null ; //定義一個(gè)導(dǎo)彈發(fā)射架
	Missile  M  = null ; //定義一個(gè)導(dǎo)彈
	Vector   UV = new Vector() ; //定義UFO向量,即一個(gè)UFO集合
	Vector   EV = new Vector() ; //定義爆炸向量,即一個(gè)爆炸集合
	
    int NU  = 1 ; //UFO的數(shù)目
	int score = 0 ; //玩家所得分?jǐn)?shù)
	
	// 相應(yīng)對象的顏色設(shè)置
	Color gunColor;
	Color mColor;
	Color ufoColor;
	Color scoreColor;
	Color bgColor;
   //UFO_Attack類的初始化
    public void init() {
	  System.out.println("UFO Attack: A game by Sergio Fanchiotti") ;
	  tracker = new MediaTracker(this) ; //媒體跟蹤器監(jiān)測圖像裝載的情況
      //圖片的裝載
      bgimg = getImage(this.getCodeBase(),"bgimg.gif") ;
	  tracker.addImage(bgimg,0) ;
      ufostrip = getImage(this.getCodeBase(),"ufostrip.gif") ;
      tracker.addImage(ufostrip,0) ;
      missile  = getImage(this.getCodeBase(),"missile.gif") ;
	  tracker.addImage(missile,0) ;
      missile_explosion = getImage(this.getCodeBase(),"explosionstrip.gif") ;
	  tracker.addImage(missile_explosion,0) ;

	  font   = new Font("Helvetica", Font.BOLD, 24) ;
	  font_s = new Font("Helvetica", Font.BOLD, 14) ; //顯示字的字體設(shè)置

      // 設(shè)置所需的顏色
	  bgColor    = new Color(0,0,128);
	  gunColor   = new Color(0,88,0);
	  mColor     = new Color(255,255,255);
	  ufoColor   = new Color(255,0,0);
	  scoreColor = new Color(0,0,255);
  }

    public void start() {
	  // 使用十字型光標(biāo)
	  getFrame(this).setCursor(Frame.CROSSHAIR_CURSOR) ;
      //獲取窗口的尺寸
	  window_size = size();
      //生成緩沖區(qū)
	  buffer = null;
 	  buffer = createImage(window_size.width, window_size.height);

	  backdrop = null;
 	  backdrop = createImage(window_size.width, window_size.height);
      //用背景色來填充緩沖區(qū)
	  buf_g = buffer.getGraphics();
	  buf_g.setColor(bgColor);
	  buf_g.fillRect(0, 0, window_size.width, window_size.height);

      // 顯示初始化信息
      set_say_font(font) ;
      set_say_mode(CENTER) ;
      set_say_style(SHADOW) ;
	  say("UFO",10,80) ;
	  say("ATTACK") ;
      set_say_font(font_s) ;
      set_say_style(NORMAL) ;
	say("") ;
	  say("Click to start") ;
	  say("a game") ;

	  //將緩沖繪制到屏幕上
	Graphics g = getGraphics() ;
      g.drawImage(buffer,0,0,this) ;
      // 初始化導(dǎo)彈發(fā)射架
	  mouse_x = window_size.width/2 ; 
      L = new Launcher(this) ;
      L.set_color(gunColor) ;
      // 初始化導(dǎo)彈
      M = new Missile(this) ;
      M.set_color(mColor) ;
      // 加載聲音文件
	  if (explosion == null) 
	    explosion = getAudioClip(getCodeBase(),"explosion.au") ;
	  if (newufo == null) 
	    newufo    = getAudioClip(getCodeBase(),"sonar.au") ;
	  if (missile_launch == null) 
	    missile_launch = getAudioClip(getCodeBase(),"rocket.au") ;

	  game_over = true ;
      //聲音播放
      newufo.play() ;         
	  missile_launch.play() ;
	  explosion.play() ;
	}
    //停止運(yùn)行函數(shù)
	public void stop() {
	  // 如果線程正在運(yùn)行,強(qiáng)行令其停止 
	  if (game != null) {
	    game.stop() ;
	    game = null ; // and eliminate the thread
	  }
	  // 重新設(shè)置光標(biāo)形狀
	  getFrame(this).setCursor(Frame.DEFAULT_CURSOR) ;
	}
    // 游戲主線程的執(zhí)行函數(shù)
	public void run() {
	  // 定義本地變量和對象
	  UFO  U ;
	  Explosion  E ;
	  long count = 0 ;
      long ti    = 0 ;
	   
	  // 等待圖片裝載完畢
	  Graphics g = getGraphics() ;
	  g.setColor(Color.red) ;
	  g.drawString("Starting Game...", 20,20) ;

      while (tracker.checkAll(true) == false) { 
	    if ((ti++ % 2) == 0) 
	      g.setColor(Color.red) ;
	    else 
	      g.setColor(Color.green) ;

	    g.drawString("*", 10,22) ;
        try {Thread.sleep(50);} catch (InterruptedException e) { } ;
        //裝載超時(shí)時(shí)強(qiáng)行退出
	    if (ti > 1000) break ;
	  }
	  //捕捉獲取圖片時(shí)的錯誤信息
        if (tracker.isErrorAny()) {
	    showStatus("Error getting images") ;
            return ;
	  }
	  showStatus("Loading completed") ;//裝載成功
	  g.dispose() ;

      //繪制背景幕的緩沖區(qū)
	  buf_g = backdrop.getGraphics();
      buf_g.drawImage(bgimg,0,0,window_size.width,window_size.height,this) ;
      // 將背景幕的緩沖繪制到屏幕上
	  buf_g = getGraphics();
      buf_g.drawImage(backdrop,0,0,this) ;

      // 繪制緩沖區(qū)
	  buf_g = buffer.getGraphics();
      buf_g.drawImage(bgimg,0,0,window_size.width,window_size.height,this) ;
      //重新繪制
	  repaint() ;

      // 顯示玩家得分?jǐn)?shù)
	  display_score() ;
      //繪制導(dǎo)彈發(fā)射架
	  L.draw() ;
      showStatus("UFO ATTACK") ;

	  // 事件循環(huán)
      for (;;) {
	    ti = System.currentTimeMillis() ;

        // 如果有多余的UFO飛行空間的話可增加一架UFO 
	    if ((UV.size() < NU) && 
	        (Math.random() > (UV.size() == 0 ? 0.90 : 0.98))) {
              newufo.play() ;  // 播放警報(bào)聲
	          U = new UFO(this) ; 
              U.set_color(ufoColor) ;

        // 在相應(yīng)條件下提高UFO的下降速度
	     if (score > 10 && Math.random() > 0.7) U.vy -= 1 ;

        // 在UFO向量中增加一名成員
	      UV.addElement(U) ;
	    }
        // 在背景幕上繪制爆炸畫面,結(jié)束后將其清除
	    for (int j=EV.size()-1; j>=0 ; --j) {
	      E = (Explosion) EV.elementAt(j) ;
	      if (E.active) {
	        // 如果爆炸出現(xiàn)就進(jìn)行其畫面的繪制
	        E.draw() ;
              }
          else {
	        // 結(jié)束后從背景幕上清除,并從爆炸向量中刪除
	        E.erase() ;
		    EV.removeElementAt(j) ;
	      }
	    }
	    //移動導(dǎo)彈發(fā)射架
	    L.move() ;
        //如果導(dǎo)彈存在,移動導(dǎo)彈
	    if (M.active() == true) M.move() ;
        //移動每個(gè)UFO
	    for (int i=0; i < UV.size(); ++i) {
	      U = (UFO) UV.elementAt(i) ;
	      U.move() ;
	    }
        //監(jiān)察UFO與導(dǎo)彈之間的碰撞
	    for (int i=(UV.size()-1); i >=0 ; --i) {
	      U = (UFO) UV.elementAt(i) ;
	      if (U.active() && M.active() && U.collision(M)) {
            ++score ;  //增加玩家的得分
	        explosion.stop() ; 
            display_score() ;
	        explosion.play() ; 

        //每擊落10架UFO后便增加UFO的最大出現(xiàn)數(shù)目,直到數(shù)目為5
	    if ((NU < 5) && (score % 10) == 1)  ++NU ;
        // 碰撞發(fā)生后,將導(dǎo)彈從背景幕上清除,并使其active屬性為false
	    M.active(false) ;
		M.erase() ;
       //將被擊中的UFO從背景幕上清除,并使其active屬性為false
		U.active(false) ;
		U.erase() ;
        //顯示爆炸的場面
		E = new Explosion(this,U.px,U.py) ;
	    //在爆炸向量中添加一員
		EV.addElement(E) ;
	      }
       // 如果UFO沒有被擊中,則顯示出來,否則,將其從UFO向量中刪除
	    if (U.active()) 
	        U.draw() ;
        else 
	        UV.removeElementAt(i) ;
        //如果有一個(gè)UFO成功著陸則玩家失敗
        if ((U.py - U.h/2) <=0) {
	        game_over = true ;
		    display_game_over() ;
		    return ;
	      }
	    }

        //如果導(dǎo)彈發(fā)射架移動了,重畫發(fā)射架
	    if (L.has_moved() || ((M.py-M.h) < (L.py+L.h)) || (! M.active()) )
	      L.draw() ;

        //如果導(dǎo)彈的active屬性值為true,則重畫導(dǎo)彈
	    if (M.active() == true) M.draw() ;

        // 萬一CPU速度太快,要使循環(huán)維持在20ms以上
        ti = System.currentTimeMillis() - ti ;
	    ti = 20 - ti ; 
	    ti = ti > 0 ?  10 + ti : 10 ; 
        Thread.yield() ; 
        //處理線程sleep函數(shù)的異常
        try {Thread.sleep(ti);} 
        catch (InterruptedException e) { } ;
        // 每100次循環(huán)重新繪制一次
	    if ((count = ++count % 500) == 0) {
	      repaint() ;         
	    }
	  }
	}
   //顯示玩家的得分
	public void display_score() {
      Graphics bkd_g = backdrop.getGraphics();
      bkd_g.clipRect(window_size.width/2, 0, window_size.width/2, 40);
      bkd_g.drawImage(bgimg,0,0,window_size.width,window_size.height,this) ;

      bkd_g.setColor(Color.red) ;
      bkd_g.setFont(font) ;
	  String aux = score > 9 ? "" : "0" ;
      bkd_g.drawString(aux+score, window_size.width - 60,30) ;
      bkd_g.dispose() ;
          
      Graphics bg = buffer.getGraphics() ;
      bg.clipRect(0, 0, window_size.width, 40);
      bg.drawImage(backdrop,0,0,this) ;
      bg.dispose() ;
          
      Graphics g = getGraphics() ;
      g.clipRect(0, 0, window_size.width, 40);
      g.drawImage(buffer,0,0,this) ;
      g.dispose() ;          
	}
    //游戲結(jié)束時(shí)進(jìn)行提示
	public void display_game_over() {
      set_say_font(font) ;
      set_say_mode(CENTER) ;
      set_say_style(SHADOW) ;
	  set_say_pos(10,80) ;
	  say("GAME OVER") ;
      set_say_font(font_s) ;
      set_say_style(NORMAL) ;
	  say("(click to start)") ;
	  repaint() ;
      try {Thread.sleep(500);} catch (InterruptedException e) { } ;
	}

    //處理鼠標(biāo)移動事件
	public boolean mouseMove(Event e, int x, int y) {
	  // 返回鼠標(biāo)所在位置的X坐標(biāo)
	  mouse_x = x ;
	  return true;
	}

    // 處理鼠標(biāo)的按下事件
	public boolean mouseDown(Event e, int x, int y) {
	  //游戲結(jié)束時(shí)所做的相應(yīng)處理
      if (game_over) {
	    game_over = false ;
	    if (game != null) {
	      game.stop() ;
	      game = null ;
	    }
	    NU  = 1 ;
	    score = 0 ;
	    M.active(false) ;
	    UV.removeAllElements() ;
	    EV.removeAllElements() ;
        //新建一個(gè)線程
	    game  = new Thread(this) ;
	    game.setPriority(Thread.MIN_PRIORITY) ;
        //線程啟動
	    game.start() ;

	    buf_g.dispose() ;

	    return true ;
	  }
      //如果游戲沒有結(jié)束并且導(dǎo)彈沒有被發(fā)射,則發(fā)射導(dǎo)彈
	  if (M != null && ! M.active()) {
	    missile_launch.stop() ;
	    missile_launch.play() ;
	    M.set_pos(L.px,L.py) ;
	    M.active(true) ;
	  }
	  return true;
	}
	
	// 將緩沖繪制到屏幕上
	public void paint(Graphics g) {
 	if (buffer != null) g.drawImage(buffer, 0, 0, this);
	}
   // 使動畫更加流暢
	public void update(Graphics g) { 
	  paint(g) ; 
	}

   //獲取這個(gè)applet的Frame對象
    public Frame getFrame(Component c) {
       while( c != null && !(c instanceof java.awt.Frame) )
              c = c.getParent();
          return (Frame) c;
        }

    // 文本顯示的常量
    public static final int CENTER = 1 ;  // 模式: 居中
    public static final int LEFT   = 2 ;  //       居左
    public static final int RIGHT  = 3 ;  //       居右
    public static final int FREE   = 0 ;  //       居于所給的(x,y)位置上

    public static final int NORMAL = 0 ;  // 類型:正常
    public static final int SHADOW = 1 ;  //      帶有陰影 

    // 文本顯示變量
    private int  say_pos_y   =  0 ; 
    private int  say_pos_x   =  0 ;
    private int  say_mode    = -1 ;
    private int  say_style   = -1 ;
    private int  say_margin  = 10 ;
    private Font say_font    = null ;

    // 文本顯示方法
	public void say(String s, int x, int y) {
	  set_say_pos(x, y) ;
	  say(s) ;
	}
    //文本顯示
	public void say(String s) {
      //獲取字體的信息
	  FontMetrics fm = getFontMetrics(say_font) ;

      // 計(jì)算x坐標(biāo)
	  switch(say_mode) {
	case CENTER:
	      say_pos_x = (window_size.width - fm.stringWidth(s))/2 ;
	      break ;
	    case RIGHT:
	      say_pos_x = window_size.width - fm.stringWidth(s) - say_margin ;
	      break ;
	    case LEFT:
	    default :
	      say_pos_x = say_margin ;
	      break ;
	  }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕二三区不卡| 一区二区三区欧美激情| 欧美影视一区在线| 国产精品一区二区久久精品爱涩| 亚洲一二三级电影| 中文字幕乱码亚洲精品一区| 欧美一区二区私人影院日本| 色欧美日韩亚洲| 国产福利一区二区| 视频精品一区二区| 亚洲欧美日韩国产综合| 久久日一线二线三线suv| 欧美精品视频www在线观看| 99亚偷拍自图区亚洲| 国产九色精品成人porny | 国产三级欧美三级| 欧美性色欧美a在线播放| 成人h动漫精品一区二区| 精品中文字幕一区二区| 日本不卡一区二区| 亚洲一区二区三区自拍| 中文字幕一区二区三区四区| 久久精品男人天堂av| 91精品国产综合久久久蜜臀粉嫩| 欧美日韩中文字幕精品| 久久久久久久久免费| 欧美精品久久99| 欧美日韩五月天| 欧美午夜电影网| 欧美性生活影院| 欧美无乱码久久久免费午夜一区| 日本高清无吗v一区| 色综合色狠狠天天综合色| 91免费观看视频| 日本精品一区二区三区高清| 成人av午夜影院| eeuss鲁片一区二区三区在线看| 国产高清不卡一区二区| 国产精品白丝av| 成人在线视频一区二区| eeuss影院一区二区三区| 成人理论电影网| 99精品视频一区二区三区| 99麻豆久久久国产精品免费优播| 99视频精品免费视频| 91小宝寻花一区二区三区| 91国产免费看| 91精品国产欧美一区二区成人| 91麻豆精品国产91久久久使用方法| 制服丝袜成人动漫| 91精品国产综合久久精品| 精品久久久久一区二区国产| 久久九九久久九九| 国产精品国产三级国产aⅴ中文| 欧美激情一区在线| 亚洲欧美电影院| 婷婷综合在线观看| 美脚の诱脚舐め脚责91| 国产精品亚洲视频| 91色九色蝌蚪| 91麻豆精品91久久久久久清纯| 欧美tk—视频vk| 国产精品国产三级国产有无不卡 | 欧美日韩精品系列| 日韩欧美一二三区| 国产午夜精品美女毛片视频| 国产精品久久久久久亚洲伦| 亚洲综合一二三区| 久久aⅴ国产欧美74aaa| 国产剧情一区二区| 欧美亚洲动漫精品| 日韩精品中午字幕| 综合色中文字幕| 蜜臀久久99精品久久久画质超高清| 国产福利一区在线| 欧美日韩三级一区| 久久精品这里都是精品| 亚洲综合久久av| 精品一区二区综合| 在线亚洲+欧美+日本专区| 日韩精品中文字幕一区二区三区| 国产精品国产三级国产普通话99| 午夜不卡av免费| 成人avav影音| 日韩视频免费观看高清完整版在线观看 | 亚洲美女视频一区| 麻豆精品久久久| 99国产精品国产精品久久| 欧美一区二区三区爱爱| 国产精品高潮呻吟| 麻豆91精品91久久久的内涵| 一本久道中文字幕精品亚洲嫩 | 亚洲欧美激情在线| 九九**精品视频免费播放| 91久久精品午夜一区二区| 久久免费看少妇高潮| 亚洲已满18点击进入久久| 国产成人精品一区二区三区网站观看| 欧美日韩国产a| 国产精品国产三级国产专播品爱网| 免费成人在线网站| 欧美色图免费看| 国产精品区一区二区三区| 免费一级欧美片在线观看| 色噜噜狠狠色综合欧洲selulu| 久久久久久久久99精品| 午夜精品久久久久久久| 91欧美一区二区| 久久久综合精品| 久久精品国产99国产精品| 欧美视频中文字幕| 一区二区三区在线视频观看| 国产高清不卡一区二区| 精品电影一区二区三区| 水野朝阳av一区二区三区| 色欧美88888久久久久久影院| 中文字幕欧美国产| 国产成人亚洲综合a∨婷婷图片| 日韩欧美色综合网站| 亚洲va欧美va人人爽| 91久久香蕉国产日韩欧美9色| 国产午夜精品福利| 国产在线视频一区二区| 欧美电视剧在线观看完整版| 亚洲福利视频一区| 日本韩国欧美三级| 亚洲免费观看高清完整版在线观看 | 日本一区二区视频在线观看| 久久精品国产999大香线蕉| 91精品综合久久久久久| 视频一区二区三区在线| 欧美三级电影一区| 一区二区三区欧美视频| 欧美性猛交xxxxxx富婆| 亚洲成人自拍偷拍| 在线播放欧美女士性生活| 天堂av在线一区| 91精品国产91热久久久做人人 | 国产精品久久久久久久久图文区| 国产美女娇喘av呻吟久久| 久久久无码精品亚洲日韩按摩| 国精产品一区一区三区mba桃花 | 亚洲国产日韩a在线播放性色| 色悠悠久久综合| 亚洲一区二区在线视频| 欧美日韩www| 九九国产精品视频| 日本一区二区三区免费乱视频| 成人黄色在线视频| 亚洲精品免费视频| 欧美日韩一区二区三区高清| 日本不卡免费在线视频| 久久欧美中文字幕| 91在线看国产| 亚洲r级在线视频| 精品免费一区二区三区| 成人av在线播放网址| 亚洲精品中文字幕在线观看| 欧美日韩国产综合视频在线观看 | 欧美亚洲一区三区| 日韩电影免费在线观看网站| 精品国产91洋老外米糕| 99麻豆久久久国产精品免费优播| 一级女性全黄久久生活片免费| 91精品视频网| 国产成人在线观看| 亚洲一区二区精品久久av| 91精品麻豆日日躁夜夜躁| 国产精品一区三区| 亚洲国产精品一区二区久久| 日韩欧美成人激情| 成人av网站在线| 五月天网站亚洲| 欧美极品aⅴ影院| 56国语精品自产拍在线观看| 国产成人免费视频一区| 亚洲免费看黄网站| 久久亚洲综合色| 欧美中文字幕一区二区三区| 黄色小说综合网站| 一片黄亚洲嫩模| 国产日韩欧美综合一区| 欧美人与性动xxxx| 波多野结衣精品在线| 天天综合日日夜夜精品| 国产欧美一区二区精品秋霞影院 | 日韩午夜在线观看| 91免费观看视频在线| 国模无码大尺度一区二区三区 | 不卡电影免费在线播放一区| 丝袜脚交一区二区| 亚洲精品一二三四区| 久久综合色之久久综合| 欧美日韩一区成人| 91丨九色丨黑人外教| 国产一区二区三区黄视频| 三级影片在线观看欧美日韩一区二区 | 一区二区三区中文在线| 国产午夜精品一区二区| 欧美一区二区三区在线视频|