程式設計師用Java開發坦克大戰,網友:神級操作,就問你6不6!
坦克大戰運用到的Java知識:集合、Swing、執行緒。
程式設計思想:
在主類開啟一個執行緒,沒50毫秒迴圈一次畫方法(繪製整個介面內的所有東西)。畫的東西有敵我坦克(顏色區分)、子彈、牆、血塊、爆炸。所以總共寫出了幾個類:Tank坦克類、Missile子彈類、Wall牆類、Blood血塊類、TankClient主類。在每一個類中均寫有畫方法實現本類屬性的繪製功能。在主類中有鍵盤監聽事件呼叫這Tank類的鍵盤監聽事件。通過鍵盤監聽判斷出對Tank做出相應的移動,而敵方Tank則是隨機運動。並且每次重新整理都有呼叫各類的碰撞方法,判斷一些不該碰撞的物件的情況時做出處理。而每個物件的建立例如子彈這些是在觸發產生之後將新建子彈類加入一個子彈類集合之中,在繪製的時候判斷集合中的數量進行繪製,出界或者打死坦克則在集合中刪除。其他類也均相似,不在細說。
展示一下游戲介面:

遊戲原理:
1、敵我坦克:在坦克類裡面有一個布林型別變數good。用於判斷坦克的陣營,在建立坦克物件時在Tank類的構造方法中傳入good的值。在畫坦克的時候判斷good的值,區分敵我坦克的顏色;
2、坦克運動:在坦克類裡寫入了監聽鍵盤摁鍵的響應事件,對監聽到的上下左右鍵進行記錄,併合成坦克移動的八個方向的變數。之後對應每個方向的不同對坦克座標x,y的值做響應的更改實現我方坦克的移動。而敵方坦克則自動移動,通過隨機數對敵方坦克移動方向的隨機,並且隨機出每次移動的次數。兩個隨機值相結合即實現了敵方坦克的移動。
3、坦克發射子彈:通過鍵盤監聽,檢測到發射子彈命令後將主類的子彈類集合中新增一個子彈類。將炮筒的方向以及坦克的位置以及坦克的陣營傳入給子彈類,在主類paint畫方法中一直迴圈子彈類集合,如果集合內有子彈,就畫出來。這樣就實現了發射子彈。
4、坦克、子彈、牆的碰撞:在坦克類子彈類牆類中分別getRect方法獲取自身的範圍,然後在每次畫坦克、子彈時都會進行相應的碰撞檢測(在坦克類裡有與牆和出自己外的坦克相撞的處理方法、在子彈類裡有與牆和坦克相碰撞的處理方法。),如果自身與不該碰撞的物體的範圍相重合,則代表兩物體相撞。
5、坦克加血:在血塊類中有血塊與我方坦克相碰撞的處理方法,如果血塊範圍與坦克範圍重合則血塊類死亡,並且坦克類的血量回復置滿。
6、坦克復活:通過鍵盤監聽,檢測到我方坦克復活命令後,如果我方坦克處於死亡狀態,則將我方坦克存貨狀態改為活著並且將我方坦克血量回置滿血。
實現程式碼如下:
TankClient.java



Tank.java






Missile.java



Wall.java

Explode.java

Blood.java

最後,給大家推薦一個**Java進階內推交流群730379855**,不管你在地球哪個方位,不管你參加工作幾年都歡迎你的入駐!(群內會免費提供一些群主收藏的免費學習書籍資料以及整理好的幾百道面試題和答案文件!)
宣告:本文內容來源於網路,如有侵權請聯絡刪除