Java課程設計——坦克大戰

 坦克大戰——坦克類

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

      http://www.javashuo.com/article/p-sxvnpmci-a.html

二.我的負責模塊和任務說明

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

三.代碼的提交記錄截圖

 

 

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

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

1.玩家坦克類

構造方法:html

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

 

 

移動方向:(上下左右)數組

左移思路:若當前方向不是左移,則將圖片更改成左移圖片,而且更新方向爲左。ui

若通過碰撞檢測發現不會產生碰撞,則改變座標,而且要判斷座標是否在邊界。spa

其餘方向同理,代碼截圖以下:線程

 

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

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

坦克碰撞檢測同理,注意要將本身除外,而且要查看當前坦克是否存活,代碼截圖以下:htm

 

得到子彈:對象

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

 

攻擊方法:得到子彈,將子彈添加至面板(由於子彈有四個方向),啓動攻擊冷卻線程。

 

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

 

冷卻線程:

使用sleep()方法,通過休眠以後,要注意改變線程的狀態,將其改成可攻擊。

 

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

2.電腦坦克類

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

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

 

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

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

 

 

 

五.課程設計感想

本次課設遇到的問題:

1. 因爲本次課設是小組分工,全部組員要多進行交流,產生的問題要協力解決。

2. 在進行多關卡的設置時,咱們對關卡的跳轉處理很差,在遊戲結束時,仍可以進入到下一關,通過排查,咱們發現是由於level的值未及時調整,致使即時遊戲失敗,也能進入到下一關。

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

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

收穫:

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

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

相關文章
相關標籤/搜索