軟件設(shè)計(jì)畢業(yè)設(shè)計(jì)論文-JAVA游戲開(kāi)發(fā)設(shè)計(jì)與實(shí)現(xiàn)-全民打飛機(jī)_第1頁(yè)
軟件設(shè)計(jì)畢業(yè)設(shè)計(jì)論文-JAVA游戲開(kāi)發(fā)設(shè)計(jì)與實(shí)現(xiàn)-全民打飛機(jī)_第2頁(yè)
軟件設(shè)計(jì)畢業(yè)設(shè)計(jì)論文-JAVA游戲開(kāi)發(fā)設(shè)計(jì)與實(shí)現(xiàn)-全民打飛機(jī)_第3頁(yè)
軟件設(shè)計(jì)畢業(yè)設(shè)計(jì)論文-JAVA游戲開(kāi)發(fā)設(shè)計(jì)與實(shí)現(xiàn)-全民打飛機(jī)_第4頁(yè)
軟件設(shè)計(jì)畢業(yè)設(shè)計(jì)論文-JAVA游戲開(kāi)發(fā)設(shè)計(jì)與實(shí)現(xiàn)-全民打飛機(jī)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

常州工學(xué)院學(xué)士學(xué)位設(shè)計(jì)一、設(shè)計(jì)任務(wù)1.設(shè)計(jì)背景隨著游戲的日益普及、Java功能在移動(dòng)設(shè)備上的實(shí)現(xiàn),Java應(yīng)用程序產(chǎn)生的增值服務(wù)逐漸體現(xiàn)出其影響力,對(duì)人們豐富多彩的生活內(nèi)容、提供快捷方便的資訊起著至關(guān)重要的作用。隨著信息技術(shù)的快速發(fā)展,Java語(yǔ)言的跨平臺(tái)的優(yōu)勢(shì),毫無(wú)疑問(wèn)在手機(jī)上體現(xiàn)的淋漓盡致,而JavaMe是基于Java技術(shù)的,JavaMe擴(kuò)展了Java的優(yōu)勢(shì)。在當(dāng)今操作系統(tǒng)眾多的嵌入式領(lǐng)域中,Java給了我們一個(gè)跨平臺(tái)的好機(jī)會(huì),利用Java,我們可以很好的實(shí)現(xiàn)跨平臺(tái)。隨著JDK的推出和不斷發(fā)展,Java語(yǔ)言設(shè)計(jì)的游戲速度已經(jīng)得到大大地改善。所以今后基于Java的游戲?qū)⑹且环N趨勢(shì)?;贘2ME的Java游戲全民打飛機(jī)的設(shè)計(jì)與實(shí)現(xiàn),通過(guò)SunJava(TM)WirelessToolkit2.5.2forCLDC和Eclipse3.2等開(kāi)發(fā)工具,利用Java語(yǔ)言,開(kāi)發(fā)出一款操作簡(jiǎn)單,容易上手的飛機(jī)射擊類多模式的游戲。2.作品簡(jiǎn)介本課題對(duì)Java游戲全民打飛機(jī)進(jìn)行了設(shè)計(jì)與實(shí)現(xiàn)。為了讓該游戲具有平臺(tái)無(wú)關(guān)的特性,系統(tǒng)選用了Java作為開(kāi)發(fā)語(yǔ)言。一個(gè)完整的Java游戲除了要有令人賞心悅目的游戲界面和炫酷的游戲素材,還要有嚴(yán)謹(jǐn)?shù)倪壿嬕?guī)劃,保證玩家在體驗(yàn)游戲時(shí)在每一個(gè)小的環(huán)節(jié)上都能感受到我們項(xiàng)目的用心良苦。以期能夠通過(guò)使用Java技術(shù)實(shí)現(xiàn)一個(gè)飛行設(shè)計(jì)游戲。3.設(shè)計(jì)思路全民打飛機(jī)是款非常經(jīng)典的JAVA游戲,游戲規(guī)則非常淺顯易懂。玩家進(jìn)入游戲之后,界面會(huì)顯示開(kāi)始游戲、排行榜、退出選項(xiàng),進(jìn)入游戲后玩家飛機(jī)發(fā)射子彈擊打敵機(jī),每擊打掉一架敵機(jī)后,玩家就獲得相應(yīng)的分?jǐn)?shù),累計(jì)得分,在最后時(shí)顯示成績(jī),當(dāng)累計(jì)到一定分?jǐn)?shù)后會(huì)出現(xiàn)小BOSS,打死小BOSS后會(huì)出現(xiàn)最終的BOSS。綜上,此游戲制作流程相對(duì)比較清晰。根據(jù)此游戲設(shè)計(jì)的基本構(gòu)想,主要涉及到的對(duì)象可能如下:(1)玩家飛機(jī):進(jìn)入游戲玩家通過(guò)鼠標(biāo)和鼠標(biāo)左右鍵控制其移動(dòng)和發(fā)射子彈。(2)敵機(jī)(包括普通小敵機(jī)和大BOSS):此游戲中總共有;兩種小敵機(jī),兩種大BOSS,敵機(jī)隨機(jī)生成。(3)子彈包:當(dāng)玩家的飛機(jī)碰撞到子彈包時(shí),可以變換成不同的子彈,此游戲中玩家共有2種子彈可變換。(4)血量包:當(dāng)玩家碰撞到此包時(shí),玩家此條命的血量增加五格。每被敵機(jī)擊中一次,血量減少二格。(5)生命值包:當(dāng)玩家碰撞到此包時(shí),玩家生命值加5。每條命有10滴血。以上對(duì)象中,除玩家的飛機(jī)是固定生成在界面上,其他對(duì)象都是隨機(jī)生成的。當(dāng)玩家進(jìn)入該游戲應(yīng)用時(shí),首先出現(xiàn)的是界面中四種選項(xiàng),開(kāi)始游戲、排行榜、幫助和退出。當(dāng)選擇開(kāi)始游戲時(shí),玩家進(jìn)入游戲。游戲界面流程圖1.游戲界面游戲界面退出幫助排行榜開(kāi)始游戲退出幫助排行榜開(kāi)始游戲排行榜界面是否繼續(xù)得分恭喜過(guò)關(guān)排行榜界面是否繼續(xù)得分恭喜過(guò)關(guān)游戲運(yùn)行流程圖1.4.設(shè)計(jì)要求偽界面模塊模塊功能:開(kāi)始游戲、排行榜、幫助、退出運(yùn)行游戲界面模塊功能:運(yùn)行游戲使玩家體驗(yàn)該游戲排行榜界面模塊功能:顯示玩家在該游戲所得的分?jǐn)?shù)與相應(yīng)的排名5.開(kāi)發(fā)工具與環(huán)境操作系統(tǒng):Windows8程序語(yǔ)言:Java2IDE:Eclipse3.01二、設(shè)計(jì)說(shuō)明1.游戲規(guī)則設(shè)計(jì)(1)基本規(guī)則。當(dāng)游戲開(kāi)始時(shí),玩家通過(guò)鼠標(biāo)控制飛機(jī)的移動(dòng),鼠標(biāo)的左右鍵控制子彈的發(fā)射。玩家只有把積分累計(jì)到1000才能撿到小BOSS,擊落小BOSS才能夠遇見(jiàn)最終的大BOSS,此大BOSS有一定的血量,要被擊中一定次數(shù)之后才會(huì)消除。(2)飛機(jī)的生成。飛機(jī)的產(chǎn)生方式是隨機(jī)的,并且是間斷的產(chǎn)生不同類型的小敵機(jī),最終產(chǎn)生大BOSS。闖關(guān)中通過(guò)計(jì)數(shù)控制小敵機(jī)產(chǎn)生的數(shù)量。(3)包的生成:原理同飛機(jī)的生成。(4)我方飛機(jī)(敵機(jī))子彈的產(chǎn)生:我方飛機(jī)子彈的產(chǎn)生,通過(guò)監(jiān)聽(tīng)確定鍵來(lái)生成。當(dāng)玩家按了鼠標(biāo)左鍵,則產(chǎn)生相應(yīng)的子彈。產(chǎn)生子彈的位置和我方飛機(jī)當(dāng)前位置有關(guān)。(5)我方飛機(jī)的移動(dòng):我方飛機(jī)的移動(dòng)通過(guò)監(jiān)聽(tīng)鼠標(biāo)鍵來(lái)控制其移動(dòng)。(6)敵機(jī)、包及子彈的移動(dòng):敵機(jī)、包子彈在產(chǎn)生之后,以一定速度按照同一個(gè)方向移動(dòng)。(7)飛機(jī)等的消除:飛機(jī)等被擊中的方式為直接移除,之后添加上爆炸的圖片。(8)勝負(fù)判斷:當(dāng)將所有小敵機(jī)及大BOSS擊敗后為勝利通關(guān)。2.素材準(zhǔn)備及界面設(shè)計(jì)在全民打飛機(jī)游戲中,使用了大量的圖片素材。根據(jù)各個(gè)圖片的功能,圖片的種類豐富多彩。以下將對(duì)其進(jìn)行簡(jiǎn)單的介紹。(1)游戲中菜單使用到的圖片,主要有主菜單,幫助菜單,界面選擇,飛機(jī)選擇圖片,此些界面中都使用到了各種背景圖片。如圖2。圖2游戲背景(2)在游戲中涉及到的對(duì)象頗多,主要有我方飛機(jī),敵機(jī)(小敵機(jī)和大BOSS)各種包及各種子彈。我方飛機(jī):由于在此游戲中,游戲進(jìn)行時(shí)。為了使得視覺(jué)上有更好的效果,我們?cè)O(shè)計(jì)了飛機(jī)陰影,飛機(jī)的噴射,如圖3。敵機(jī):為了增加游戲的趣味性和層次感,設(shè)置的小敵機(jī)的種類和數(shù)量是不同的。但總共備有了2種小敵機(jī)。準(zhǔn)備兩種大BOSS,如圖4和5。圖4各種小敵機(jī)圖5兩種大BOSS圖6子彈元素圖7各種包和道具友軍援軍飛機(jī)(3)在此游戲中,不同的飛機(jī)有不同的子彈。而且,我方敵機(jī)可以通過(guò)撞擊子彈包來(lái)改變子彈種類。子彈有不同的元素構(gòu)成,通過(guò)將不同元素排列組合形成不同種類的子彈。在此游戲中,子彈元素總共涉及到5種,子彈包有2種,生命值包1種,血量包1種,如圖6和7。(4)在此游戲中,飛機(jī)經(jīng)常發(fā)生碰撞,飛機(jī)經(jīng)常被擊毀,所以爆炸圖片經(jīng)常被使用到。因?yàn)楸ㄊ且粋€(gè)動(dòng)態(tài)過(guò)程,所以設(shè)計(jì)了6*6幀的爆炸圖片,利用此圖片可以制作成爆炸的動(dòng)態(tài)圖,如圖8。圖8爆炸圖片接下來(lái)將對(duì)游戲的界面進(jìn)行設(shè)計(jì)準(zhǔn)備。游戲的界面分為控制區(qū)和操作區(qū),控制區(qū)是整個(gè)游戲的控制按鈕的集中區(qū)域,操作區(qū)是游戲者進(jìn)行游戲的場(chǎng)所。為了游戲界面的美觀和一致,大多數(shù)界面都采用相同的背景,字體顏色風(fēng)格相似等。游戲界面如圖9所示。圖9游戲界面3.程序工程結(jié)構(gòu)與用途:包名稱說(shuō)明com.Entity實(shí)體類com.Factory制作所有飛機(jī)類com.Listener鍵盤(pán)監(jiān)聽(tīng)com.UI測(cè)試類與畫(huà)板的內(nèi)容com.Utils通用工具Image儲(chǔ)存素材圖片與聲音需求實(shí)現(xiàn)(1)游戲音效在此游戲運(yùn)行時(shí),通過(guò)Soundutils.palymusic調(diào)用以錄入的音效出現(xiàn)第一種聲音,并且通過(guò)Soundutils.palymusic設(shè)置了鼠標(biāo)經(jīng)過(guò)按鈕時(shí)的音效,當(dāng)點(diǎn)擊開(kāi)始按鈕時(shí),會(huì)出現(xiàn)第二種音效,用newThread3().start();調(diào)用就有玩家飛機(jī)子彈發(fā)射和敵機(jī)子彈發(fā)射聲音,當(dāng)我方飛機(jī)或者是敵機(jī)爆炸時(shí)會(huì)發(fā)出“pong”的聲音,當(dāng)游戲進(jìn)入BOSS時(shí)會(huì)運(yùn)行第二個(gè)界面的音效。然而我們?cè)谟螒蚩焓r(shí)我們能按下“O”鍵出現(xiàn)友軍支援軍我也在此地方設(shè)置了聲音,還設(shè)置了飛機(jī)撿道具時(shí)的聲效。(2)素材收集(3)友方援軍的實(shí)現(xiàn)在此設(shè)計(jì)了友軍支援軍,用Key_Listener類實(shí)現(xiàn)鍵盤(pán)監(jiān)聽(tīng),當(dāng)玩家按下“O”鍵時(shí)會(huì)調(diào)用在畫(huà)板中畫(huà)出來(lái)的援軍集合,然后通過(guò)FriendPlaneMove()方法實(shí)現(xiàn)援軍的支援與移動(dòng),并且使用Soundutils.palymusic調(diào)用聲音。For(inti;i<Fy.size();i++)For(inti;i<Fy.size();i++)循環(huán)畫(huà)援軍循環(huán)畫(huà)援軍if(Fy.get(i)!=nullif(Fy.get(i)!=nullY畫(huà)出一個(gè)援軍畫(huà)出一個(gè)援軍死循環(huán)5.該游戲的特點(diǎn)全民打飛機(jī)是一款非常經(jīng)典的游戲,這款游戲由軟件13322班第二組成員設(shè)計(jì)與制作,此游戲有豐富的內(nèi)容,炫酷的子彈與真實(shí)感十足的敵機(jī)與玩家飛機(jī),和動(dòng)感的音樂(lè)。這款游戲具有累計(jì)分?jǐn)?shù)與排行榜,我們可以通過(guò)游戲累計(jì)分?jǐn)?shù)而達(dá)到該游戲的第一名這樣使得玩家具有玩了還想玩的沖動(dòng),激起人類的求勝欲望。三、設(shè)計(jì)成果1.游戲偽界面的實(shí)現(xiàn)1.界面主要有背景圖片,添加在界面上得各種圖標(biāo)及各種文字組成。除此之外還包括功能鍵及界面標(biāo)題的繪制。不同界面的設(shè)計(jì)整體方法大致相同,主要在于圖片的排版。本游戲界面大小為:屏幕寬度:496像素,屏幕長(zhǎng)度:680像素。所以以下將以飛機(jī)選擇界面為例介紹游戲運(yùn)行界面的實(shí)現(xiàn)。繪制這些界面的偽代碼為://設(shè)置開(kāi)始游戲按鍵button1.setLabel("開(kāi)始"); button1.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ t9.stop(); t8.stop(); menu.dispose(); newMyFrame(); } });//設(shè)置排行榜按鍵 button1.addMouseListener(newMouseAdapter(){ publicvoidmouseEntered(MouseEvente){ newThread10().start(); } }); button2.setLabel("排行榜"); button2.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ newMarkFrame(); } }); button2.addMouseListener(newMouseAdapter(){ publicvoidmouseEntered(MouseEvente){ newThread10().start(); } });//設(shè)置幫助按鍵 button3.setLabel("幫助"); button3.addMouseListener(newMouseAdapter(){ publicvoidmouseEntered(MouseEvente){ newThread10().start(); } });//設(shè)置退出按鍵 button4.setLabel("退出"); button4.addMouseListener(newMouseAdapter(){ publicvoidmouseEntered(MouseEvente){ newThread10().start(); 2.游戲按鍵的實(shí)現(xiàn)在初始游戲時(shí),玩家進(jìn)入菜單后通過(guò)上下鍵選擇游戲的各種功能。當(dāng)進(jìn)入游戲后,玩家通過(guò)方向鍵和確定鍵控制我方飛機(jī)的移動(dòng)和子彈發(fā)射。在菜單選擇中,可以通過(guò)設(shè)置一個(gè)option變量來(lái)標(biāo)記玩家選擇的狀態(tài)。并通過(guò)此變量來(lái)轉(zhuǎn)換界面。在游戲開(kāi)始以后,玩家通過(guò)鼠標(biāo)控制飛機(jī)移動(dòng),當(dāng)玩家控制飛機(jī),通過(guò)KeyEvent類來(lái)監(jiān)聽(tīng)獲取當(dāng)前鍵盤(pán)的狀態(tài)//向下移動(dòng)publicvoidkeyPressed(KeyEvente){ if(e.getKeyCode()==KeyEvent.VK_S){ if(mp.getY()<FrameUtils.Height-130) mp.setY(mp.getY()+mp.getSpeed());//向上移動(dòng) }elseif(e.getKeyCode()==KeyEvent.VK_W){ if(mp.getY()>0) mp.setY(mp.getY()-mp.getSpeed());//向左移動(dòng) }elseif(e.getKeyCode()==KeyEvent.VK_A){ if(mp.getX()>0) mp.setX(mp.getX()-mp.getSpeed()); //向右移動(dòng) }elseif(e.getKeyCode()==KeyEvent.VK_D){ if(mp.getX()<FrameUtils.Width-110) mp.setX(mp.getX()+mp.getSpeed()); //召喚援軍 }elseif(e.getKeyCode()==KeyEvent.VK_O){ mp.setSos(true); }3.爆炸效果的實(shí)現(xiàn)碰撞后爆炸是一組動(dòng)態(tài)效果,在此游戲中共設(shè)置了9個(gè)幀,每次繪制的時(shí)候幀的值就加1,換成下一個(gè)爆炸圖片,通過(guò)bomb函數(shù)實(shí)現(xiàn)。每當(dāng)發(fā)生碰撞時(shí),有飛機(jī)被擊毀時(shí),就調(diào)用添加爆炸圖片的函數(shù),生成爆炸的效果。添加爆炸圖片的函數(shù)為(其中調(diào)用了Bomb創(chuàng)建了一個(gè)新對(duì)象,調(diào)用了構(gòu)造函數(shù),設(shè)置了圖片的位置):bombs.addElement(newBomb(enemy.getSprite().getX()+enemy.getSprite().getWidth()/2,enemy.getSprite().getY()+enemy.getSprite().getHeight()/2));Bomb構(gòu)造函數(shù):publicBomb(intx,inty){ //爆炸圖片大小為180*180,每排有六個(gè)爆炸的圖片,即六幀,共六排,每幀30*30 super("/bomb.png",30,30);//生成精靈對(duì)象sprite sprite.setPosition(x-10,y-10);//設(shè)置圖片位置 }循環(huán)調(diào)用下面函數(shù),使得圖片中的36個(gè)狀態(tài)的爆炸效果依次的呈現(xiàn),形成動(dòng)態(tài)的爆炸效果。publicbooleanbomb(){ sprite.nextFrame();//設(shè)置下一幀 bombCount++; //爆炸圖片中總共有9個(gè)不同狀態(tài)的爆炸小圖 returnbombCount>9;}4.排行榜的實(shí)現(xiàn)當(dāng)游戲玩家點(diǎn)擊游戲界面排行榜時(shí),會(huì)通過(guò)圖片的切換,進(jìn)行切換到排行榜界面,排行榜界面有排名、名字和分?jǐn)?shù)。實(shí)現(xiàn)代碼如下:jb1=newJButton("返回"); jb1.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ MarkFrame.this.setVisible(false); } }); jsp=newJScrollPane(jt1); jp1.add(jsp); jp2.add(jb1); column.add("排名"); column.add("姓名"); column.add("分?jǐn)?shù)"); try{ read(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } this.setTitle("排行榜"); this.add(jp1); this.add(jp2,BorderLayout.SOUTH); this.pack(); this.setLocationRelativeTo(null); this.setVisible(true); }5.友軍飛機(jī)子彈的產(chǎn)生該游戲所有的界面與素材都是用畫(huà)板畫(huà)出來(lái)的,子彈也不例外通過(guò)定義容器集合來(lái)儲(chǔ)存子彈;publicvoidProductMyBullet(){ if(bt.size()<PlaneUtils.ZD_Num&&MP.getState()==PlaneUtils.state_shoot){ bt.add(Fac.ProductBullet(MP,MP.getBao_kind(),0,0)); //加入發(fā)射子彈的聲音 newThread3().start(); }else{ for(inti=0;i<bt.size();i++){ if(bt.get(i)==null){ bt.set(i,Fac.getZd(MP,MP.getBao_kind(),0,0)); //加入發(fā)射子彈的聲音 newThread3().start(); break; }四、結(jié)束語(yǔ)在畢業(yè)設(shè)計(jì)中我學(xué)到了很多東西,以前一直以為自己學(xué)的很好,經(jīng)過(guò)這次實(shí)習(xí)也知道了自己還有很多東西要學(xué)習(xí),自己學(xué)的一點(diǎn)都不好。不過(guò)我相信在未來(lái)我會(huì)更加努力。經(jīng)過(guò)了細(xì)心的調(diào)試和排錯(cuò)解決了絕大部分的問(wèn)題,但是我的水平實(shí)在有限,但我相信,隨著時(shí)間的推移,個(gè)人水平的增長(zhǎng),我一定會(huì)重寫(xiě)這個(gè)程序,使其更加完善。五、致謝在這里首先我要感謝我的指導(dǎo)老師,她在畢業(yè)設(shè)計(jì)中指導(dǎo)我,推薦我閱讀很多資料、很多書(shū)籍。在這里非常感謝老師,謝謝你對(duì)我的指導(dǎo)。還要感謝我的2個(gè)同伴,在畢業(yè)設(shè)計(jì)中碰到許多問(wèn)題是你們幫我解決的,如果沒(méi)有你們2個(gè)我的畢業(yè)設(shè)計(jì)就完不成,非常感謝你們,你們教會(huì)我很多東西,謝謝你們了。六、參考文獻(xiàn)[1]袁海燕,王文濤等.Java實(shí)用程序設(shè)計(jì)100例[M].北京:人民郵電出版社,2005:5-6.[2]張亦輝,馮華,胡潔.Java面向?qū)ο蟪绦蛟O(shè)計(jì)[M].北京:人民郵電出版社,2008:28-32.[3]李振鵬,龔劍.J2ME手機(jī)游戲開(kāi)發(fā)技術(shù)詳解[M].北京:北京,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論