Java軟件項(xiàng)目實(shí)戰(zhàn)培訓(xùn)教程之游戲小編程

Java軟件項(xiàng)目實(shí)戰(zhàn)培訓(xùn)教程之游戲小編程

長(zhǎng)沙牛耳教育      2022-04-03 14:49:01     8

Java軟件項(xiàng)目實(shí)戰(zhàn)培訓(xùn)教程之游戲小編程,植物大戰(zhàn)僵尸這款游戲相信大家或多或少都玩過(guò),那么大家有沒(méi)有想過(guò)自己嘗試著做一下植物大戰(zhàn)僵尸的游戲設(shè)計(jì)呢。本文將基于Java語(yǔ)

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

植物大戰(zhàn)僵尸這款游戲相信大家或多或少都玩過(guò),那么大家有沒(méi)有想過(guò)自己嘗試著做一下植物大戰(zhàn)僵尸的游戲設(shè)計(jì)呢。本文將基于Java語(yǔ)言為大家展示如何開發(fā)出植物大戰(zhàn)僵尸游戲的簡(jiǎn)易版本,主要內(nèi)容包括規(guī)則、對(duì)象、功能和背景音樂(lè)的相關(guān)內(nèi)容設(shè)計(jì),如果大家對(duì)此有興趣的話,就接著看下去吧

一、游戲設(shè)計(jì)—規(guī)則

植物大戰(zhàn)僵尸中有一個(gè)小游戲關(guān)卡,屏幕的正上方有一個(gè)滾輪機(jī),會(huì)隨機(jī)生成植物,玩家可以選中植物后自由選擇草坪來(lái)進(jìn)行安放?;诖擞螒蚰J?,本文將該關(guān)卡抽取出來(lái),單獨(dú)做成了一個(gè)簡(jiǎn)易版的植物大戰(zhàn)僵尸。屏幕左側(cè)會(huì)自動(dòng)生成植物的卡牌,單擊選中后可以放置在草坪上。右側(cè)會(huì)自動(dòng)生成僵尸,不同的僵尸移動(dòng)速度不同,血量不同,還有的僵尸有隱藏獎(jiǎng)勵(lì),比如:全屏僵尸靜止、全屏僵尸死亡等。這里先說(shuō)一下游戲暫停的功能應(yīng)該怎么做。最簡(jiǎn)單的一種暫停方式是鼠標(biāo)移出屏幕,游戲暫停。所以這里需要引入一個(gè)鼠標(biāo)監(jiān)聽器事件。如下圖所示:

當(dāng)然,這只是一個(gè)簡(jiǎn)單的通過(guò)監(jiān)聽鼠標(biāo)的位置來(lái)改變游戲狀態(tài)方法。還可以使用鍵盤監(jiān)聽器,當(dāng)按下某個(gè)鍵時(shí)游戲暫停,這樣的用戶體驗(yàn)更好,但原理是一樣的。

2、游戲設(shè)計(jì)—對(duì)象

首先分析一下游戲中有哪些對(duì)象。各式各樣的植物,各式各樣的僵尸,各式各樣的子彈。那么這里就可以抽出三個(gè)父類,分別是植物、僵尸、子彈。在面向?qū)ο笾?,子類將繼承父類所有的屬性和方法。所以可以將三大類中,共有的屬性和方法抽到各自的父類中。比如僵尸父類,如圖所示:

植物父類、子彈父類就同理可得了。上面說(shuō)到子類共有的方法需要抽到父類中,那么部分子類共有的方法該如何處理呢?比如,豌豆射手、寒冰射手可以發(fā)射子彈,堅(jiān)果墻就沒(méi)有射擊的這個(gè)行為。所以這里就需要用到接口。如圖所示:

到此為止,游戲?qū)ο蟮膶傩浴⒎椒ɑ径级x完了,至于圖片的顯示以及如何將圖片畫出來(lái),只需要使用相應(yīng)的API即可,這里就不做描述了。

3、游戲設(shè)計(jì)—功能

現(xiàn)在我們有了游戲的對(duì)象,該開始讓對(duì)象加入到游戲中來(lái),接著讓他們動(dòng)起來(lái),最后還得讓他們打起來(lái)。首先,讓對(duì)象加入到游戲中來(lái)我是這么做的,這里還是以僵尸為例,如圖所示:

首先植物入場(chǎng)時(shí)是在滾輪機(jī)上的,滾輪機(jī)上的移動(dòng)就會(huì)涉及到追擊和停止的問(wèn)題。追擊的方式當(dāng)然是追前一個(gè)植物卡牌,但當(dāng)?shù)谝粋€(gè)植物卡牌被選中放置到草地上后,那該如何追擊呢?將植物集合分為滾輪機(jī)上的集合和戰(zhàn)場(chǎng)上的集合,如圖所示:

接下來(lái)該讓對(duì)象們都動(dòng)起來(lái)了。之前說(shuō)到在父類中的移動(dòng)方法是抽象方法,在各自的子類中都進(jìn)行重寫后,不同的對(duì)象移動(dòng)方式就是各式各樣的了。如圖:

看著代碼中對(duì)集合復(fù)雜的遍歷,不得不感概lambda表達(dá)式真是個(gè)好東西,如圖:

如何讓對(duì)象們打起來(lái)呢?下面以僵尸攻擊植物為例:

結(jié)合圖片來(lái)看,黑框P代表植物,黑框Z代表植物,虛線是指兩者接觸的極限距離,當(dāng)僵尸進(jìn)入虛線內(nèi),就保證可以攻擊到植物。至此,游戲的基本功能基本實(shí)現(xiàn)了。Java是一門面向?qū)ο蟮恼Z(yǔ)言,萬(wàn)物皆對(duì)象,特征皆屬性,行為皆方法。肉眼能看到的僵尸、植物、草坪都是對(duì)象,對(duì)象的特性比如血量、移動(dòng)速度都是屬性,對(duì)象的行為比如移動(dòng)、攻擊、死亡都是方法。

4、游戲設(shè)計(jì)—背景音樂(lè)

bgm是一個(gè)游戲的靈魂之一。這里給游戲添加背景音樂(lè),可以新建一條線程專門用來(lái)執(zhí)行音樂(lè)的解析和播放,如圖:

這里需要注意的是,Java中解析音樂(lè)的API只支持WAV格式的文件,文件格式的轉(zhuǎn)換大多數(shù)音樂(lè)播放器都可以做到。

以上就是長(zhǎng)沙牛耳教育java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java軟件項(xiàng)目實(shí)戰(zhàn)培訓(xùn)教程之游戲小編程”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過(guò)大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。