Java坦克大戰(zhàn)游戲設(shè)計

Java坦克大戰(zhàn)游戲設(shè)計

ID:39454603

大小:463.12 KB

頁數(shù):37頁

時間:2019-07-03

Java坦克大戰(zhàn)游戲設(shè)計_第1頁
Java坦克大戰(zhàn)游戲設(shè)計_第2頁
Java坦克大戰(zhàn)游戲設(shè)計_第3頁
Java坦克大戰(zhàn)游戲設(shè)計_第4頁
Java坦克大戰(zhàn)游戲設(shè)計_第5頁
資源描述:

《Java坦克大戰(zhàn)游戲設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、Java大作業(yè)報告(截止5月20日)北方民族大學(xué)大作業(yè)報告(游戲程序設(shè)計)系(部、中心)計算機科學(xué)與工程學(xué)院姓名王鑫學(xué)號20122201專業(yè)軟件工程 班級2012級軟件三班課程名稱Java語言程序設(shè)計作業(yè)題目名稱《簡易版坦克大戰(zhàn)游戲程序設(shè)計》起止時間2014年4月21日——2014年5月21日成績 指導(dǎo)教師簽名賈艷波、林淑飛 Java大作業(yè)報告(截止5月20日)簡易版坦克大戰(zhàn)游戲程序設(shè)計一、游戲的基本規(guī)則坦克種類分為敵方坦克和我方坦克,敵方有n輛藍色坦克(n值可以自己設(shè)定),我方有一輛紅色坦克,我方坦克發(fā)射子彈,擊中敵人坦克后,敵方坦

2、克消失,并產(chǎn)生爆炸效果,同理,敵方坦克擊中我之后,我方坦克消失并爆炸。游戲結(jié)束。二、主要實現(xiàn)思想和算法gui圖形界面顯示:界面的顯示是通過TankGame類(繼承了JFrame)和MyPanel(繼承了JPanel)類實現(xiàn)。其中,MyPanel重寫了paint方法,利用畫筆Graphics繪制活動區(qū)域、坦克和子彈。畫坦克的思想:選擇一個參考點,如右圖,首先參照參考點,畫出參考點左邊的矩形,然后參照參考點分別畫出中間的正方形,圓形,直線和右邊的矩形。這些形狀組合起來就形成了一輛坦克。然后將畫坦克的步驟封裝成一個方法。我的坦克發(fā)射子彈的思

3、想:首先創(chuàng)建一個Shot類,他擁有坐標(根據(jù)坦克的坐標換算得到)、方向、速度和是否存活的屬性,因為,子彈的坐標要不斷的改變,所以將它做成一個線程。然后,在我的坦克里面定義了一個vactor(因為他是線程安全的)類集框架存放我的坦克的子彈。然后在pannel的paint方法中繪制。讓MyPanel實現(xiàn)KeyListener接口,將TankGame注冊讓MyPanel監(jiān)聽,這樣的話我按下j鍵,就在vactor里面添加一個子彈,然后讓Shot實現(xiàn)Runnable接口,然后重寫run方法,在run方法中通過改變子彈的坐標實現(xiàn)子彈的運動。我的坦

4、克移動的思想:讓MyPanel實現(xiàn)KeyListener接口,將TankGame注冊讓MyPanel監(jiān)聽,這樣我按下相應(yīng)的鍵,就相應(yīng)的改變坦克的坐標,利用repaint重新繪制坦克。敵人坦克移動的思想:將敵人的坦克做成一個線程,然后在run方法中改變坦克坐標,重繪坦克。里隨機數(shù)生成不同的方向,從而讓敵人的坦克自主選擇方向移動。實現(xiàn)動態(tài)畫面的思想:將MyPanel做成一個線程,然后將repaint函數(shù)方將run函數(shù)中,這樣repaint函數(shù)就會被不斷的調(diào)用,從而不斷地刷新畫面,達到動態(tài)效果。判斷子彈是否擊中坦克的算法:獲得子彈的坐標和坦

5、克的坐標,如果子彈坐標進入坦克坐標范圍,就判為擊中。讓已經(jīng)死亡的坦克和子彈消失的方法:被擊中的坦克的isLive和子彈isLive的設(shè)置為false,這樣,在繪制的時候會首先判斷要繪制對象的isLive的值,如果為true才繪制,這樣死亡的坦克和子彈就消失了。讓敵人坦克和子彈自動移動的思想:將敵人坦克和子彈做成一個線程,然后分別在各自的run函數(shù)中添加一個修改坐標的程序段。然后在MyPanel中啟動對應(yīng)的線程。坐標不斷的自動修改,另一方面,paint函數(shù)不斷的重新繪制,從而讓坦克和子彈自動的移動了起來。讓坦克和子彈在規(guī)定的區(qū)域內(nèi)移動的

6、方法:通過比較坦克坐標和區(qū)域坐標范圍,如果坦克坐標達到區(qū)域坐標范圍邊界,就不讓坦克的坐標繼續(xù)修改,從而將坦克控制在規(guī)定的范圍。通過比較子彈坐標和區(qū)域坐標范圍,如果子彈坐標超出區(qū)域坐標范圍,就將子彈的isLive置為false,這樣在paint函數(shù)中就不再繪制這個子彈了,從而超出區(qū)域的子彈就消失了。Java大作業(yè)報告(截止5月20日)顯示爆炸效果的方法:首先我準備了一張爆炸的圖片,然后創(chuàng)建一個爆炸的類Bomb,它擁坐標屬性,和生命值屬性。還有減少生命的方法,當子彈擊中坦克后,就坦克的坐標傳遞給Bomb,當做Bomb的坐標,然后開始繪制炸

7、彈,同時讓炸彈的生命不斷減小,paint函數(shù)根據(jù)炸彈不同的生命值繪制不同大小的爆炸效果,不同的爆炸效果組合起來就形成了一個完整的爆炸。三、游戲軟件系統(tǒng)的設(shè)計Java大作業(yè)報告(截止5月20日)四、程序關(guān)鍵類的實現(xiàn)Tank類,擁有坐標X,Y和方向,速度屬性,以及對應(yīng)的set和get方法。還有判斷坦克是否死亡的isLive屬性。Hero類,繼承了Tank類,有子彈屬性,有shotEnemy方法,和上下左右移動的方法Shot類,實現(xiàn)了線程接口,run方法里面放置了修改子彈坐標和判斷子彈是否處境的算法。有坐標、速度、方向、和是否活著的屬性。J

8、ava大作業(yè)報告(截止5月20日)炸彈類,有坐標、生命值和是否存活的屬性。有生命減少的方法。EenmyTank類,繼承了Tank類,實現(xiàn)了線程接口,在run方法中添加了修改坦克坐標的程序段,從而讓坦克自動移動。MyPan

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。