java小游戲簡(jiǎn)單邏輯實(shí)現(xiàn)

總結(jié)了幾個(gè)在寫(xiě)小游戲時(shí)會(huì)遇到的問(wèn)題,可能會(huì)對(duì)你有幫助

1.計(jì)時(shí)器的使用:

timer定義在外邊,利用timer類(lèi)的schedule方法,實(shí)現(xiàn)對(duì)任務(wù)的定時(shí)執(zhí)行

,這個(gè)方法有三個(gè)參數(shù),第一個(gè)是一個(gè)接口,寫(xiě)一個(gè)匿名內(nèi)部類(lèi),實(shí)現(xiàn)run方法,第二個(gè)參數(shù)就是第一張的delay,意思是延遲時(shí)間,第三個(gè)參數(shù)period是刷新頻率,所以這串代碼的意思就是在延遲0ms以后,每隔10ms執(zhí)行一次run方法內(nèi)的任務(wù),并且不會(huì)對(duì)主線(xiàn)程造成阻塞

2.對(duì)界面的刷新:

對(duì)界面的刷新因該交給repaint函數(shù),因?yàn)閞epaint函數(shù)會(huì)自動(dòng)調(diào)用paint函數(shù)實(shí)現(xiàn)對(duì)界面的刷新,所以正確的使用方法應(yīng)該是將要繪制的內(nèi)容寫(xiě)在paint方法中,在run方法中調(diào)用repaint函數(shù)實(shí)現(xiàn)對(duì)界面的定時(shí)刷新

3.物體的繪畫(huà)

我們?cè)谙蚪缑嫔咸砑游矬w時(shí),最好用drawImage方法將圖片直接貼在界面上,而不是使用繪畫(huà)函數(shù)一點(diǎn)一點(diǎn)的繪制出來(lái),這樣不僅麻煩,而且對(duì)程序的運(yùn)行和后面邏輯的實(shí)現(xiàn)都沒(méi)有好處,一定注意圖片需要時(shí)png格式

4.碰撞檢測(cè)機(jī)制的使用

Java中有一個(gè)類(lèi)叫Rectangle,我們可以調(diào)用其中的intersects方法判斷兩個(gè)矩形是否重疊,如果返回true,說(shuō)明兩個(gè)物體放生了碰撞。前面我們將物體的圖片貼在界面上,我們將物體返回一個(gè)矩形,然后用另一個(gè)物體調(diào)用intersects與這個(gè)矩形判斷即可實(shí)現(xiàn)對(duì)碰撞的檢測(cè)


5. 使用雙緩沖機(jī)制繪圖

正常情況下,我們?cè)诶L制圖片時(shí)都是將一個(gè)個(gè)圖片直接繪制在界面上,但是當(dāng)要繪制的內(nèi)容很多時(shí),繪制的流暢都往往會(huì)降低,所以正確的操作應(yīng)該是先將所有的圖片繪制到一張空白的圖片上,然后將這張繪制好的圖片繪制在面板上,代碼實(shí)現(xiàn)如下

screenImage的類(lèi)型就是Image,我們先將這個(gè)空?qǐng)D片創(chuàng)建出來(lái),然后獲取畫(huà)筆,即gImage,然后用gImage向這個(gè)空的圖片上繪制內(nèi)容,最后再用面板的畫(huà)筆,即g,向面板上繪制這張繪制有其他內(nèi)容的繪制好的圖片,這樣就是雙緩沖機(jī)制繪圖,能解決繪制內(nèi)容過(guò)多而卡頓的情況。

以上的幾個(gè)方法在寫(xiě)java小游戲的時(shí)候可能都會(huì)用到,希望對(duì)你有所幫助。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容