日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

潜艇大作战

發布時間:2024/3/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 潜艇大作战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

游戲測試類

package Submarine03;import javax.crypto.SealedObject; import javax.swing.*; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.Arrays; import java.util.Random; import java.util.Timer; import java.util.TimerTask;public class StartGame extends JPanel {public static final int READAY = 0;public static final int GAMEOVER = 1;private int state = READAY;public static final int WIDTH = 641;public static final int HEIGHT = 479;BattleShip bts = new BattleShip();SaeSubmarine[] ssb = {};Mine[] mines = {};Bomb[] bombs = {};//=======================================================================================================================//水雷碰戰艦 --結束private void mmBbts() {for (int i = 0; i < mines.length; i++) {if (mines[i].isLive() && bts.isLive() && bts.collideAction(mines[i])) {mines[i].colliDend();bts.minusLife();if (bts.getLife() == 0) {//-------------------判斷生命值,改變狀態,結束state = GAMEOVER;}}}}//碰撞--@1消失+@2死亡+@3得分int score = 0;private void bobBssb() {for (int j = 0; j < bombs.length; j++) {for (int i = 0; i < ssb.length; i++) {if (bombs[j].isLive() && ssb[i].isLive() && ssb[i].collideAction(bombs[j])) {bombs[j].colliDend();ssb[i].colliDend();if (ssb[i] instanceof InputLive) {//----------------------------獲得生命值InputLive msb = (InputLive) ssb[i];bts.addLife(msb.inputLive());} else if (ssb[i] instanceof InputScore) {//-----------------獲得分數InputScore msb2 = (InputScore) ssb[i];score += msb2.inputScore();}}}}}//數據清除private void outBound() {for (int i = 0; i < ssb.length; i++) {if (ssb[i].outOfBounds() || ssb[i].isLDend()) {ssb[i] = ssb[ssb.length - 1];ssb = Arrays.copyOf(ssb, ssb.length - 1);}}for (int i = 0; i < mines.length; i++) {if (mines[i].outOfBounds() || mines[i].isLDend()) {mines[i] = mines[mines.length - 1];mines = Arrays.copyOf(mines, mines.length - 1);}}for (int i = 0; i < bombs.length; i++) {if (bombs[i].outOfBounds() || bombs[i].isLDend()) {bombs[i] = bombs[bombs.length - 1];bombs = Arrays.copyOf(bombs, bombs.length - 1);}}}//移動private void omtMove() {for (int i = 0; i < ssb.length; i++) {ssb[i].move();}for (int i = 0; i < mines.length; i++) {mines[i].move();}for (int i = 0; i < bombs.length; i++) {bombs[i].move();}}//生成數據-定時生成 1-潛艇+水雷//潛艇--->@1控制種類生成概率 +@2生成頻率-------------------------------------int temp = 0;private void nextSSb() {temp++;if (temp % 40 == 0) {SaeSubmarine ssb1 = otm();ssb = Arrays.copyOf(ssb, ssb.length + 1);ssb[ssb.length - 1] = ssb1;}}//@1控制種類生成概率public SaeSubmarine otm() {Random random = new Random();int rd = random.nextInt(20);if (rd < 10) {return new ObserverSubmarine();} else if (rd < 15) {return new TorpedoSubmarine();} else {return new MineSubmarine();}}//生成水雷,@1生成水雷方法+@2控制生成頻率----------------------------------------------int temp2 = 0;private void nextMines() {temp2++;if (temp2 % 100 == 0) {for (int i = 0; i < ssb.length; i++) {//水雷是根據水雷潛艇出生if (ssb[i] instanceof MineSubmarine) {Mine msm = ((MineSubmarine) ssb[i]).NextMine();//調用生成方法mines = Arrays.copyOf(mines, mines.length + 1);mines[mines.length - 1] = msm;}}}}//啟動游戲,@1定時器+@2事件監聽器private void subAction() {//@2事件監聽器KeyAdapter k = new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {if (e.getKeyCode() == KeyEvent.VK_SPACE) {//按下鍵盤生成炸彈,生成數據-事件生成 2-炸彈Bomb bb = bts.nextBome();bombs = Arrays.copyOf(bombs, bombs.length + 1);//數組擴容bombs[bombs.length - 1] = bb;} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {bts.liftMove();} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {bts.rightMove();}}};this.addKeyListener(k);//@1定時器Timer timer = new Timer();int timi = 10;//定個10毫秒一次timer.schedule(new TimerTask() {@Overridepublic void run() {nextSSb();//生成潛艇----->潛艇是多種,控制每種潛艇的出生率,+生成潛艇nextMines();//生成水雷//移動+事件戰艦炸彈移動omtMove();outBound();//溢出數據清除bobBssb();//碰撞消失得分得命mmBbts();//戰艦碰水雷}}, timi, timi);}//重寫畫畫,顯示游戲public void paint(Graphics g) {switch (state) {case READAY:images.sea.paintIcon(null, g, 0, 0);bts.PantImage(g);//畫潛艇for (int i = 0; i < ssb.length; i++) {ssb[i].PantImage(g);}//畫水雷for (int i = 0; i < mines.length; i++) {mines[i].PantImage(g);}//畫炸彈for (int i = 0; i < bombs.length; i++) {bombs[i].PantImage(g);}g.drawString("SCORE" + score, 200, 50);g.drawString("LIVE" + bts.getLife(), 400, 50);repaint();break;case GAMEOVER:images.Gameover.paintIcon(null, g, 0, 0);break;}}public static void main(String[] args) {JFrame jFrame = new JFrame();StartGame start = new StartGame();start.setFocusable(true);jFrame.add(start);jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jFrame.setSize(WIDTH + 16, HEIGHT + 39);jFrame.setLocationRelativeTo(null);jFrame.setVisible(true);//,顯示視圖,2調用paint畫畫start.subAction();//-------------啟動} }

超類

package Submarine03;import Submarine04.SubmarineObject;import javax.swing.*; import java.awt.*; import java.util.Random;public abstract class SaeSubmarine {public static final int LIVE = 0;public static final int DEND = 1;public int state = LIVE;int width;int height;int x;int y;int speed;SaeSubmarine(int width, int height, int x, int y, int speed) {this.width = width;this.height = height;this.x = x;this.y = y;this.speed = speed;}SaeSubmarine(int width, int height) {Random random = new Random();this.width = width;this.height = height;x = -width;y = random.nextInt(479 - height - 150 + 1) + 150;speed = random.nextInt(3) + 1;}public abstract void move();//判斷狀態方法public boolean isLive() {return state == LIVE;}public boolean isLDend() {return state == DEND;}//取圖的方法 第一步public abstract ImageIcon getImage();//第二步、將取到的圖片畫到窗口 這個對象 的 getImage(取圖片)圖片 的 畫到 painImagepublic void PantImage(Graphics g) {if (isLive()) {this.getImage().paintIcon(null, g, this.x, this.y);}}//數據越界的public boolean outOfBounds() {return this.x >= SubmarineObject.Test.WIDTH;}//碰撞+ this 潛艇,ssb炸彈public boolean collideAction(SaeSubmarine ssb){int x1=this.x-ssb.width;int x2=this.x+this.width;int y1=this.y-ssb.height;int y2=this.y+this.height;int x=ssb.x;int y=ssb.y;return x>=x1 &&x<=x2 && y>=y1 &&y<=y2;}//+消失的public int colliDend(){return state=DEND;} }

倆接口+圖片類

public interface InputLive {public int inputLive(); } ---------------------------------------接口1 public interface InputScore {public int inputScore(); } --------------------------------------接口2 public class images {public static ImageIcon battleship;public static ImageIcon minesubm;public static ImageIcon obsersubm;public static ImageIcon torpesubm;public static ImageIcon Gameover;public static ImageIcon sea;public static ImageIcon mine;public static ImageIcon bomb;static {battleship = new ImageIcon("src/img/battleship.png");minesubm = new ImageIcon("src/img/minesubm.png");obsersubm = new ImageIcon("src/img/obsersubm.png");torpesubm = new ImageIcon("src/img/torpesubm.png");Gameover = new ImageIcon("src/img/Gameover.png");sea = new ImageIcon("src/img/sea.png");mine = new ImageIcon("src/img/mine.png");bomb = new ImageIcon("src/img/bomb.png");} }

6個子類

//戰艇類 public class BattleShip extends SaeSubmarine {int life;//構造方法初始化數據public BattleShip() {super(66, 26, 270, 124, 20);this.life=5;}@Overridepublic void move() {System.out.println(width+"\t"+height+"\t"+x+"\t"+y+"\t"+speed+"\t"+"發射炸彈!");}@Overridepublic ImageIcon getImage() {return images.battleship;}public Bomb nextBome(){return new Bomb(this.x,this.y);}public void liftMove(){x-=speed;}public void rightMove(){x+=speed;}//獲取life,顯示用public int getLife(){return life;}//添加生命public int addLife(int num){return life+=num;}public int minusLife(){return life--;} } --------------------------------------------------------------- public class Bomb extends SaeSubmarine {Bomb(int x, int y) {super(9, 12, x, y, 3);}@Overridepublic void move() {y+=speed;System.out.println(width+"\t"+height+"\t"+x+"\t"+y+"\t"+speed+"\t"+"發射炸彈!");}@Overridepublic ImageIcon getImage() {return images.bomb;}//數據越界的public boolean outOfBounds() {return this.y >= SubmarineObject.Test.HEIGNT;} } ----------------------------------------------------------------- public class Mine extends SaeSubmarine {Mine(int x, int y) {super(9, 12, x, y, 3);}@Overridepublic void move() {y-=speed;System.out.println(width+"\t"+height+"\t"+x+"\t"+y+"\t"+speed+"\t"+"發射炸彈!");}@Overridepublic ImageIcon getImage() {return images.mine;}//數據越界的public boolean outOfBounds() {return this.y <= 150-this.height;} } ----------------------------------------------------------------- public class ObserverSubmarine extends SaeSubmarine implements InputScore {public ObserverSubmarine() {super(63, 19);}@Overridepublic void move() {x+=speed;System.out.println(width+"\t"+height+"\t"+x+"\t"+y+"\t"+speed+"\t"+"發射炸彈!");}/*偵察潛艇: 寬63高19,x設置初始 為-x, y位置是隨機的,速度*/@Overridepublic ImageIcon getImage() {return images.obsersubm;}@Overridepublic int inputScore() {return 10;} } ----------------------------------------------------------------- public class TorpedoSubmarine extends SaeSubmarine implements InputScore {public TorpedoSubmarine() {super(64, 20);}@Overridepublic void move() {x+=speed;System.out.println(width+"\t"+height+"\t"+x+"\t"+y+"\t"+speed+"\t"+"發射炸彈!");}/*魚雷潛艇: 寬63高19,x設置初始 為-x, y位置是隨機的,速度*/@Overridepublic ImageIcon getImage() {return images.torpesubm;}@Overridepublic int inputScore() {return 40;} } ---------------------------------------------------------------- public class MineSubmarine extends SaeSubmarine implements InputLive {/*水雷潛艇: 寬63高19,x設置初始 為-x, y位置是隨機的,速度*/public MineSubmarine() {super(63, 19);}@Overridepublic void move() {x+=speed;System.out.println(width+"\t"+height+"\t"+x+"\t"+y+"\t"+speed+"\t"+"發射炸彈!");}@Overridepublic ImageIcon getImage() {return images.minesubm;}public Mine NextMine(){int x = this.x+this.width; //x:水雷潛艇的x+水雷潛艇的寬int y = this.y-5; //y:水雷潛艇的y-固定的5return new Mine(x,y); //返回水雷對象}@Overridepublic int inputLive() {return 1;} }

學自王克晶老師:
https://blog.csdn.net/jason13579?type=blog

總結

以上是生活随笔為你收集整理的潜艇大作战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人精品一区二区三区在线 | 国产视频一区三区 | 青青草视频免费 | 亚洲区一区二区三区 | 欧美国产视频一区 | 国产精品婷婷午夜在线观看 | 91男女视频 | www.com亚洲| 久久99精品国产麻豆91樱花 | 蜜桃视频免费网站 | 丰满女人又爽又紧又丰满 | 在线观看日韩精品 | 理论片一级 | 免费看欧美一级片 | 欧美在线一区二区三区四区 | 超碰97免费| 亚洲第一成人在线 | 亚洲天堂国产 | 国产一区二区三区四区三区四 | 亚洲精品国产精品乱码不卡 | www.好了av.com| 亚洲成人99| h视频在线免费观看 | 亚洲精品色| 在线观看免费av网站 | 欧美人与性动交α欧美片 | www国产精品内射老熟女 | 日韩经典在线观看 | 夜夜高潮夜夜爽 | 亚洲综合激情小说 | 国内视频一区二区 | 国产女主播喷水视频在线观看 | 少妇搡bbbb搡bbb搡澳门 | 97插插插 | 精品无人国产偷自产在线 | 亚洲精品久久久乳夜夜欧美 | 亚洲网站在线免费观看 | 国产视频精品久久 | 蜜臀尤物一区二区三区直播 | 中文一区二区 | 日本成人免费网站 | 亚洲福利电影 | 精品妇女一区二区三区 | 天堂俺去俺来也www 欧美大片在线播放 | 天天射天天操天天干 | 欧美另类性| 成人久久在线 | 男人添女人下部高潮全视频 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 永久免费国产 | 欧美成人精品一区二区三区在线看 | 国产一区二区日韩 | 国产美女主播视频 | 成人高清网站 | 亚洲人在线| 99热免费在线观看 | 先锋成人 | 欧美日韩成人在线 | 国产成人精品久久久 | 亚洲一区二区三区网站 | 亚洲av永久无码精品国产精品 | 无码视频一区二区三区 | 精品影视一区二区 | 五月天色站 | 亚洲精品理论片 | 国内精品久久久久久 | 四虎影院www| 国产人妻精品一区二区三区 | 少妇人妻偷人精品一区二区 | 青青草在线免费观看 | 天天天天躁天天爱天天碰2018 | 偷拍一区二区 | 韩国女主播裸体摇奶 | 瑟瑟综合网| 免费在线观看的av | 在线亚洲精品 | 欧美国产日本 | av午夜激情 | 无人在线观看高清视频 单曲 | 国产成人超碰人人澡人人澡 | 国产精品久久久久久久免费观看 | 精品午夜一区二区三区在线观看 | 欧美成人激情 | 亚洲人做受 | 德国经典free性复古xxxx | 天天干天天操天天 | 日韩欧美国产亚洲 | 涩涩一区| 婷婷综合激情 | 国产成人精品在线 | 国产xxxx做受视频 | 亚洲精品高潮久久久久久久 | 国产一区二区高清 | 亚洲黄色网页 | 中文在线字幕 | 天天综合视频 | 成人免费视频观看视频 | a毛片在线| 色窝窝无码一区二区三区成人网站 |