貪吃蛇課程設(shè)計(jì)_第1頁
貪吃蛇課程設(shè)計(jì)_第2頁
貪吃蛇課程設(shè)計(jì)_第3頁
貪吃蛇課程設(shè)計(jì)_第4頁
貪吃蛇課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基于Java的游戲“貪吃蛇”的設(shè)計(jì)和實(shí)現(xiàn)一系統(tǒng)描述1.1本設(shè)計(jì)的目的和意義貪吃蛇游戲一款非常經(jīng)典的手機(jī)游戲,因?yàn)樗容^簡單有趣,無論老少都比較適合。貪吃蛇的設(shè)計(jì)對每一個(gè)Java語言設(shè)計(jì)者進(jìn)行語言提高和進(jìn)階都是一個(gè)很好的鍛煉機(jī)會。貪吃蛇游戲的設(shè)計(jì)比較復(fù)雜,它涉及面廣、牽涉方面多,如果不好好考慮和設(shè)計(jì),將難以成功開發(fā)出這個(gè)游戲。在這個(gè)游戲的設(shè)計(jì)中,牽涉到圖形界面的顯示與更新、數(shù)據(jù)的收集與更新,并且在這個(gè)游戲的開發(fā)中,還要應(yīng)用類的繼承機(jī)制以及一些設(shè)計(jì)模式。因此,如何設(shè)計(jì)和開發(fā)好這個(gè)貪吃蛇游戲,對于提高Java開發(fā)水平和系統(tǒng)的設(shè)計(jì)能力有極大的幫助。在設(shè)計(jì)開發(fā)過程中,需要處理好各個(gè)類之間的繼承關(guān)系,還要處理各個(gè)類相應(yīng)的封裝,并且還要協(xié)調(diào)好各個(gè)模塊之間的邏輯依賴關(guān)系和數(shù)據(jù)通信關(guān)系。正是因?yàn)槿绱?,本次畢業(yè)設(shè)計(jì)的目的在于學(xué)習(xí)Java程序設(shè)計(jì)基本技術(shù),學(xué)習(xí)用JBuilder開發(fā)Java程序的相關(guān)技術(shù),熟悉游戲“貪吃蛇”的需求,熟悉項(xiàng)目開發(fā)的完整過程。學(xué)會怎樣進(jìn)行一個(gè)項(xiàng)目的需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)等軟件開發(fā)過程,熟練地掌握J(rèn)ava程序設(shè)計(jì)的基本技術(shù)和方法,熟練地掌握J(rèn)Builder環(huán)境的使用方法,培養(yǎng)起初步的項(xiàng)目分析能力和程序設(shè)計(jì)能力。1.2設(shè)計(jì)的主要內(nèi)容貪吃蛇游戲設(shè)計(jì)與實(shí)現(xiàn),主要分為以下二個(gè)模塊:游戲主界面模塊游戲控制模塊。在此只實(shí)現(xiàn)游戲的游戲主界面模塊、游戲控制模塊。并且只是實(shí)現(xiàn)開始、暫停、退出等功能。1.3設(shè)計(jì)要達(dá)到的目標(biāo)游戲主界面模塊:游戲的主界面是進(jìn)入游戲后,能夠給玩家第一感官的部分,主要包括游戲圖形區(qū)域界面、游戲的速度選擇更新界面、游戲分?jǐn)?shù)的顯示更新界面、新生方塊的預(yù)覽、游戲開始按鈕、暫停游戲按鈕、退出游戲按鈕以及游戲排行榜按鈕。從很大程度上決定了玩家對游戲的興趣問題,因此,游戲的主界面應(yīng)該力求美觀,爽心悅目。游戲控制模塊:這個(gè)模塊是游戲的中心環(huán)節(jié),主要完成控制游戲的開始、暫停、退出等功能。為了能夠給玩家一個(gè)很好的游戲環(huán)境,這部分應(yīng)該做到易懂、易操作。二分析與設(shè)計(jì)本次游戲設(shè)計(jì)的處理流程如圖1所示。單擊單擊“開始游戲”按鈕,游戲開始,蛇開始隨機(jī)。鍵盤操作:向上左移右移向下沒有吃到食物且蛇碰到邊界單擊“退出游戲”退出游戲游戲中途欲中斷,稍后繼續(xù)游戲單擊“暫停游戲”游戲暫停再次單擊開始游戲,游戲恢復(fù)圖1游戲處理流程圖進(jìn)入游戲畫面2.2需求分析2.2.1用戶的特點(diǎn)游戲開發(fā)成功后,最終用戶為各個(gè)年齡段的人群,用戶范圍相當(dāng)廣泛。本游戲友好的用戶界面,簡單易學(xué)的按鈕操作以及簡單通俗的游戲規(guī)則,使廣大的用戶不需要專門進(jìn)行培訓(xùn),就可以立即學(xué)會如何使用。2.2.2功能需求2.2.2.1游戲主界面模塊需求游戲界面主框架主要包括游戲圖形區(qū)域界面、游戲開始按鈕、游戲暫停按鈕、關(guān)閉按鈕。2.2.2.2游戲圖形區(qū)域界面的需求游戲畫布區(qū)主要應(yīng)該包括游戲畫布中貪吃蛇隨機(jī)出現(xiàn)的位置,貪吃蛇重新出現(xiàn)的位置,事物隨機(jī)出現(xiàn)的位置。2.2.3屬性需求在可使用性方面,要求各個(gè)功能實(shí)現(xiàn)簡單,操作方便,系統(tǒng)處理正確;整個(gè)系統(tǒng)恢復(fù)性能好,連接速度快,以確保系統(tǒng)可使用性好。另外,還要求系統(tǒng)的可擴(kuò)展性、可維護(hù)性、可移植性良好。2.3功能模塊設(shè)計(jì)軟件開發(fā)過程中的功能模塊設(shè)計(jì),主要解決實(shí)現(xiàn)該游戲需求的程序模塊設(shè)計(jì)問題。包括如何把該游戲劃分成若干個(gè)模塊、決定各個(gè)模塊之間的接口、模塊之間傳遞的信息,以及模塊結(jié)構(gòu)的設(shè)計(jì)等。2.3.1游戲功能本系統(tǒng)主要完成以下幾方面的功能:游戲控制功能——包括游戲的開始、暫停、退出界面布局其他輔助功能2.3.2總設(shè)計(jì)模塊的劃分根據(jù)游戲需求中游戲所要實(shí)現(xiàn)的功能,整個(gè)游戲分為二個(gè)模塊進(jìn)行具體的設(shè)計(jì),如圖2所示。貪吃蛇游戲游戲主界面模塊游戲控制模塊圖2游戲總設(shè)計(jì)模塊2.3.3貪吃蛇游戲游戲主界面模塊游戲控制模塊圖2游戲總設(shè)計(jì)模塊游戲界面主框架主要包括游戲圖形區(qū)域界面、游戲的開始按鈕、暫停按鈕、游戲的退出按鈕。游戲的主界面框架游戲圖形區(qū)域界面(即游戲畫布)游戲的主界面框架游戲圖形區(qū)域界面(即游戲畫布)游戲控制按鈕界面圖3游戲主界面框架游戲控制模塊主要通過主界面上的按鈕來控制游戲的開始、游戲的暫停、游戲的退出這三個(gè)功能以及控制游戲分?jǐn)?shù)變化。在這個(gè)模塊中,需要給各個(gè)按鈕或文本框加入代碼,來對上述的功能加以進(jìn)一步的實(shí)現(xiàn)。游戲控制模塊的主要框架如圖4所示。游戲控制模塊游戲控制模塊游戲的開始功能游戲的暫停功能游戲的退出功能圖4游戲控制模塊框架四心得體會通過這次課程設(shè)計(jì),我對上學(xué)期所學(xué)的JAVA語言程序設(shè)計(jì)有一個(gè)更深刻的了解,將所學(xué)的知識應(yīng)用于實(shí)踐,由于所學(xué)知識有限,為了使游戲能夠能夠?qū)崿F(xiàn)自己預(yù)先的構(gòu)想,我們這組通過上網(wǎng)找代碼和去圖書館借書找程序,比較畫好的流程圖及功能模塊,不斷閱讀修改代碼使程序達(dá)到預(yù)期所要實(shí)現(xiàn)的目標(biāo),完成課程設(shè)計(jì)后,可以感覺到自己對Java程序的又有了新的認(rèn)識。在這次課程設(shè)計(jì)中,我主要負(fù)責(zé)窗體和判斷蛇的運(yùn)動的設(shè)計(jì)和開發(fā),在SnakeApp類中先定義了窗體的長度和寬度,然后通過frame.show()顯示窗體,用注冊監(jiān)聽器到Window的接口,利用System.exit(0)語句來完成關(guān)閉窗口的設(shè)計(jì),在窗體大小的設(shè)計(jì)中,寬度和高度是采用宏定義的形式。在ArrayIndex和ArrayIndexReadOnly類的設(shè)計(jì)中,兩個(gè)類的設(shè)計(jì)基本相似,但是在本組成員其他類的調(diào)用中用法不一樣,先定義了X和y的坐標(biāo),定義構(gòu)造函數(shù),用getx()和gety()方法得到X和Y的坐標(biāo),用setX(intx)和setY(inty)方法設(shè)置X和Y的坐標(biāo),用布爾型判斷equalOrReV,equals,reverse方法,判斷蛇的各種運(yùn)行方向,以便在其他設(shè)計(jì)中能夠更好的判斷蛇是否出界,是否與隨機(jī)塊即食物出現(xiàn)時(shí)正在運(yùn)行的方向一致。在做Java設(shè)計(jì)之前也有做過其他的課程設(shè)計(jì),大多規(guī)模很小。在數(shù)據(jù)庫、各種應(yīng)用軟件和游戲中,我仍覺得對游戲的設(shè)計(jì)有極大的熱情。因?yàn)槠涓鱾€(gè)模塊間的聯(lián)系十分緊密,代碼重復(fù)執(zhí)行率高,當(dāng)經(jīng)過無數(shù)次的調(diào)試、修改后,能最終看到成品,有無比自豪的心情。大學(xué)期間做過圖書館管理程序等簡單的數(shù)據(jù)庫管理系統(tǒng)的課程設(shè)計(jì),思想大致相似,變化范圍有限,沒有太多自己可發(fā)揮的余地。大家作品的最終結(jié)果都離不開同一個(gè)模式。相比一些數(shù)據(jù)庫軟件,游戲的設(shè)計(jì)有很多人情色彩和藝術(shù)思想的發(fā)揮,正式商業(yè)的軟件的人性化界面和各個(gè)游戲間迥異的結(jié)構(gòu)每每會讓人有去開發(fā)的沖動。綜合運(yùn)用以前所學(xué)習(xí)的知識,設(shè)計(jì)一個(gè)JAVA手機(jī)游戲,并能實(shí)現(xiàn)以下的功能:游戲聲音的控制、游戲等級的控制、最高分的記錄、游戲暫停、游戲重新開始、游戲的結(jié)束??傊ㄟ^本次的課程設(shè)計(jì),使我平時(shí)學(xué)到的理論知識得到了很好地升華,理論與實(shí)際得到一次很好的結(jié)合,為我今后參加工作打下了堅(jiān)實(shí)的基礎(chǔ),使我受益匪淺。參考文獻(xiàn)[1]魏偉譯.JBuilder開發(fā)人員指南[M].北京:機(jī)械工業(yè)出版社,2001.1.[2]胡雷,葉曙光,徐飪.JBuilder9.0入門與提高[M].北京:機(jī)械工業(yè)出版社,2004.[3]田勇,孫新.Jbuilder開發(fā)人員指南[M].北京:機(jī)械工業(yè)出版社,2001.[4]李尊朝,蘇軍.Java語言程序設(shè)計(jì)(第二版)[M].北京:中國鐵道出版社,2009.[5]黃曉東.Java課程設(shè)計(jì)案例精編(第二版)[M].北京:中國水利水電出版社,2008.[6]陸光義,宋現(xiàn)鋒.Java游戲編程導(dǎo)學(xué)[M].北京:清華大學(xué)出版社.2004.附錄“貪吃蛇游戲”程序部分源代碼=1\*CHINESENUM3一、SnakeApp.javapackagecccc;importjavax.swing.*;importjava.util.*;importjava.awt.*;importjava.awt.event.*;classSnakeApp{ publicstaticvoidmain(String[]args)//主函數(shù){ SnakeFrameframe=newSnakeFrame(); frame.addWindowListener(newWindowAdapter()//注冊事件監(jiān)聽器{ publicvoidwindowClosing(WindowEvente)//關(guān)閉窗體{ System.exit(0); }}); frame.setSize(WIDTH,HEIGHT);//設(shè)置窗體大小 frame.setResizable(false); frame.setLocation(300,200); frame.setTitle("貪吃蛇v1.0");//設(shè)置窗體標(biāo)題為貪吃蛇v1.0 //顯示窗口 frame.show(); } privatestaticfinalintWIDTH=300;//寬度值為300 privatestaticfinalintHEIGHT=270;//高度值為270}=2\*CHINESENUM3二、ArrayIndex.javapackagecccc;publicclassArrayIndex{ privateintx;//定義x坐標(biāo) privateinty;//定義y坐標(biāo) ArrayIndex(intx,inty)//構(gòu)造函數(shù){ this.x=x; this.y=y; } intgetX()//得到x坐標(biāo){ returnx; } intgetY()//得到y(tǒng)坐標(biāo){ returny; } voidsetX(intx)//設(shè)置x坐標(biāo){ this.x=x; } voidsetY(inty)//設(shè)置y坐標(biāo){ this.y=y; } publicbooleanequalOrRev(ArrayIndexe)//運(yùn)動的方向相同或相反{ return((e.getX()==getX())&&(e.getY()==getY())) ||((e.getX()==getX())&&(e.getY()==-1*getY())) ||((e.getX()==-1*getX())&&(e.getY()==getY())); } publicbooleanequals(ArrayIndexe)//運(yùn)動方向相同{ return(e.getX()==getX())&&(e.getY()==getY()); } publicbooleanreverse(ArrayIndexe)//運(yùn)動方向相反{ return((e.getX()==getX())&&(e.getY()==-1*getY())) ||((e.getX()==-1*getX())&&(e.getY()==getY())); } }}=3\*CHINESENUM3三.ArrayIndexReadOnly.javapackagecccc;publicclassArrayIndexReadOnly{ privateintx;//定義x坐標(biāo) privateinty;//定義y坐標(biāo) ArrayIndexReadOnly(intx,inty)//構(gòu)造函數(shù){ this.x=x; this.y=y; } intgetX()//得到x坐標(biāo){ returnx; } intgetY()//得到y(tǒng)坐標(biāo){ returny; } publicbooleanequalOrRev(ArrayIndexReadOnlye)//運(yùn)動的方向相同或相反{ return((e.getX()==getX())&&(e.getY()==getY())) ||((e.getX()==getX())&&(e.getY()==-1*getY())) ||((e.getX()==-1*getX())&&(e.getY()==getY())); } p

溫馨提示

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

評論

0/150

提交評論