java坦克大战思路总结
第一步,設置游戲的窗體,
? ? ?創建一個窗體類,繼承Frame,(也可以不繼承使用JFrame),然后在該類的構造函數中,使用Frame中的方法,設置窗體的標題,大小,位置,可顯,可改變窗體大小,(注意:可以使用Toolkit方法獲取屏幕的高寬;setVisible方法的位置);然后添加事件監聽,在WindowListener中重寫,以實現窗口關閉,(還有一個代碼簡單的,不過忘了咋寫的了),然后創建一個類,做主線程,在main方法里將該窗體類實例化,然后就實現了一個游戲窗體。
第二步,將人物畫上去
先在窗體類中重寫paint方法,這個重寫的paint方法會自動調用,在重寫paint方法里,可以把人物畫出來,關于圖片的添加,在該項目里新建一個包用了存圖片,圖片的使用,我使用的是一個工具類,別人寫好的,我所知道的有一個方法把圖片對象化的,別的不太了解。
第三步,人物的移動
創建人物類,定義初始位置,和方向,速度,寫一個構造器,這樣就可以實例化的時候賦初始值了,寫一個畫筆的成員方法,在從窗體類中的重寫paint方法里傳過來畫筆,這樣這個成員方法也相當于重寫paint方法了,再寫移動方法,通過判斷方法來控制移動,然后在paint方法中調用,現在剩下的問題就是獲取方向了,在窗體類中添加按鍵監聽,通過監聽獲取四個布爾值,四個布爾值對應著四個方向,(四個方向可以用枚舉來表示),在寫一個成員方法將四個布爾值轉變為方向,在人物類中寫一個含參數的方法,用來獲取方向。
第四步,填加靜止狀態
在人物類中定義一個布爾值,然后在paint方法中判斷就行了
第五步,閃爍問題
解決方法大概有兩種
加一個雙緩沖或者加一個畫布
第六步,子彈發射,連發,消除
這個問題,要找到觸發的源頭,我像按空格發射子彈,那么源頭就是監聽空格,我在人物類中寫一個開火方法,在監聽中調用,而開火方法是用來獲取此時人物的位置信息的,這樣我們獲取了子彈的初始坐標和方向,創建一個子彈類,定義的信息和人物類差不多,創建一個子彈容器,在這里寫一個方法獲取子彈的初始的位置和方向,這樣就可以實現按一次空格,就會往子彈容器里添加一個子彈了,關于內存溢出,在子彈類中寫一個方法,通過判斷位置來去除這顆子彈,(容器中的子彈用getset方法來獲取),然后將該方法在paint方法中調用,這子彈的數量我并沒有限制。
第七步,怪物的產生和移動
這里我是開了一個線程,創建一個怪物類,new一個線程,寫在該類的構造方法里,這樣只要被實例化,線程就開啟了,怪物的位置,移動我是通過獲取四個隨機數來隨機生成的,怪物的數量多少和子彈相似,用容器的存儲,這時候就要明確怪物的數量了,其他的和人物類相似。
第八步,碰撞,死亡
碰撞我是在窗體類中的重寫paint方法中判斷的,判斷方法我所了解的有兩種,判斷兩個矩形是否相交和判斷兩圖片中心的距離是否超出,既然碰撞了,就會傷害,這時定義怪物和人物的血量和攻擊,發生碰撞時判斷其血量狀態,進行扣血,怪物死亡了就去除這個對象,增加游戲積分,人物死亡就游戲結束
第九步,死亡界面,開始界面添加
在窗體類中定義一個開始的布爾值,在窗體類中添加鼠標監聽,監聽中改變布爾值,在重寫paint方法類判斷,該畫那個圖片。在窗體類中定義死亡的布爾值,人物死亡的時候改變布爾值,這和開始界面相似
第十,暫停界面
這時候,就要說一下刷新了,在主線程里,使用repaint方法,才會讓窗體不斷的刷新,畫面才會動起來,暫停就可以提供一個布爾值來判斷是否使用repaint方法。
大概就這些吧,很多都是思路,算是一個小總結,如有不足之處,請指正。
總結
以上是生活随笔為你收集整理的java坦克大战思路总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea远程调试
- 下一篇: 5个免费的PPT模板下载网站