您好,登錄后才能下訂單哦!
項(xiàng)目需求:
完成FlappyBird游戲。
1.?功能說(shuō)明:
游戲開(kāi)始后,間歇性的點(diǎn)擊鼠標(biāo),讓小鳥(niǎo)向上飛,不會(huì)掉下來(lái),并且要穿過(guò)柱子的空隙,不能碰到柱子,碰到就dead了,穿過(guò)一個(gè)柱子的一分
2.?界面需求:
開(kāi)始界面:
點(diǎn)擊鼠標(biāo)后開(kāi)始游戲,游戲時(shí)界面:
游戲結(jié)束時(shí)界面:
?
3.?性能規(guī)定:
游戲要求每點(diǎn)擊一下鼠標(biāo),必須實(shí)時(shí)響應(yīng)為小鳥(niǎo)向上飛指定的高度,并且小鳥(niǎo)一直有下降的速度,并且柱子也要一直循環(huán)的出現(xiàn),最后使得小鳥(niǎo)能夠靈活連貫的的穿梭于柱子之間。
4.?開(kāi)發(fā)步驟:
項(xiàng)目包含主程序類Game.java,自定義面板類BirdGame.java,小鳥(niǎo)類:Bird.java,柱子類Column.java,地面類:Ground.java,
(1).創(chuàng)建柱子類Column.java
包含屬性:
圖片BufferedImage,坐標(biāo)x,y,圖片寬度和高度width,height
柱子個(gè)數(shù)count(最多初始化兩根柱子對(duì)象)。
構(gòu)造方法Column():
柱子移動(dòng)方法move():
(2).創(chuàng)建Ground.java類
構(gòu)造方法加載圖片,初始化坐標(biāo)(0,500),創(chuàng)建move方法
(3).創(chuàng)建Bird.java類
構(gòu)造方法加載圖片,初始化坐標(biāo)(190,220),創(chuàng)建up和down方法
創(chuàng)建加分addScore(Column c)方法,原理當(dāng)bird的橫坐標(biāo)等于柱子的橫坐標(biāo)加柱子的寬度時(shí)即加一分。
創(chuàng)建地面碰撞方法hitGround方法,原理提示,bird縱坐標(biāo)和ground縱坐標(biāo)比較。
?
創(chuàng)建柱子碰撞檢測(cè)hitColumn方法
(4).創(chuàng)建BirdGame.java面板類,繼承JPanel
state變量表示游戲狀態(tài),0表示開(kāi)始狀態(tài),1表示游戲中狀態(tài),2表示游戲結(jié)束狀態(tài)。
構(gòu)造方法加載bg.png,start.png,gameover.png,初始化state=0,初始化ground,bird,column1和column2對(duì)象。
重寫(xiě)paint方法public?void paint(Graphics g)
利用g.drawImage方法繪制界面
顯示分?jǐn)?shù)
定義內(nèi)部類MyMouseAdapter?繼承MouseAdapter
重寫(xiě)mousePressed方法public?void?mousePressed(MouseEvent e)
根據(jù)當(dāng)前游戲狀態(tài),更改鼠標(biāo)點(diǎn)擊后狀態(tài)及對(duì)應(yīng)對(duì)象坐標(biāo)。
創(chuàng)建action方法,添加鼠標(biāo)監(jiān)聽(tīng)事件
無(wú)限循環(huán)(while(true))根據(jù)不同游戲狀態(tài)調(diào)用bird,ground,column對(duì)象中的方法(利用switch?case),然后利用線程延遲實(shí)現(xiàn)重復(fù)繪制
(5).創(chuàng)建Game.java作為運(yùn)行主類,原理:
Main方法中創(chuàng)建JFrame對(duì)象,將BirdGame面板實(shí)例化后添加進(jìn)JFrame對(duì)象中,最后調(diào)用BirdGame對(duì)象的action方法。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。