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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java飞机大战流程图_JAVA课程设计-飞机大战

發布時間:2025/3/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java飞机大战流程图_JAVA课程设计-飞机大战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JAVA課程設計-飛機大戰

1.團隊名稱、團隊成員介紹

1.1 團隊名稱:做個飛機哦

1.2團隊成員介紹:

余俊良(組長):編寫博客、游戲主界面設計與實現、英雄機與子彈類的實現、場景設計

林祥濤:游戲音效設計、玩家類編碼與設計、小Boss類設計、ppt設計

高凱:畫uml類圖、積分榜設計、游戲道具定義實現、游戲狀態設計

2.項目git地址

3.項目git提交記錄截圖

4.前期調查及游戲介紹

玩家通過控制飛機發射子彈擊中不同的敵機獲取積分,擊中快速移動的浮標獲得獎勵(獲得雙倍子彈獎勵、生命值增加)。游戲過程伴隨著背景音樂,而且擊中敵機或生命耗盡后會產生相應音效。與敵機相撞則扣除生命值1點,直到生命值為0,游戲結束,玩法簡單有趣,鍛煉反應能力。

5.項目功能架構圖、主要功能流程圖

6.面向對象設計包圖、類圖

包圖

類圖

7.項目運行截圖

主界面顯示

英雄機

普通敵機

精英機

小boss

切換飛機

雙倍子彈模式

排行榜

獎勵

游戲結束

8.項目關鍵代碼

8.1鼠標事件

使用鼠標事件監聽MouseAdapter對鼠標進行監聽,當鼠標移動時獲取鼠標的坐標,點擊時開啟游戲,鼠標移出窗體后游戲暫停,移入則繼續。

MouseAdapter m = new MouseAdapter() {

// 鼠標移動事件

public void mouseMoved(MouseEvent e) {// 鼠標坐標獲取

if (Running == state) {

hero.moveTo(e.getX(), e.getY());

}

}

// 鼠標點擊事件

public void mouseClicked(MouseEvent e) {

if (Start == state) {// 點擊開始游戲

state = Running;

} else if (Over == state) {// 游戲結束后點擊重新開始

state = Start;

score = 0;// 積分,飛行物重置

hero = new Heroplane();

flyobj = new ArrayList();

bullets = new ArrayList();

}

}

// 鼠標移出事件

public void mouseExited(MouseEvent e) {

if (Running == state) {// 移出窗體,游戲暫停

state = Pause;

}

}

// 鼠標移入事件

public void mouseEntered(MouseEvent e) {// 移回窗體,游戲繼續

if (Pause == state) {

state = Running;

}

}

};

8.2雙緩沖技術消除閃屏

閃屏的出現是因為在while循環中執行線程時每循環一次便會重繪一次,而update()方法即會先清理掉當前的畫面再重新繪制新的畫面。可以在內存中重新開辟新空間,作為后臺圖像,本應該在界面上進行清理與重繪現在內存中先實現,生成新畫面,最后顯示到屏幕上。

private Image offScreenImage = null;// 利用雙緩沖技術消除屏幕閃爍

public void update(Graphics g) {

if (offScreenImage == null) {

offScreenImage = this.createImage(WIDTH, HEIGHT);

}

Graphics gOff = offScreenImage.getGraphics();

paint(gOff);

g.drawImage(offScreenImage, 0, 0, null);

}

8.3飛行物顯示

通過根據狀態不斷重繪飛行物來達到動畫效果

Timer timer = new Timer();

int timeGap = 10;// 設定時間隔

timer.schedule(new TimerTask() {

public void run() {

if (state == Running) {

heroBulletEnter();// 英雄子彈的入場

enemyEnter();// 敵機的入場

enemyStep();// 敵機的移動

outBoundDel();// 刪除越界(底)的敵機和子彈

enemyCrash();// 英雄機子彈與敵人相撞(子彈和敵機退場)

checkGame();// 檢查游戲是否結束(敵機和英雄機相撞)

}

repaint();// 重畫

}

}, timeGap, timeGap);// timeGap為每一次到下一次的觸發間隔

9.項目代碼掃描結果及改正

9.1第一次掃描結果

9.2掃描修正

在所有的覆寫方法前增加@Override注釋

常量名應當全部大寫,單詞用下劃線隔開

switch塊中,每個case都應通過break/default來終止

方法內部單行注釋,在被注釋語句上方另一行使用//注釋,多行注釋使用/**/注釋

9.3全部修正后結果

10.項目總結

10.1不足

原先計劃能夠在完成單人模式的基礎上增加聯網模式,但是在基本完成單人模式后剩余的時間的確不夠去實現聯網。設計的敵機類型也不夠多,道具類型也可以再增加。

10.2展望

在課設完成后利用課余時間增加網絡模式,并在網絡中進行線上合作與排行

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的java飞机大战流程图_JAVA课程设计-飞机大战的全部內容,希望文章能夠幫你解決所遇到的問題。

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