1.玩家坦克類
構造方法:html
設置座標位置(坦克出生的位置),坦克的圖片,坦克的類型(玩家仍是電腦),面板(可將坦克放置於當前面板中),代碼截圖以下:編程
移動方向:(上下左右)數組
左移思路:若當前方向不是左移,則將圖片更改成左移圖片,而且更新方向爲左。ui
若通過碰撞檢測發現不會產生碰撞,則改變座標,而且要判斷座標是否在邊界。spa
其餘方向同理,代碼截圖以下:線程
碰撞檢測:(牆與電腦坦克)設計
思路:獲取當前座標周圍必定範圍內的矩形邊框,同時獲取當前面板內的全部牆體對象,將其存放於數組中。將得到的矩形範圍與全部牆體互相匹配,若符合則說明會產生碰撞。注意草地例外。3d
坦克碰撞檢測同理,注意要將本身除外,而且要查看當前坦克是否存活,代碼截圖以下:htm
得到子彈:對象
根據上下左右的方向判斷坦克頭的位置,即子彈發射的方向的預設,以保證以後子彈朝預設方向移動(子彈的移動在子彈類裏)
攻擊方法:得到子彈,將子彈添加至面板(由於子彈有四個方向),啓動攻擊冷卻線程。
觸碰邊界方法:根據屏幕與主窗體之間的大小關係,進而判斷坦克是否移動到邊界。
冷卻線程:
使用sleep()方法,通過休眠以後,要注意改變線程的狀態,將其改成可攻擊。
其他setter,getter方法則不進行詳細描述。
2.電腦坦克類
構造方法:繼承自父類玩家坦克類,設置好初始方向,攻擊冷卻時間
移動方向:在父類的基礎上,改變了父類的手動產生新方向,而是隨機產生新方向,而且在該方向的移動時間是設置好的,檢測是否達到邊界同理:
碰撞檢測,攻擊方法的思路都與玩家坦克類類似,不一樣之處在於,玩家坦克類的方向是人爲改動的,而電腦坦克類的方向是隨機產生的,故要重寫父類的這兩個方法。
攻擊方法:只有4%的機率產生攻擊,用隨機數實現
本次課設遇到的問題:
1. 因爲本次課設是小組分工,全部組員要多進行交流,產生的問題要協力解決。
2. 在進行多關卡的設置時,咱們對關卡的跳轉處理很差,在遊戲結束時,仍可以進入到下一關,通過排查,咱們發現是由於level的值未及時調整,致使即時遊戲失敗,也能進入到下一關。
3. 對圖片的路徑產生了疑問,以後利用枚舉將路徑存儲於字符串,方便以後的使用。
4. 在遊戲時,咱們發現每打死一個坦克,都會出現異常,最後發現是咱們爆炸的圖片沒有處理好。
收穫:
1. 學會了如何以團隊的方式完成一個代碼的整合。
2. 對Java有了更深層次的理解,對面向對象設計有了深入的瞭解,Java與c語言不一樣,c語言是面向過程的編程,而JAVA編程思想是面向對象的編程,即要有萬物皆對象的設計思想,要理解對象之間的關係,要了解一個對象有什麼樣的屬性和什麼樣的方法。