Java課程設計——坦克大戰


 坦克大戰——坦克類

一. 團隊課程設計博客鏈接

      https://www.cnblogs.com/chenhuilin/p/10275664.html

二.個人負責模塊和任務說明

模塊:坦克類(玩家坦克類+電腦坦克類),代碼整合

三.代碼的提交記錄截圖

 

 

四.負責模塊和任務詳細說明

玩家坦克繼承VisibleImage類,電腦坦克類繼承自玩家坦克類,UML如下:

1.玩家坦克類

構造方法:

設置坐標位置(坦克出生的位置),坦克的圖片,坦克的類型(玩家還是電腦),面板(可將坦克放置於當前面板中),代碼截圖如下:

 

 

移動方向:(上下左右)

左移思路:若當前方向不是左移,則將圖片更改為左移圖片,並且更新方向為左。

若經過碰撞檢測發現不會產生碰撞,則改變坐標,並且要判斷坐標是否在邊界。

其他方向同理,代碼截圖如下:

 

碰撞檢測:(牆與電腦坦克)

思路:獲取當前坐標周圍一定范圍內的矩形邊框,同時獲取當前面板內的所有牆體對象,將其存放於數組中。將獲得的矩形范圍與所有牆體互相匹配,若符合則說明會產生碰撞。注意草地例外。

坦克碰撞檢測同理,注意要將自己除外,並且要查看當前坦克是否存活,代碼截圖如下:

 

獲得子彈:

根據上下左右的方向判斷坦克頭的位置,即子彈發射的方向的預設,以保證之后子彈朝預設方向移動(子彈的移動在子彈類里)

 

攻擊方法:獲得子彈,將子彈添加至面板(因為子彈有四個方向),啟動攻擊冷卻線程。

 

觸碰邊界方法:根據屏幕與主窗體之間的大小關系,進而判斷坦克是否移動到邊界。

 

冷卻線程:

使用sleep()方法,經過休眠之后,要注意改變線程的狀態,將其改為可攻擊。

 

其余setter,getter方法則不進行詳細描述。

2.電腦坦克類

構造方法:繼承自父類玩家坦克類,設置好初始方向,攻擊冷卻時間

移動方向:在父類的基礎上,改變了父類的手動產生新方向,而是隨機產生新方向,並且在該方向的移動時間是設置好的,檢測是否達到邊界同理:

 

碰撞檢測,攻擊方法的思路都與玩家坦克類相似,不同之處在於,玩家坦克類的方向是人為改動的,而電腦坦克類的方向是隨機產生的,故要重寫父類的這兩個方法。

 攻擊方法:只有4%的概率產生攻擊,用隨機數實現

 

 

 

五.課程設計感想

本次課設遇到的問題:

1. 由於本次課設是小組分工,所有組員要多進行交流,產生的問題要合力解決。

2. 在進行多關卡的設置時,我們對關卡的跳轉處理不好,在游戲結束時,仍能夠進入到下一關,經過排查,我們發現是因為level的值未及時調整,導致即時游戲失敗,也能進入到下一關。

3. 對圖片的路徑產生了疑問,之后利用枚舉將路徑存儲於字符串,方便之后的使用。

4. 在游戲時,我們發現每打死一個坦克,都會出現異常,最后發現是我們爆炸的圖片沒有處理好。

收獲:

1. 學會了如何以團隊的方式完成一個代碼的整合。

2. 對Java有了更深層次的理解,對面向對象設計有了深刻的了解,Java與c語言不同,c語言是面向過程的編程,而JAVA編程思想是面向對象的編程,即要有萬物皆對象的設計思想,要理解對象之間的關系,要了解一個對象有什么樣的屬性和什么樣的方法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM