日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java坦克大战思路总结

發布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java坦克大战思路总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一步,設置游戲的窗體,

? ? ?創建一個窗體類,繼承Frame,(也可以不繼承使用JFrame),然后在該類的構造函數中,使用Frame中的方法,設置窗體的標題,大小,位置,可顯,可改變窗體大小,(注意:可以使用Toolkit方法獲取屏幕的高寬;setVisible方法的位置);然后添加事件監聽,在WindowListener中重寫,以實現窗口關閉,(還有一個代碼簡單的,不過忘了咋寫的了),然后創建一個類,做主線程,在main方法里將該窗體類實例化,然后就實現了一個游戲窗體。

第二步,將人物畫上去

先在窗體類中重寫paint方法,這個重寫的paint方法會自動調用,在重寫paint方法里,可以把人物畫出來,關于圖片的添加,在該項目里新建一個包用了存圖片,圖片的使用,我使用的是一個工具類,別人寫好的,我所知道的有一個方法把圖片對象化的,別的不太了解。

第三步,人物的移動

創建人物類,定義初始位置,和方向,速度,寫一個構造器,這樣就可以實例化的時候賦初始值了,寫一個畫筆的成員方法,在從窗體類中的重寫paint方法里傳過來畫筆,這樣這個成員方法也相當于重寫paint方法了,再寫移動方法,通過判斷方法來控制移動,然后在paint方法中調用,現在剩下的問題就是獲取方向了,在窗體類中添加按鍵監聽,通過監聽獲取四個布爾值,四個布爾值對應著四個方向,(四個方向可以用枚舉來表示),在寫一個成員方法將四個布爾值轉變為方向,在人物類中寫一個含參數的方法,用來獲取方向。

第四步,填加靜止狀態

在人物類中定義一個布爾值,然后在paint方法中判斷就行了

第五步,閃爍問題

解決方法大概有兩種

加一個雙緩沖或者加一個畫布

第六步,子彈發射,連發,消除

這個問題,要找到觸發的源頭,我像按空格發射子彈,那么源頭就是監聽空格,我在人物類中寫一個開火方法,在監聽中調用,而開火方法是用來獲取此時人物的位置信息的,這樣我們獲取了子彈的初始坐標和方向,創建一個子彈類,定義的信息和人物類差不多,創建一個子彈容器,在這里寫一個方法獲取子彈的初始的位置和方向,這樣就可以實現按一次空格,就會往子彈容器里添加一個子彈了,關于內存溢出,在子彈類中寫一個方法,通過判斷位置來去除這顆子彈,(容器中的子彈用getset方法來獲取),然后將該方法在paint方法中調用,這子彈的數量我并沒有限制。

第七步,怪物的產生和移動

這里我是開了一個線程,創建一個怪物類,new一個線程,寫在該類的構造方法里,這樣只要被實例化,線程就開啟了,怪物的位置,移動我是通過獲取四個隨機數來隨機生成的,怪物的數量多少和子彈相似,用容器的存儲,這時候就要明確怪物的數量了,其他的和人物類相似。

第八步,碰撞,死亡

碰撞我是在窗體類中的重寫paint方法中判斷的,判斷方法我所了解的有兩種,判斷兩個矩形是否相交和判斷兩圖片中心的距離是否超出,既然碰撞了,就會傷害,這時定義怪物和人物的血量和攻擊,發生碰撞時判斷其血量狀態,進行扣血,怪物死亡了就去除這個對象,增加游戲積分,人物死亡就游戲結束

第九步,死亡界面,開始界面添加

在窗體類中定義一個開始的布爾值,在窗體類中添加鼠標監聽,監聽中改變布爾值,在重寫paint方法類判斷,該畫那個圖片。在窗體類中定義死亡的布爾值,人物死亡的時候改變布爾值,這和開始界面相似

第十,暫停界面

這時候,就要說一下刷新了,在主線程里,使用repaint方法,才會讓窗體不斷的刷新,畫面才會動起來,暫停就可以提供一個布爾值來判斷是否使用repaint方法。

大概就這些吧,很多都是思路,算是一個小總結,如有不足之處,請指正。

總結

以上是生活随笔為你收集整理的java坦克大战思路总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。