<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Java 開發(fā)打飛機小游戲(附完整源碼)

          共 1996字,需瀏覽 4分鐘

           ·

          2020-12-06 01:26

          上圖

          寫在前面

          技術源于分享,所以今天抽空把自己之前用java做過的小游戲整理貼出來給大家參考學習。java確實不適合寫桌面應用,這里只是通過這個游戲讓大家理解oop面向對象編程的過程,純屬娛樂。代碼寫的很簡單,也很容易理解,并且注釋寫的很清楚了,還有問題,自己私下去補課學習。

          完整代碼

          敵飛機

          import?java.util.Random;


          ?敵飛機:?是飛行物,也是敵人

          public?class?Airplane?extends?FlyingObject?implements?Enemy?{
          ????private?int?speed?=?3;??//移動步驟

          ????/**?初始化數(shù)據(jù)?*/
          ????public?Airplane(){
          ????????this.image?=?ShootGame.airplane;
          ????????width?=?image.getWidth();
          ????????height?=?image.getHeight();
          ????????y?=?-height;??????????
          ????????Random?rand?=?new?Random();
          ????????x?=?rand.nextInt(ShootGame.WIDTH?-?width);
          ????}

          ????/**?獲取分數(shù)?*/
          ????@Override
          ????public?int?getScore()?{??
          ????????return?5;
          ????}

          ????/**?//越界處理?*/
          ????@Override
          ????public?????boolean?outOfBounds()?{???
          ????????return?y>ShootGame.HEIGHT;
          ????}

          ????/**?移動?*/
          ????@Override
          ????public?void?step()?{???
          ????????y?+=?speed;
          ????}
          }

          分數(shù)獎勵

          /**?
          ?*?獎勵?
          ?*/
          ??
          public?interface?Award?{??
          ????int?DOUBLE_FIRE?=?0;??//雙倍火力??
          ????int?LIFE?=?1;???//1條命??
          ????/**?獲得獎勵類型(上面的0或1)?*/??
          ????int?getType();??
          }

          蜜蜂

          import?java.util.Random;??

          /**?蜜蜂?*/??
          public?class?Bee?extends?FlyingObject?implements?Award{??
          ????private?int?xSpeed?=?1;???//x坐標移動速度??
          ????private?int?ySpeed?=?2;???//y坐標移動速度??
          ????private?int?awardType;????//獎勵類型??

          ????/**?初始化數(shù)據(jù)?*/??
          ????public?Bee(){??
          ????????this.image?=?ShootGame.bee;??
          ????????width?=?image.getWidth();??
          ????????height?=?image.getHeight();??
          ????????y?=?-height;??
          ????????Random?rand?=?new?Random();??
          ????????x?=?rand.nextInt(ShootGame.WIDTH?-?width);??
          ????????awardType?=?rand.nextInt(2);???//初始化時給獎勵??
          ????}??

          ????/**?獲得獎勵類型?*/??
          ????public?int?getType(){??
          ????????return?awardType;??
          ????}??

          ????/**?越界處理?*/??
          ????@Override??
          ????public?boolean?outOfBounds()?{??
          ????????return?y>ShootGame.HEIGHT;??
          ????}??

          ????/**?移動,可斜著飛?*/??
          ????@Override??
          ????public?void?step()?{????????
          ????????x?+=?xSpeed;??
          ????????y?+=?ySpeed;??
          ????????if(x?>?ShootGame.WIDTH-width){????
          ????????????xSpeed?=?-1;??
          ????????}??
          ????????if(x?0){??
          ????????????xSpeed?=?1;??
          ????????}??
          ????}??
          }

          子彈類:是飛行物體

          /**?
          ?*?子彈類:是飛行物?
          ?*/
          ??
          public?class?Bullet?extends?FlyingObject?{??
          ????private?int?speed?=?3;??//移動的速度??

          ????/**?初始化數(shù)據(jù)?*/??
          ????public?Bullet(int?x,int?y){??
          ????????this.x?=?x;??
          ????????this.y?=?y;??
          ????????this.image?=?ShootGame.bullet;??
          ????}??

          ????/**?移動?*/??
          ????@Override??
          ????public?void?step(){?????
          ????????y-=speed;??
          ????}??

          ????/**?越界處理?*/??
          ????@Override??
          ????public?boolean?outOfBounds()?{??
          ????????return?y<-height;??
          ????}??

          }

          敵人的分數(shù)

          /**?
          ?*?敵人,可以有分數(shù)?
          ?*/
          ??
          public?interface?Enemy?{??
          ????/**?敵人的分數(shù)??*/??
          ????int?getScore();??
          }

          飛行物(敵機,蜜蜂,子彈,英雄機)

          import?java.awt.image.BufferedImage;??

          /**?
          ?*?飛行物(敵機,蜜蜂,子彈,英雄機)?
          ?*/
          ??
          public?abstract?class?FlyingObject?{??
          ????protected?int?x;????//x坐標??
          ????protected?int?y;????//y坐標??
          ????protected?int?width;????//寬??
          ????protected?int?height;???//高??
          ????protected?BufferedImage?image;???//圖片??

          ????public?int?getX()?{??
          ????????return?x;??
          ????}??

          ????public?void?setX(int?x)?{??
          ????????this.x?=?x;??
          ????}??

          ????public?int?getY()?{??
          ????????return?y;??
          ????}??

          ????public?void?setY(int?y)?{??
          ????????this.y?=?y;??
          ????}??

          ????public?int?getWidth()?{??
          ????????return?width;??
          ????}??

          ????public?void?setWidth(int?width)?{??
          ????????this.width?=?width;??
          ????}??

          ????public?int?getHeight()?{??
          ????????return?height;??
          ????}??

          ????public?void?setHeight(int?height)?{??
          ????????this.height?=?height;??
          ????}??

          ????public?BufferedImage?getImage()?{??
          ????????return?image;??
          ????}??

          ????public?void?setImage(BufferedImage?image)?{??
          ????????this.image?=?image;??
          ????}??

          ????/**?
          ?????*?檢查是否出界?
          ?????*?@return?true?出界與否?
          ?????*/
          ??
          ????public?abstract?boolean?outOfBounds();??

          ????/**?
          ?????*?飛行物移動一步?
          ?????*/
          ??
          ????public?abstract?void?step();??

          ????/**?
          ?????*?檢查當前飛行物體是否被子彈(x,y)擊(shoot)中?
          ?????*?@param?Bullet?子彈對象?
          ?????*?@return?true表示被擊中了?
          ?????*/
          ??
          ????public?boolean?shootBy(Bullet?bullet){??
          ????????int?x?=?bullet.x;??//子彈橫坐標??
          ????????int?y?=?bullet.y;??//子彈縱坐標??
          ????????return?this.xthis.x+width?&&?this.ythis.y+height;??
          ????}??

          }

          英雄機

          import?java.awt.image.BufferedImage;??

          /**?
          ?*?英雄機:是飛行物??
          ?*/
          ??
          public?class?Hero?extends?FlyingObject{??

          ????private?BufferedImage[]?images?=?{};??//英雄機圖片??
          ????private?int?index?=?0;????????????????//英雄機圖片切換索引??

          ????private?int?doubleFire;???//雙倍火力??
          ????private?int?life;???//命??

          ????/**?初始化數(shù)據(jù)?*/??
          ????public?Hero(){??
          ????????life?=?3;???//初始3條命??
          ????????doubleFire?=?0;???//初始火力為0??
          ????????images?=?new?BufferedImage[]{ShootGame.hero0,?ShootGame.hero1};?//英雄機圖片數(shù)組??
          ????????image?=?ShootGame.hero0;???//初始為hero0圖片??
          ????????width?=?image.getWidth();??
          ????????height?=?image.getHeight();??
          ????????x?=?150;??
          ????????y?=?400;??
          ????}??

          ????/**?獲取雙倍火力?*/??
          ????public?int?isDoubleFire()?{??
          ????????return?doubleFire;??
          ????}??

          ????/**?設置雙倍火力?*/??
          ????public?void?setDoubleFire(int?doubleFire)?{??
          ????????this.doubleFire?=?doubleFire;??
          ????}??

          ????/**?增加火力?*/??
          ????public?void?addDoubleFire(){??
          ????????doubleFire?=?40;??
          ????}??

          ????/**?增命?*/??
          ????public?void?addLife(){??//增命??
          ????????life++;??
          ????}??

          ????/**?減命?*/??
          ????public?void?subtractLife(){???//減命??
          ????????life--;??
          ????}??

          ????/**?獲取命?*/??
          ????public?int?getLife(){??
          ????????return?life;??
          ????}??

          ????/**?當前物體移動了一下,相對距離,x,y鼠標位置??*/??
          ????public?void?moveTo(int?x,int?y){?????
          ????????this.x?=?x?-?width/2;??
          ????????this.y?=?y?-?height/2;??
          ????}??

          ????/**?越界處理?*/??
          ????@Override??
          ????public?boolean?outOfBounds()?{??
          ????????return?false;????
          ????}??

          ????/**?發(fā)射子彈?*/??
          ????public?Bullet[]?shoot(){?????
          ????????int?xStep?=?width/4;??????//4半??
          ????????int?yStep?=?20;??//步??
          ????????if(doubleFire>0){??//雙倍火力??
          ????????????Bullet[]?bullets?=?new?Bullet[2];??
          ????????????bullets[0]?=?new?Bullet(x+xStep,y-yStep);??//y-yStep(子彈距飛機的位置)??
          ????????????bullets[1]?=?new?Bullet(x+3*xStep,y-yStep);??
          ????????????return?bullets;??
          ????????}else{??????//單倍火力??
          ????????????Bullet[]?bullets?=?new?Bullet[1];??
          ????????????bullets[0]?=?new?Bullet(x+2*xStep,y-yStep);????
          ????????????return?bullets;??
          ????????}??
          ????}??

          ????/**?移動?*/??
          ????@Override??
          ????public?void?step()?{??
          ????????if(images.length>0){??
          ????????????image?=?images[index++/10%images.length];??//切換圖片hero0,hero1??
          ????????}??
          ????}??

          ????/**?碰撞算法?*/??
          ????public?boolean?hit(FlyingObject?other){??

          ????????int?x1?=?other.x?-?this.width/2;?????????????????//x坐標最小距離??
          ????????int?x2?=?other.x?+?this.width/2?+?other.width;???//x坐標最大距離??
          ????????int?y1?=?other.y?-?this.height/2;????????????????//y坐標最小距離??
          ????????int?y2?=?other.y?+?this.height/2?+?other.height;?//y坐標最大距離??

          ????????int?herox?=?this.x?+?this.width/2;???????????????//英雄機x坐標中心點距離??
          ????????int?heroy?=?this.y?+?this.height/2;??????????????//英雄機y坐標中心點距離??

          ????????return?herox>x1?&&?heroxy1?&&?heroy//區(qū)間范圍內為撞上了??
          ????}??

          }

          游戲啟動主類

          import?java.awt.Font;??
          import?java.awt.Color;??
          import?java.awt.Graphics;??
          import?java.awt.event.MouseAdapter;??
          import?java.awt.event.MouseEvent;??
          import?java.util.Arrays;??
          import?java.util.Random;??
          import?java.util.Timer;??
          import?java.util.TimerTask;??
          import?java.awt.image.BufferedImage;??

          import?javax.imageio.ImageIO;??
          import?javax.swing.ImageIcon;??
          import?javax.swing.JFrame;??
          import?javax.swing.JPanel;??
          /**
          ?*?
          ?*/

          public?class?ShootGame?extends?JPanel?{??
          ????public?static?final?int?WIDTH?=?400;?//?面板寬??
          ????public?static?final?int?HEIGHT?=?654;?//?面板高??
          ????/**?游戲的當前狀態(tài):?START?RUNNING?PAUSE?GAME_OVER?*/??
          ????private?int?state;??
          ????private?static?final?int?START?=?0;??
          ????private?static?final?int?RUNNING?=?1;??
          ????private?static?final?int?PAUSE?=?2;??
          ????private?static?final?int?GAME_OVER?=?3;??

          ????private?int?score?=?0;?//?得分??
          ????private?Timer?timer;?//?定時器??
          ????private?int?intervel?=?1000?/?100;?//?時間間隔(毫秒)??

          ????public?static?BufferedImage?background;??
          ????public?static?BufferedImage?start;??
          ????public?static?BufferedImage?airplane;??
          ????public?static?BufferedImage?bee;??
          ????public?static?BufferedImage?bullet;??
          ????public?static?BufferedImage?hero0;??
          ????public?static?BufferedImage?hero1;??
          ????public?static?BufferedImage?pause;??
          ????public?static?BufferedImage?gameover;??

          ????private?FlyingObject[]?flyings?=?{};?//?敵機數(shù)組??
          ????private?Bullet[]?bullets?=?{};?//?子彈數(shù)組??
          ????private?Hero?hero?=?new?Hero();?//?英雄機??

          ????static?{?//?靜態(tài)代碼塊,初始化圖片資源??
          ????????try?{??
          ????????????background?=?ImageIO.read(ShootGame.class??
          ????????????????????.getResource("background.png"))
          ;??
          ????????????start?=?ImageIO.read(ShootGame.class.getResource("start.png"));??
          ????????????airplane?=?ImageIO??
          ????????????????????.read(ShootGame.class.getResource("airplane.png"));??
          ????????????bee?=?ImageIO.read(ShootGame.class.getResource("bee.png"));??
          ????????????bullet?=?ImageIO.read(ShootGame.class.getResource("bullet.png"));??
          ????????????hero0?=?ImageIO.read(ShootGame.class.getResource("hero0.png"));??
          ????????????hero1?=?ImageIO.read(ShootGame.class.getResource("hero1.png"));??
          ????????????pause?=?ImageIO.read(ShootGame.class.getResource("pause.png"));??
          ????????????gameover?=?ImageIO??
          ????????????????????.read(ShootGame.class.getResource("gameover.png"));??
          ????????}?catch?(Exception?e)?{??
          ????????????e.printStackTrace();??
          ????????}??
          ????}??

          ????/**?畫?*/??
          ????@Override??
          ????public?void?paint(Graphics?g)?{??
          ????????g.drawImage(background,?0,?0,?null);?//?畫背景圖??
          ????????paintHero(g);?//?畫英雄機??
          ????????paintBullets(g);?//?畫子彈??
          ????????paintFlyingObjects(g);?//?畫飛行物??
          ????????paintScore(g);?//?畫分數(shù)??
          ????????paintState(g);?//?畫游戲狀態(tài)??
          ????}??

          ????/**?畫英雄機?*/??
          ????public?void?paintHero(Graphics?g)?{??
          ????????g.drawImage(hero.getImage(),?hero.getX(),?hero.getY(),?null);??
          ????}??

          ????/**?畫子彈?*/??
          ????public?void?paintBullets(Graphics?g)?{??
          ????????for?(int?i?=?0;?i?????????????Bullet?b?=?bullets[i];??
          ????????????g.drawImage(b.getImage(),?b.getX()?-?b.getWidth()?/?2,?b.getY(),??
          ????????????????????null);??
          ????????}??
          ????}??

          ????/**?畫飛行物?*/??
          ????public?void?paintFlyingObjects(Graphics?g)?{??
          ????????for?(int?i?=?0;?i?????????????FlyingObject?f?=?flyings[i];??
          ????????????g.drawImage(f.getImage(),?f.getX(),?f.getY(),?null);??
          ????????}??
          ????}??

          ????/**?畫分數(shù)?*/??
          ????public?void?paintScore(Graphics?g)?{??
          ????????int?x?=?10;?//?x坐標??
          ????????int?y?=?25;?//?y坐標??
          ????????Font?font?=?new?Font(Font.SANS_SERIF,?Font.BOLD,?22);?//?字體??
          ????????g.setColor(new?Color(0xFF0000));??
          ????????g.setFont(font);?//?設置字體??
          ????????g.drawString("SCORE:"?+?score,?x,?y);?//?畫分數(shù)??
          ????????y=y+20;?//?y坐標增20??
          ????????g.drawString("LIFE:"?+?hero.getLife(),?x,?y);?//?畫命??
          ????}??

          ????/**?畫游戲狀態(tài)?*/??
          ????public?void?paintState(Graphics?g)?{??
          ????????switch?(state)?{??
          ????????case?START:?//?啟動狀態(tài)??
          ????????????g.drawImage(start,?0,?0,?null);??
          ????????????break;??
          ????????case?PAUSE:?//?暫停狀態(tài)??
          ????????????g.drawImage(pause,?0,?0,?null);??
          ????????????break;??
          ????????case?GAME_OVER:?//?游戲終止狀態(tài)??
          ????????????g.drawImage(gameover,?0,?0,?null);??
          ????????????break;??
          ????????}??
          ????}??

          ????public?static?void?main(String[]?args)?{??
          ????????JFrame?frame?=?new?JFrame("Fly");??
          ????????ShootGame?game?=?new?ShootGame();?//?面板對象??
          ????????frame.add(game);?//?將面板添加到JFrame中??
          ????????frame.setSize(WIDTH,?HEIGHT);?//?設置大小??
          ????????frame.setAlwaysOnTop(true);?//?設置其總在最上??
          ????????frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);?//?默認關閉操作??
          ????????frame.setIconImage(new?ImageIcon("images/icon.jpg").getImage());?//?設置窗體的圖標??
          ????????frame.setLocationRelativeTo(null);?//?設置窗體初始位置??
          ????????frame.setVisible(true);?//?盡快調用paint??

          ????????game.action();?//?啟動執(zhí)行??
          ????}??

          ????/**?啟動執(zhí)行代碼?*/??
          ????public?void?action()?{??
          ????????//?鼠標監(jiān)聽事件??
          ????????MouseAdapter?l?=?new?MouseAdapter()?{??
          ????????????@Override??
          ????????????public?void?mouseMoved(MouseEvent?e)?{?//?鼠標移動??
          ????????????????if?(state?==?RUNNING)?{?//?運行狀態(tài)下移動英雄機--隨鼠標位置??
          ????????????????????int?x?=?e.getX();??
          ????????????????????int?y?=?e.getY();??
          ????????????????????hero.moveTo(x,?y);??
          ????????????????}??
          ????????????}??

          ????????????@Override??
          ????????????public?void?mouseEntered(MouseEvent?e)?{?//?鼠標進入??
          ????????????????if?(state?==?PAUSE)?{?//?暫停狀態(tài)下運行??
          ????????????????????state?=?RUNNING;??
          ????????????????}??
          ????????????}??

          ????????????@Override??
          ????????????public?void?mouseExited(MouseEvent?e)?{?//?鼠標退出??
          ????????????????if?(state?==?RUNNING)?{?//?游戲未結束,則設置其為暫停??
          ????????????????????state?=?PAUSE;??
          ????????????????}??
          ????????????}??

          ????????????@Override??
          ????????????public?void?mouseClicked(MouseEvent?e)?{?//?鼠標點擊??
          ????????????????switch?(state)?{??
          ????????????????case?START:??
          ????????????????????state?=?RUNNING;?//?啟動狀態(tài)下運行??
          ????????????????????break;??
          ????????????????case?GAME_OVER:?//?游戲結束,清理現(xiàn)場??
          ????????????????????flyings?=?new?FlyingObject[0];?//?清空飛行物??
          ????????????????????bullets?=?new?Bullet[0];?//?清空子彈??
          ????????????????????hero?=?new?Hero();?//?重新創(chuàng)建英雄機??
          ????????????????????score?=?0;?//?清空成績??
          ????????????????????state?=?START;?//?狀態(tài)設置為啟動??
          ????????????????????break;??
          ????????????????}??
          ????????????}??
          ????????};??
          ????????this.addMouseListener(l);?//?處理鼠標點擊操作??
          ????????this.addMouseMotionListener(l);?//?處理鼠標滑動操作??

          ????????timer?=?new?Timer();?//?主流程控制??
          ????????timer.schedule(new?TimerTask()?{??
          ????????????@Override??
          ????????????public?void?run()?{??
          ????????????????if?(state?==?RUNNING)?{?//?運行狀態(tài)??
          ????????????????????enterAction();?//?飛行物入場??
          ????????????????????stepAction();?//?走一步??
          ????????????????????shootAction();?//?英雄機射擊??
          ????????????????????bangAction();?//?子彈打飛行物??
          ????????????????????outOfBoundsAction();?//?刪除越界飛行物及子彈??
          ????????????????????checkGameOverAction();?//?檢查游戲結束??
          ????????????????}??
          ????????????????repaint();?//?重繪,調用paint()方法??
          ????????????}??

          ????????},?intervel,?intervel);??
          ????}??

          ????int?flyEnteredIndex?=?0;?//?飛行物入場計數(shù)??

          ????/**?飛行物入場?*/??
          ????public?void?enterAction()?{??
          ????????flyEnteredIndex++;??
          ????????if?(flyEnteredIndex?%?40?==?0)?{?//?400毫秒生成一個飛行物--10*40??
          ????????????FlyingObject?obj?=?nextOne();?//?隨機生成一個飛行物??
          ????????????flyings?=?Arrays.copyOf(flyings,?flyings.length?+?1);??
          ????????????flyings[flyings.length?-?1]?=?obj;??
          ????????}??
          ????}??

          ????/**?走一步?*/??
          ????public?void?stepAction()?{??
          ????????for?(int?i?=?0;?i?//?飛行物走一步??
          ????????????FlyingObject?f?=?flyings[i];??
          ????????????f.step();??
          ????????}??

          ????????for?(int?i?=?0;?i?//?子彈走一步??
          ????????????Bullet?b?=?bullets[i];??
          ????????????b.step();??
          ????????}??
          ????????hero.step();?//?英雄機走一步??
          ????}??

          ????/**?飛行物走一步?*/??
          ????public?void?flyingStepAction()?{??
          ????????for?(int?i?=?0;?i?????????????FlyingObject?f?=?flyings[i];??
          ????????????f.step();??
          ????????}??
          ????}??

          ????int?shootIndex?=?0;?//?射擊計數(shù)??

          ????/**?射擊?*/??
          ????public?void?shootAction()?{??
          ????????shootIndex++;??
          ????????if?(shootIndex?%?30?==?0)?{?//?300毫秒發(fā)一顆??
          ????????????Bullet[]?bs?=?hero.shoot();?//?英雄打出子彈??
          ????????????bullets?=?Arrays.copyOf(bullets,?bullets.length?+?bs.length);?//?擴容??
          ????????????System.arraycopy(bs,?0,?bullets,?bullets.length?-?bs.length,??
          ????????????????????bs.length);?//?追加數(shù)組??
          ????????}??
          ????}??

          ????/**?子彈與飛行物碰撞檢測?*/??
          ????public?void?bangAction()?{??
          ????????for?(int?i?=?0;?i?//?遍歷所有子彈??
          ????????????Bullet?b?=?bullets[i];??
          ????????????bang(b);?//?子彈和飛行物之間的碰撞檢查??
          ????????}??
          ????}??

          ????/**?刪除越界飛行物及子彈?*/??
          ????public?void?outOfBoundsAction()?{??
          ????????int?index?=?0;?//?索引??
          ????????FlyingObject[]?flyingLives?=?new?FlyingObject[flyings.length];?//?活著的飛行物??
          ????????for?(int?i?=?0;?i?????????????FlyingObject?f?=?flyings[i];??
          ????????????if?(!f.outOfBounds())?{??
          ????????????????flyingLives[index++]?=?f;?//?不越界的留著??
          ????????????}??
          ????????}??
          ????????flyings?=?Arrays.copyOf(flyingLives,?index);?//?將不越界的飛行物都留著??

          ????????index?=?0;?//?索引重置為0??
          ????????Bullet[]?bulletLives?=?new?Bullet[bullets.length];??
          ????????for?(int?i?=?0;?i?????????????Bullet?b?=?bullets[i];??
          ????????????if?(!b.outOfBounds())?{??
          ????????????????bulletLives[index++]?=?b;??
          ????????????}??
          ????????}??
          ????????bullets?=?Arrays.copyOf(bulletLives,?index);?//?將不越界的子彈留著??
          ????}??

          ????/**?檢查游戲結束?*/??
          ????public?void?checkGameOverAction()?{??
          ????????if?(isGameOver()==true)?{??
          ????????????state?=?GAME_OVER;?//?改變狀態(tài)??
          ????????}??
          ????}??

          ????/**?檢查游戲是否結束?*/??
          ????public?boolean?isGameOver()?{??

          ????????for?(int?i?=?0;?i?????????????int?index?=?-1;??
          ????????????FlyingObject?obj?=?flyings[i];??
          ????????????if?(hero.hit(obj))?{?//?檢查英雄機與飛行物是否碰撞??
          ????????????????hero.subtractLife();?//?減命??
          ????????????????hero.setDoubleFire(0);?//?雙倍火力解除??
          ????????????????index?=?i;?//?記錄碰上的飛行物索引??
          ????????????}??
          ????????????if?(index?!=?-1)?{??
          ????????????????FlyingObject?t?=?flyings[index];??
          ????????????????flyings[index]?=?flyings[flyings.length?-?1];??
          ????????????????flyings[flyings.length?-?1]?=?t;?//?碰上的與最后一個飛行物交換??

          ????????????????flyings?=?Arrays.copyOf(flyings,?flyings.length?-?1);?//?刪除碰上的飛行物??
          ????????????}??
          ????????}??

          ????????return?hero.getLife()?<=?0;??
          ????}??

          ????/**?子彈和飛行物之間的碰撞檢查?*/??
          ????public?void?bang(Bullet?bullet)?{??
          ????????int?index?=?-1;?//?擊中的飛行物索引??
          ????????for?(int?i?=?0;?i?????????????FlyingObject?obj?=?flyings[i];??
          ????????????if?(obj.shootBy(bullet))?{?//?判斷是否擊中??
          ????????????????index?=?i;?//?記錄被擊中的飛行物的索引??
          ????????????????break;??
          ????????????}??
          ????????}??
          ????????if?(index?!=?-1)?{?//?有擊中的飛行物??
          ????????????FlyingObject?one?=?flyings[index];?//?記錄被擊中的飛行物??

          ????????????FlyingObject?temp?=?flyings[index];?//?被擊中的飛行物與最后一個飛行物交換??
          ????????????flyings[index]?=?flyings[flyings.length?-?1];??
          ????????????flyings[flyings.length?-?1]?=?temp;??

          ????????????flyings?=?Arrays.copyOf(flyings,?flyings.length?-?1);?//?刪除最后一個飛行物(即被擊中的)??

          ????????????//?檢查one的類型(敵人加分,獎勵獲取)??
          ????????????if?(one?instanceof?Enemy)?{?//?檢查類型,是敵人,則加分??
          ????????????????Enemy?e?=?(Enemy)?one;?//?強制類型轉換??
          ????????????????score?+=?e.getScore();?//?加分??
          ????????????}?else?{?//?若為獎勵,設置獎勵??
          ????????????????Award?a?=?(Award)?one;??
          ????????????????int?type?=?a.getType();?//?獲取獎勵類型??
          ????????????????switch?(type)?{??
          ????????????????case?Award.DOUBLE_FIRE:??
          ????????????????????hero.addDoubleFire();?//?設置雙倍火力??
          ????????????????????break;??
          ????????????????case?Award.LIFE:??
          ????????????????????hero.addLife();?//?設置加命??
          ????????????????????break;??
          ????????????????}??
          ????????????}??
          ????????}??
          ????}??

          ????/**?
          ?????*?隨機生成飛行物?
          ?????*??
          ?????*?@return?飛行物對象?
          ?????*/
          ??
          ????public?static?FlyingObject?nextOne()?{??
          ????????Random?random?=?new?Random();??
          ????????int?type?=?random.nextInt(20);?//?[0,20)??
          ????????if?(type?4)?{??
          ????????????return?new?Bee();??
          ????????}?else?{??
          ????????????return?new?Airplane();??
          ????????}??
          ????}??
          }

          一只獨孤的程序猿
          https://blog.csdn.net/wclxyn/article/details/110159708

          最近熱文閱讀:

          1、為了甩鍋,我寫了個牛逼的日志切面!
          2、記一次 mysql 磁盤滿解決過程
          3、排名前 16 的 Java 工具類,哪個你沒用過?
          4、垃圾代碼和優(yōu)質代碼的區(qū)別?
          5、工作群里常見表情的真正含義……
          6、把我坑慘的一個MySQL雙引號!
          7、基于Spring+SpringMVC+Mybatis的分布式敏捷開發(fā)系統(tǒng)架構
          8、分享5個免費的在線 SQL 數(shù)據(jù)庫環(huán)境,簡直太方便了!
          9SQL 優(yōu)化極簡法則,你掌握了幾個?
          10、高并發(fā)下的接口冪等性解決方案!
          關注公眾號,你想要的Java都在這里

          瀏覽 44
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩免费视频一区二区三区四区 | 免费看黄色片国产馆 | 一本大道中文字幕无码29 | 在线视频内射 | 人妻日日爽夜夜爽一区二区 |