java坦克大战心得
創建窗口
?創建一個窗體類,繼承Frame,(也可以不繼承使用JFrame),然后在該類的構造函數中,使用Frame中的方法,設置窗體的標題,大小,位置,可顯,不可改變窗體大小(注意:可以使用Toolkit方法獲取屏幕的高寬;
也可以直接寫窗口的大小;setVisible()方法,顯示窗體,最好寫在最后面的位置)
然后創建一個類,做主線程,在main方法里將該窗體類實例化,然后就實現了一個游戲窗體。
添加游戲必要元素
先在窗體類中寫paint方法,這個paint方法會自動調用,在paint方法里,可以把人物,背景,各個界面的文字畫出來,(可以選擇不同的字體,顏色,進行美化)關于圖片的添加,在該項目里新建一個包用于存圖片,圖片的使用,我使用的是一個工具類,我所知道的有一個方法把圖片對象化的,然后找到圖片的路徑,對圖片進行調用。(圖片的實際大小和顯示大小不一定一樣,實際大小是你在程序中定義的,顯示大小是圖片本身的大小)(這個之前搞得不是太明白導致兩個游戲元素重疊)
控制我方坦克
創建人物類,定義初始位置,和方向,速度,寫一個構造器,這樣就可以實例化的時候賦初始值了,寫一個畫筆的成員方法,在從窗體類中的重寫paint方法里傳過來畫筆,這樣這個成員方法也相當于重寫paint方法了,再寫移動方法,通過判斷方法來控制移動,然后在paint方法中調用,然后就是獲取方向了,可以在窗體類中添加按鍵監聽,通過監聽獲取四個布爾值,四個布爾值對應著四個方向,在寫一個成員方法將四個布爾值轉變為方向,在人物類中寫一個含參數的方法,用來獲取方向進行參數的加減,啟動線程,不斷重畫,進行移動。
閃爍問題
運用雙緩存
將所有的東西畫在一副虛擬的圖片上(和容器一樣的大小),然后整個繪制到容器的畫布中,一次性的顯示出來;
每一次調用repaint()方法(具有刷新頁面效果的方法),先調用update()方法(清除當前顯示并再調用paint()方法)。
子彈的發射,碰撞,消失
添加x,y等屬性;添加構造方法、draw等必要方法;(實時繪制,執行完draw()語句之后立即進行渲染)根據不同的方向,進行不同的運動;按空格發射子彈,那么源頭就是監聽空格,構造方法來獲取此時人物的位置信息的,這樣我們獲取了子彈的初始坐標和方向,創建一個子彈類,定義的信息和人物類差不多,創建一個子彈容器,在這里寫一個方法獲取子彈的初始的位置和方向,這樣就可以實現按一次空格,就會往子彈容器里添加一個子彈,發射一次子彈后進行發射冷卻,可以自己調節時間。關于內存溢出,在子彈類中寫一個方法,通過判斷子彈的位置,如果子彈的位置超出邊界就消去這個子彈(容器中的子彈用getset方法來獲取),然后將該方法在paint方法中調用,不斷的刷新界面實現子彈的移動。然后判斷子彈和界面內物體的碰撞,只要監控它們的坐標,判斷是否相同,如果相同就同時消去。
敵方坦克的產生,移動
和控制我方坦克差不多,創建一個新的類,怪物的位置,可以通過創建一個隨機類對象random,來獲取隨機橫坐標來隨機生成,
怪物的數量多少和子彈相似,用容器的存儲,這時候就要明確怪物的數量了,創建一個變量,加入if()判斷當變量大于多少時,使坦克不在生成。坦克的移動可以通過獲取四個隨機數來隨機生成的,方向轉變的時間間隔相同。
?
死亡,勝利,失敗,暫停界面
死亡就是判斷兩個坦克和子彈是否碰撞,把兩個物體當作矩形,調用intersects()方法判斷兩個矩形是否相交。如果坦克和子彈相交及坦克死亡子彈消除;子彈和墻壁相交,兩者同時消除。消除物體的方法,就是把用到它的方法從遍歷paint的列表中去掉。
勝利就是判斷我方坦克是否消滅敵方所有坦克且基地保存完好。然后在paint中重新繪制游戲勝利的界面。
失敗和勝利大致相同,即我方坦克全部死亡或基地死亡時,重新繪制游戲失敗界面。
暫停模式,就是重新定義一個變量,按下暫停鍵時,給變量重新賦值。當變量的值為某個值時,重新繪制游戲界面,即跳轉到暫停界面。并且使坦克不在生成和移動 。再次,按壓下暫停鍵時,改為原來的值使界面轉回原來界面,程序正常運行。
?
優化添加特效
寫完上面的游戲就能運行了,不過還是要加一些爆炸特效和背景音樂
? ? ?爆炸特效就是,在坦克與子彈相碰的位置連續切換繪制爆炸圖片來實現。用Toolkit.getImang()方法來獲取圖片用for()循環進行圖片轉換
? ?添加背景音樂,創建一個新的類,用File添加音樂的絕對路徑。然后在線程中用AudioSystem和AudiolnputStram處理音頻文件,然后將要播放的音樂,調用到繪制畫面后需要有聲音的地方。
我的大致思路就是這樣,不過背景音樂的添加搞得還不是太明白。
?
?
總結
以上是生活随笔為你收集整理的java坦克大战心得的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 证件照制作(一寸二寸照片制作)微信小程序
- 下一篇: WIN2008R2激活工具