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

下載本文檔

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

文檔簡(jiǎn)介

目錄TOC\o"1-4"\h\z一系統(tǒng)描述 11.1本設(shè)計(jì)的目的和意義 11.2設(shè)計(jì)的主要內(nèi)容 11.3設(shè)計(jì)要達(dá)到的目標(biāo) 21.4設(shè)計(jì)需要實(shí)現(xiàn)的功能和目標(biāo) 21.5游戲設(shè)計(jì)環(huán)境 2二分析與設(shè)計(jì) 32.1游戲處理流程 32.2需求分析 42.3功能模塊設(shè)計(jì) 42.4詳細(xì)設(shè)計(jì) 8三系統(tǒng)測(cè)試 19四心得體會(huì) 21五參考文獻(xiàn) 22六附錄 24第23頁(yè)基于Java的游戲“貪吃蛇”的設(shè)計(jì)和實(shí)現(xiàn)內(nèi)容提要:“貪吃蛇”游戲是一個(gè)經(jīng)典的游戲,它因操作簡(jiǎn)單、娛樂性強(qiáng)而廣受歡迎。本文基于Java技術(shù)和JBuilder開發(fā)環(huán)境,開發(fā)了一個(gè)操作簡(jiǎn)單、界面美觀、功能較齊全的“貪吃蛇”游戲。整個(gè)游戲程序分為二個(gè)功能模塊,六個(gè)類模塊,實(shí)現(xiàn)了游戲的開始、暫停、結(jié)束。通過本游戲的開發(fā),達(dá)到學(xué)習(xí)Java技術(shù)和熟悉軟件開發(fā)流程的目的。一系統(tǒng)描述1.1本設(shè)計(jì)的目的和意義貪吃蛇游戲一款非常經(jīng)典的手機(jī)游戲,因?yàn)樗容^簡(jiǎn)單有趣,無(wú)論老少都比較適合。貪吃蛇的設(shè)計(jì)對(duì)每一個(gè)Java語(yǔ)言設(shè)計(jì)者進(jìn)行語(yǔ)言提高和進(jìn)階都是一個(gè)很好的鍛煉機(jī)會(huì)。貪吃蛇游戲的設(shè)計(jì)比較復(fù)雜,它涉及面廣、牽涉方面多,如果不好好考慮和設(shè)計(jì),將難以成功開發(fā)出這個(gè)游戲。在這個(gè)游戲的設(shè)計(jì)中,牽涉到圖形界面的顯示與更新、數(shù)據(jù)的收集與更新,并且在這個(gè)游戲的開發(fā)中,還要應(yīng)用類的繼承機(jī)制以及一些設(shè)計(jì)模式。因此,如何設(shè)計(jì)和開發(fā)好這個(gè)貪吃蛇游戲,對(duì)于提高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)槿绱耍敬萎厴I(yè)設(shè)計(jì)的目的在于學(xué)習(xí)Java程序設(shè)計(jì)基本技術(shù),學(xué)習(xí)用JBuilder開發(fā)Java程序的相關(guān)技術(shù),熟悉游戲“貪吃蛇”的需求,熟悉項(xiàng)目開發(fā)的完整過程。學(xué)會(huì)怎樣進(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)本次設(shè)計(jì)要達(dá)到的目標(biāo)分別從以下模塊進(jìn)行闡述:游戲主界面模塊:游戲的主界面是進(jìn)入游戲后,能夠給玩家第一感官的部分,主要包括游戲圖形區(qū)域界面、游戲的速度選擇更新界面、游戲分?jǐn)?shù)的顯示更新界面、新生方塊的預(yù)覽、游戲開始按鈕、暫停游戲按鈕、退出游戲按鈕以及游戲排行榜按鈕。從很大程度上決定了玩家對(duì)游戲的興趣問題,因此,游戲的主界面應(yīng)該力求美觀,爽心悅目。游戲控制模塊:這個(gè)模塊是游戲的中心環(huán)節(jié),主要完成控制游戲的開始、暫停、退出等功能。為了能夠給玩家一個(gè)很好的游戲環(huán)境,這部分應(yīng)該做到易懂、易操作。設(shè)計(jì)實(shí)現(xiàn)功能和目標(biāo)本設(shè)計(jì)所開發(fā)的是基于Java的一個(gè)貪吃蛇游戲軟件,主要實(shí)現(xiàn)游戲的開始、暫停、退出、等功能,分為:游戲主界面模塊、游戲控制模塊以二個(gè)模塊。性能:本軟件在設(shè)計(jì)方面本著方便、實(shí)用及娛樂性高的宗旨,在對(duì)界面進(jìn)行設(shè)計(jì)的過程中,始終堅(jiān)持清晰明了,在性能方面能夠?qū)崿F(xiàn)效率高,不易出錯(cuò)等優(yōu)點(diǎn)。游戲主界面模塊:主要包括游戲圖形區(qū)域界面、游戲開始按鈕、暫停游戲按鈕、關(guān)閉按鈕。游戲的主界面應(yīng)該力求美觀,爽心悅目。游戲控制模塊:主要完成控制游戲的開始、暫停、退出等功能,這部分應(yīng)該做到易懂、易操作而且準(zhǔn)確率高,不易出錯(cuò)。1.5游戲設(shè)計(jì)環(huán)境本次課程設(shè)計(jì)所涉及和實(shí)現(xiàn)的是用Java編程語(yǔ)言和JBuilder開發(fā)工具開發(fā)的貪吃蛇游戲。本次設(shè)計(jì)的系統(tǒng)環(huán)境及工具如下:運(yùn)行環(huán)境:windowsxp編程語(yǔ)言:Java使用工具:JBuilder2005二分析與設(shè)計(jì)2.1游戲處理流程本次游戲設(shè)計(jì)的處理流程如圖1所示。單擊“單擊“開始游戲”按鈕,游戲開始,蛇開始隨機(jī)。鍵盤操作:向上左移右移向下沒有吃到食物且蛇碰到邊界單擊“退出游戲”退出游戲游戲中途欲中斷,稍后繼續(xù)游戲單擊“暫停游戲”游戲暫停進(jìn)入游戲畫面再次單擊開始游戲,游戲恢復(fù)圖1游戲處理流程圖2.2需求分析2.2.1用戶的特點(diǎn)游戲開發(fā)成功后,最終用戶為各個(gè)年齡段的人群,用戶范圍相當(dāng)廣泛。本游戲友好的用戶界面,簡(jiǎn)單易學(xué)的按鈕操作以及簡(jiǎn)單通俗的游戲規(guī)則,使廣大的用戶不需要專門進(jìn)行培訓(xùn),就可以立即學(xué)會(huì)如何使用。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)簡(jiǎ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游戲主界面模塊游戲界面主框架主要包括游戲圖形區(qū)域界面、游戲的開始按鈕、暫停按鈕、游戲的退出按鈕。游戲界面主框架的主要結(jié)構(gòu)圖如圖3所示。游戲的主界面框架游戲的主界面框架游戲圖形區(qū)域界面(即游戲畫布)游戲控制按鈕界面圖3游戲主界面框架2.3.4游戲控制模塊游戲控制模塊主要通過主界面上的按鈕來(lái)控制游戲的開始、游戲的暫停、游戲的退出這三個(gè)功能以及控制游戲分?jǐn)?shù)變化。在這個(gè)模塊中,需要給各個(gè)按鈕或文本框加入代碼,來(lái)對(duì)上述的功能加以進(jìn)一步的實(shí)現(xiàn)。游戲控制模塊的主要框架如圖4所示。游戲控制模塊游戲控制模塊游戲的開始功能游戲的暫停功能游戲的退出功能圖4游戲控制模塊框架游戲開始控制:?jiǎn)螕簟坝螒蜷_始”按鈕,游戲畫布即有移動(dòng)的貪吃蛇出現(xiàn),游戲正式開始。游戲暫??刂疲?jiǎn)螕簟皶和S螒颉卑粹o,游戲暫停;再單擊,游戲繼續(xù)。游戲退出控制:?jiǎn)螕簟巴顺鲇螒颉卑粹o,退出該游戲。2.3.5類模塊設(shè)計(jì)2.3.5.1類模塊之間關(guān)系通過對(duì)功能要求的分析,將貪吃蛇游戲功能劃分為6個(gè)類模塊,他們的關(guān)系如圖5所示。SnakeAppSnakeApp(主類))(主類)SnakeFrame(用戶界面類)SnakePanel(游戲界面及內(nèi)容)ArrayIndex(游戲方向)圖5貪吃蛇類之間的關(guān)系SnakeModel(游戲內(nèi)容)ArrayIndexReadOnly(方向)(游戲方向)Listener類(控制速度)2.3.6各類模塊設(shè)計(jì)概要SnakeApp類該類包含main方法,為應(yīng)用程序的主類。該類用來(lái)創(chuàng)建游戲的用戶界面,整個(gè)程序從該類的main方法開始執(zhí)行。SnakeFrame類用來(lái)設(shè)計(jì)游戲的用戶界面。SnakePanel類設(shè)置游戲運(yùn)行狀態(tài),設(shè)置蛇頭顏色,背景顏色,隨機(jī)塊顏色,移動(dòng)以及分?jǐn)?shù)更新,實(shí)現(xiàn)上下左右移動(dòng)的方法接口。SnakeModel類設(shè)置初始化蛇的形狀和運(yùn)行方向,設(shè)置隨機(jī)塊的位置,判斷游戲是否出界,以及出界后的處理,設(shè)置方向的更新。ArrayIndex類用來(lái)得到坐標(biāo),設(shè)置坐標(biāo)以及判斷運(yùn)行方向相同或相反。ArrayIndexReadOnly類用來(lái)得到坐標(biāo),以及判斷運(yùn)行方向相同或相反。Listener類用來(lái)控制游戲的速度2.3.7游戲圖形界面的圖形顯示更新功能游戲的圖形區(qū)域界面主要是一個(gè)圖形顯示更新區(qū)域,主要包括隨機(jī)食物的顯示更新、進(jìn)行中和游戲結(jié)束時(shí)的分?jǐn)?shù)更新和游戲圖形區(qū)域界面的清除。游戲圖形區(qū)域又很多小方格組成,主要是一個(gè)表格,根據(jù)相應(yīng)格子的設(shè)置標(biāo)志來(lái)顯示相應(yīng)的圖形圖片,這樣就實(shí)現(xiàn)了貪吃蛇的實(shí)時(shí)顯示。2.3.8貪吃蛇蛇身的設(shè)計(jì)在貪吃蛇游戲中,具體的蛇身圖形的設(shè)計(jì)是比較重要的一個(gè)方面。因?yàn)樨澇陨哂螒蛑兄饕挠螒騽?dòng)作就是控制蛇身的移動(dòng)和轉(zhuǎn)向,以便于覆蓋隨機(jī)塊。由于主要的游戲動(dòng)作都集中在蛇身上,因此蛇身設(shè)計(jì)就顯得格外重要。2.3.9內(nèi)部接口內(nèi)部模塊之間的接口是通過內(nèi)部函數(shù)完成,在程序設(shè)計(jì)中用設(shè)計(jì)軟件本身所帶的調(diào)用函數(shù)實(shí)現(xiàn)。2.4詳細(xì)設(shè)計(jì)2.4.1程序主結(jié)構(gòu)本次所設(shè)計(jì)貪吃蛇游戲的程序主結(jié)構(gòu)如圖6所示。初始化初始化進(jìn)入事件等待狀態(tài)初始化失敗不正常退出開始請(qǐng)求相關(guān)事件返回暫停請(qǐng)求退出正常退出圖6貪吃蛇程序主結(jié)構(gòu)2.4.2類模塊程序流程圖SnakeApp類創(chuàng)建SnakeFrame窗口類的一個(gè)實(shí)例設(shè)置關(guān)閉窗口按鍵和窗口的高度寬度圖創(chuàng)建SnakeFrame窗口類的一個(gè)實(shí)例設(shè)置關(guān)閉窗口按鍵和窗口的高度寬度圖7SnakeApp類程序流程圖SnakeFrame類定義菜單及菜單項(xiàng)變量定義菜單及菜單項(xiàng)變量創(chuàng)建菜單及菜單項(xiàng)將組件注冊(cè)給事件監(jiān)聽者處理各子菜單動(dòng)作時(shí)間圖8SnakeFrame類程序流程圖SnakePanel類設(shè)置蛇頭身體,隨機(jī)塊和初始運(yùn)行方向變量設(shè)置蛇頭身體,隨機(jī)塊和初始運(yùn)行方向變量重新開始游戲時(shí)初始化處理游戲動(dòng)作圖9SnakePanel類程序流程圖設(shè)置蛇頭、背景、隨機(jī)塊顏色實(shí)現(xiàn)移動(dòng)接口定義數(shù)據(jù)成員實(shí)現(xiàn)按鍵接口SnakeModel類設(shè)置函數(shù)坐標(biāo)和方向設(shè)置函數(shù)坐標(biāo)和方向設(shè)置初始化狀態(tài)圖10SnakeModel類程序流程圖設(shè)置貪吃蛇界面并初始化游戲是否與運(yùn)行方向相反Y保持原來(lái)的方向按指示方向運(yùn)動(dòng)蛇是否吃了隨機(jī)塊Y重設(shè)置蛇頭和蛇身,重新生成隨機(jī)塊N是否出界NNNY游戲結(jié)束是否相交Y游戲結(jié)束N移動(dòng),把蛇頭加到蛇身體里面并且把尾巴移出是否與運(yùn)行方向相同或相反方向更新,返回tureNArrayIndexReadOnly類構(gòu)造函數(shù)得到坐標(biāo)構(gòu)造函數(shù)得到坐標(biāo)設(shè)置與運(yùn)行方向相同和相反的表示方法圖11ArrayIndexReadOnly類程序流程圖ArrayIndex類設(shè)置X,Y坐標(biāo)設(shè)置X,Y坐標(biāo)設(shè)置與運(yùn)行方向相同或相反的表示方法圖12ArrayIndex類程序流程圖listener類創(chuàng)建一個(gè)創(chuàng)建一個(gè)Listener方法實(shí)現(xiàn)監(jiān)聽接口暫停時(shí)間是否大于10NY暫停時(shí)間設(shè)置為100按當(dāng)前速度運(yùn)行圖13listener類程序流程圖2.4.3類模塊具體設(shè)計(jì)SnakeApp.java程序SnakeApp類中包含main方法,為主類。在主類中創(chuàng)建了SnakeFrame窗口類的一個(gè)實(shí)例。設(shè)計(jì)如下:成員變量表表1SnakeApp.java程序成員變量表變量名稱變量屬性說明WIDTHprivatestaticfinalint窗體寬度HEIGHTprivatestaticfinalint窗體高度成員方法表2SnakeApp.java程序成員方法方法名稱方法功能備注main創(chuàng)建了SnakeFrame窗口類的一個(gè)實(shí)例,應(yīng)用程序從main方法開始執(zhí)行應(yīng)用程序的入口方法SnakeFrame.java程序這個(gè)程序中包含二個(gè)類,下面分小節(jié)分別敘述。=1\*GB3①SnakekFrame類程序SnakeFrame類用來(lái)設(shè)計(jì)游戲的用戶界面。在該界面上有用戶玩游戲的功能菜單、游戲界面及游戲的狀態(tài)欄。設(shè)計(jì)如下:成員變量表表3SnakeFrame類程序成員變量表變量名稱變量屬性說明jMenu1JMenu主菜單項(xiàng)“游戲”startJMenuItem子菜單項(xiàng)“開始游戲”pauseJMenuItem子菜單項(xiàng)“暫停游戲”endJMenuItem子菜單項(xiàng)“結(jié)束游戲”quitJMenuItem子菜單項(xiàng)“關(guān)閉”成員方法表4SnakeFrame類程序成員方法表方法名稱方法功能備注SnakeFrame加載整個(gè)用戶界面,注冊(cè)子菜單的ActionEvent事件構(gòu)造函數(shù)actionPerformedActionEvent事件處理方法。該方法處理各按鈕的動(dòng)作事件接口方法=2\*GB3②listener類程序具體設(shè)計(jì)如下:成員變量表表5listener類程序成員變量表變量名稱變量屬性說明pauseprivatelong游戲速度停頓時(shí)間成員方法表6listener類程序成員方法方法名稱方法功能備注listener用來(lái)控制游戲的速度構(gòu)造函數(shù)actionPerformed把pause的值賦給speedtime,處理速度事件ArrayIndex.java程序成員變量表7ArrayIndex類程序成員變量表變量名稱變量屬性說明xprivateint定義x坐標(biāo)yprivateint定義y坐標(biāo)成員方法表8ArrayIndex類程序成員方法方法名稱方法功能備注ArrayIndex對(duì)坐標(biāo)賦初值構(gòu)造函數(shù)getX得到x坐標(biāo)自定義方法getY得到y(tǒng)坐標(biāo)自定義方法setX設(shè)置x坐標(biāo)自定義方法setY設(shè)置y坐標(biāo)自定義方法equalOrRev運(yùn)行方向是否同向或反向自定義方法equals運(yùn)行方向是否同向自定義方法reverse運(yùn)行方向是否反向自定義方法ArrayIndexReadOnly.java程序成員變量表表9ArrayIndexReadOnly類程序成員變量表變量名稱變量屬性說明xprivateint定義x坐標(biāo)yprivateint定義y坐標(biāo)成員方法表10ArrayIndexReadOnly類程序成員方法方法名稱方法功能備注ArrayIndexReadOnly對(duì)坐標(biāo)賦初值構(gòu)造函數(shù)getX得到x坐標(biāo)自定義方法getY得到y(tǒng)坐標(biāo)自定義方法equalOrRev運(yùn)行方向是否同向或反向自定義方法equals運(yùn)行方向是否同向自定義方法reverse運(yùn)行方向是否反向自定義方法SnakePanel.java程序成員變量表表11SnakePanel類程序成員變量表變量名稱變量屬性說明parentJFrameJFrame的對(duì)象設(shè)置界面rowprivateint貪吃蛇的行數(shù)colprivateint貪吃蛇的列數(shù)gridsprivateJPanel[][]格子directionprivateArrayIndex游戲運(yùn)行方向snakeprivateSnakeModel蛇的形狀snakeBodyprivateLinkedList蛇的身體othersprivateLinkedList除了蛇以外的地方snakeHeadprivateArrayIndexReadOnly蛇的頭tempBlockprivateArrayIndexReadOnly隨機(jī)塊speedTimeprivatelong蛇的運(yùn)行速度bodyColorprivateColor身體顏色headColorprivateColor頭的顏色tempColorprivateColor隨機(jī)塊顏色othersColorprivateColor背景顏色tprivateThread一個(gè)線程isEndprivateboolean判斷對(duì)錯(cuò)gameHaveExitprivatestaticboolean游戲結(jié)束成員方法表12SnakePanel類程序成員方法方法名稱方法功能備注SnakePanel設(shè)置游戲界面的屬性及注冊(cè)組件的鍵盤事件構(gòu)造函數(shù)newGame對(duì)重新游戲的設(shè)置以及初始化stopGame結(jié)束當(dāng)前游戲的線程resumeGame暫停游戲updateBg當(dāng)前狀態(tài)下蛇頭,身體和隨機(jī)塊的顏色更新isFocusTraversable是否可以穿過run該方法中,用線程控制控制游戲,讓蛇不停地移動(dòng),吃了隨機(jī)塊分?jǐn)?shù)加1。更新顯示分?jǐn)?shù)。Runnable接口方法keyPressed鍵盤事件處理方法。keyReleased空方法keyTyped空方法SnakeModel.java程序成員變量表表13SnakeModel類程序成員變量表變量名稱變量屬性說明theThreadThread創(chuàng)建線程來(lái)控制游戲bSnakeFramerowprivateint游戲的行數(shù)colprivateint游戲的列數(shù)snakeHeadprivateArrayIndex蛇頭坐標(biāo)jpsprivateArrayIndexReadOnly[][]方格坐標(biāo)snakeprivateLinkedList蛇的形狀othersprivateLinkedList除了蛇以外的地方tempBlockprivateArrayIndexReadOnly隨機(jī)塊runingDirictionprivateArrayIndex運(yùn)行方向的判斷成員方法表14SnakeModel類程序成員方法方法名稱方法功能備注getSnakeHead設(shè)置蛇頭坐標(biāo)getSnakeTail設(shè)置身體坐標(biāo)getRuningDiriction得到運(yùn)行方向getSnake得到蛇的形態(tài)getOthers得到除了蛇以外的其它部分setSnakeHead設(shè)置蛇頭坐標(biāo)getTempBlock得到隨機(jī)塊坐標(biāo)setTempBlock設(shè)置隨機(jī)塊坐標(biāo)moveTo移動(dòng)initializeV初始化游戲SnakeModel蛇模型的初始化move判斷運(yùn)行方向,判斷是否吃了隨機(jī)塊,判斷游戲是否出界,出界后是否參加排名,以及運(yùn)行方向的更新。三系統(tǒng)測(cè)試打開貪吃蛇游戲后,出現(xiàn)如下圖14所示界面圖14點(diǎn)擊主菜單的【文件】出現(xiàn)如圖15所示界面。選擇【退出】則可以退出游戲。圖15再點(diǎn)擊【幫助】就會(huì)出現(xiàn)如圖16所示界面。圖16點(diǎn)擊主菜單的【設(shè)置】會(huì)出如圖17所示界面,點(diǎn)擊等級(jí)的類別修改難度系數(shù)。圖17點(diǎn)擊【風(fēng)格】如圖18所示可去掉網(wǎng)格。圖18點(diǎn)擊【新游戲】按鈕開始游戲,如圖19所示并有暫停和繼續(xù)功能。圖19四心得體會(huì)通過這次課程設(shè)計(jì),我對(duì)上學(xué)期所學(xué)的JAVA語(yǔ)言程序設(shè)計(jì)有一個(gè)更深刻的了解,將所學(xué)的知識(shí)應(yīng)用于實(shí)踐,由于所學(xué)知識(shí)有限,為了使游戲能夠能夠?qū)崿F(xiàn)自己預(yù)先的構(gòu)想,我們這組通過上網(wǎng)找代碼和去圖書館借書找程序,比較畫好的流程圖及功能模塊,不斷閱讀修改代碼使程序達(dá)到預(yù)期所要實(shí)現(xiàn)的目標(biāo),完成課程設(shè)計(jì)后,可以感覺到自己對(duì)Java程序的又有了新的認(rèn)識(shí)。在這次課程設(shè)計(jì)中,我主要負(fù)責(zé)窗體和判斷蛇的運(yùn)動(dòng)的設(shè)計(jì)和開發(fā),在SnakeApp類中先定義了窗體的長(zhǎng)度和寬度,然后通過frame.show()顯示窗體,用注冊(cè)監(jiān)聽器到Window的接口,利用System.exit(0)語(yǔ)句來(lái)完成關(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ù)庫(kù)、各種應(yīng)用軟件和游戲中,我仍覺得對(duì)游戲的設(shè)計(jì)有極大的熱情。因?yàn)槠涓鱾€(gè)模塊間的聯(lián)系十分緊密,代碼重復(fù)執(zhí)行率高,當(dāng)經(jīng)過無(wú)數(shù)次的調(diào)試、修改后,能最終看到成品,有無(wú)比自豪的心情。大學(xué)期間做過圖書館管理程序等簡(jiǎn)單的數(shù)據(jù)庫(kù)管理系統(tǒng)的課程設(shè)計(jì),思想大致相似,變化范圍有限,沒有太多自己可發(fā)揮的余地。大家作品的最終結(jié)果都離不開同一個(gè)模式。相比一些數(shù)據(jù)庫(kù)軟件,游戲的設(shè)計(jì)有很多人情色彩和藝術(shù)思想的發(fā)揮,正式商業(yè)的軟件的人性化界面和各個(gè)游戲間迥異的結(jié)構(gòu)每每會(huì)讓人有去開發(fā)的沖動(dòng)。綜合運(yùn)用以前所學(xué)習(xí)的知識(shí),設(shè)計(jì)一個(gè)JAVA手機(jī)游戲,并能實(shí)現(xiàn)以下的功能:游戲聲音的控制、游戲等級(jí)的控制、最高分的記錄、游戲暫停、游戲重新開始、游戲的結(jié)束??傊?,通過本次的課程設(shè)計(jì),使我平時(shí)學(xué)到的理論知識(shí)得到了很好地升華,理論與實(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語(yǔ)言程序設(shè)計(jì)(第二版)[M].北京:中國(guó)鐵道出版社,2009.[5]黃曉東.Java課程設(shè)計(jì)案例精編(第二版)[M].北京:中國(guó)水利水電出版社,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()//注冊(cè)事件監(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)動(dòng)的方向相同或相反{ retur

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論