![基于Java的游戲設(shè)計(jì)-貪吃蛇論文_第1頁(yè)](http://file4.renrendoc.com/view/d51d20d6003f2fcddee7174a6d59a239/d51d20d6003f2fcddee7174a6d59a2391.gif)
![基于Java的游戲設(shè)計(jì)-貪吃蛇論文_第2頁(yè)](http://file4.renrendoc.com/view/d51d20d6003f2fcddee7174a6d59a239/d51d20d6003f2fcddee7174a6d59a2392.gif)
![基于Java的游戲設(shè)計(jì)-貪吃蛇論文_第3頁(yè)](http://file4.renrendoc.com/view/d51d20d6003f2fcddee7174a6d59a239/d51d20d6003f2fcddee7174a6d59a2393.gif)
![基于Java的游戲設(shè)計(jì)-貪吃蛇論文_第4頁(yè)](http://file4.renrendoc.com/view/d51d20d6003f2fcddee7174a6d59a239/d51d20d6003f2fcddee7174a6d59a2394.gif)
![基于Java的游戲設(shè)計(jì)-貪吃蛇論文_第5頁(yè)](http://file4.renrendoc.com/view/d51d20d6003f2fcddee7174a6d59a239/d51d20d6003f2fcddee7174a6d59a2395.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
..畢業(yè)設(shè)計(jì)論文作者學(xué)號(hào)系部專業(yè)題目指導(dǎo)教師評(píng)閱教師完成時(shí)間:..畢業(yè)設(shè)計(jì)(論文)中文摘要〔題目〕:基于Java的游戲設(shè)計(jì)——貪吃蛇摘要:"貪吃蛇〞游戲是使用Java語(yǔ)言開發(fā)的一款經(jīng)典的游戲,它因操作簡(jiǎn)單、娛樂性強(qiáng)而廣受歡送。本文基于Java技術(shù)和eclipse開發(fā)環(huán)境,開發(fā)了一個(gè)操作簡(jiǎn)單、界面美觀、功能較齊全的"貪吃蛇〞游戲。整個(gè)游戲程序分為十個(gè)類模塊,實(shí)現(xiàn)了游戲的開場(chǎng)、暫停、完畢,能夠?qū)崿F(xiàn)加速和減速。通過本游戲的開發(fā),到達(dá)學(xué)習(xí)Java技術(shù)和熟悉軟件開發(fā)流程的目的。本文在介紹Java相關(guān)技術(shù)時(shí)對(duì)"貪吃蛇〞游戲的整個(gè)生命周期的各個(gè)開發(fā)階段進(jìn)展了詳細(xì)地介紹。首先,分析了開發(fā)本游戲軟件的可行性;其次,從游戲主界面等幾方面,分析了本游戲的功能需求;然后,進(jìn)展了游戲的概要設(shè)計(jì)和詳細(xì)設(shè)計(jì),這也是本文的重點(diǎn)。概要設(shè)計(jì)給出兩個(gè)功能模塊的主框架以及八個(gè)類模塊的函數(shù)調(diào)用關(guān)系;詳細(xì)設(shè)計(jì)重點(diǎn)給出各個(gè)類模塊的程序列表,介紹了各個(gè)類包含的變量、使用的方法,展示了游戲的界面。為了保證程序代碼的正確性和功能實(shí)現(xiàn)的可靠性,本文還介紹了游戲軟件的程序調(diào)試過程和功能測(cè)試結(jié)果。關(guān)鍵詞:Javaeclipse貪吃蛇開發(fā)流程.PAGE.畢業(yè)設(shè)計(jì)(論文)外文摘要Title:Java-basedgamedesign——SnakeAbstract:SnakegameisaclassicgameusingtheJavalanguagedevelopment,itissimple,entertainingandpopular.ThisarticleisbasedonJavatechnologyandtheEclipsedevelopmentenvironment,developingasimple,beautifulinterface,Full-featured"Snake"game.Theentiregameprogramisdividedintotenmodules,thestartofthegame,pause,end,beingabletoachievespeedupandspeeddown.Throughthedevelopmentofthegame,toachievethepurposeoflearningJavatechnologyandfamiliarwiththesoftwaredevelopmentprocess.IntroducingJava-relatedtechnologies,adetaileddescriptionofthevariousdevelopmentphasesoftheentirelifecycleofthe"Snake"game.First,theanalysisofthefeasibilityofthedevelopmentofthegamesoftware;Secondly,thegamefromthemaingameinterfaceaspects,functionalrequirements;Then,theoutlinedesignanddetaileddesignofthegame,whichisthefocusofthisarticle.OutlinedesigngivesthemainframeofthetwofunctionalmodulesandTheeightmodulesfunctioncallrelationship;Detaileddesignfocusingofeachmoduleisgiventhelistofprograms,eachclasscontainsvariables,themethodsused,showingthegame'sinterface.Inordertoensurethecorrectnessandfunctionsachievingreliabilityoftheprogramcode,thearticlealsodescribestheresultsofthegamesoftwaredebuggingprocessandfunctionaltesting.keywords:JavaeclipseSnakethedevelopmentprocess..目錄1緒論11.1Java語(yǔ)言的特點(diǎn)11.2開發(fā)工具Eclipse介紹21.3開發(fā)工具JDK介紹21.4應(yīng)用環(huán)境32系統(tǒng)需求分析32.1需求分析32.2可行性分析33系統(tǒng)概要設(shè)計(jì)43.1游戲流程圖43.2設(shè)計(jì)目標(biāo)53.3系統(tǒng)功能模塊53.4系統(tǒng)數(shù)據(jù)構(gòu)造設(shè)計(jì)74系統(tǒng)詳細(xì)設(shè)計(jì)104.1程序設(shè)計(jì)104.2貪吃蛇游戲各功能界面截圖135系統(tǒng)測(cè)試165.1測(cè)試的意義165.2測(cè)試過程165.3測(cè)試結(jié)果17結(jié)論18致19參考文獻(xiàn)19..1緒論貪吃蛇是世界知名的益智類小游戲,選擇這個(gè)題目一方面是為了將我們自己的所學(xué)知識(shí)加以運(yùn)用;另一方面,我希望通過自己的所學(xué)知識(shí)把它剖析開來(lái),通過自己的動(dòng)手實(shí)踐,真正的了解它的本質(zhì)和精華。希望通過這次實(shí)踐,能從中提高自己的編程能力。并從中學(xué)會(huì)從零開場(chǎng)分析設(shè)計(jì)程序,到達(dá)學(xué)以致用,活學(xué)活用的目的。另外,通過本游戲的開發(fā),到達(dá)學(xué)習(xí)Java技術(shù)和熟悉軟件開發(fā)流程的目的。本游戲的開發(fā)語(yǔ)言為Java,開發(fā)工具選用Eclipse。Java是一種簡(jiǎn)單的,面向?qū)ο蟮模植际降模忉屝偷?,?qiáng)健平安的,構(gòu)造中立的,可移植的,性能優(yōu)異、多線程的動(dòng)態(tài)語(yǔ)言。這里采用Java作為開發(fā)語(yǔ)言主要是基于Java的面向?qū)ο蠛涂梢浦残?。Eclipse是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組效勞,用于通過插件組件構(gòu)建開發(fā)環(huán)境。1.1Java語(yǔ)言的特點(diǎn)簡(jiǎn)單性Java與C++語(yǔ)言非常相近,但Java比C++簡(jiǎn)單,它拋棄了C++中的一些不是絕對(duì)必要的功能,如頭文件、預(yù)處理文件、指針、構(gòu)造、運(yùn)算符重載、多重繼承以及自動(dòng)強(qiáng)迫同型。Java實(shí)現(xiàn)了自動(dòng)的垃圾收集,簡(jiǎn)化了存管理的工作。平臺(tái)無(wú)關(guān)性Java引進(jìn)虛擬機(jī)原理,并運(yùn)行于虛擬機(jī),實(shí)現(xiàn)不同平臺(tái)之間的Java接口。Java的數(shù)據(jù)類型與機(jī)器無(wú)關(guān)。平安性Java的編程類似C++,但舍棄了C++的指針對(duì)存儲(chǔ)器地址的直接操作,程序運(yùn)行時(shí),存由操作系統(tǒng)分配,這樣可以防止病毒通過指針入侵系統(tǒng)。它提供了平安管理器,防止程序的非法訪問。面向?qū)ο驤ava吸收了C++面向?qū)ο蟮母拍?,將?shù)據(jù)封裝于類中,實(shí)現(xiàn)了程序的簡(jiǎn)潔性和便于維護(hù)性,使程序代碼可以只需一次編譯就可反復(fù)利用。1.1.5分布式Java建立在TCP/IP網(wǎng)絡(luò)平臺(tái)上,提供了用HTTP和FTP協(xié)議傳送和接收信息的庫(kù)函數(shù),使用其相關(guān)技術(shù)可以十分方便的構(gòu)建分布式應(yīng)用系統(tǒng)。強(qiáng)健性Java致力于檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤,并自動(dòng)回收存,減少了存出錯(cuò)的可能性。Java取消了C語(yǔ)言的構(gòu)造、指針、#define語(yǔ)句、多重繼承、goto語(yǔ)句、操作符、重載等不易被掌握的特性,提供垃圾收集器自動(dòng)回收不用的存空間。1.2開發(fā)工具Eclipse介紹Eclipse是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組效勞,用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具〔JavaDevelopmentTools,JDT〕。雖然大多數(shù)用戶很樂于將Eclipse當(dāng)作JavaIDE來(lái)使用,但Eclipse的目標(biāo)不僅限于此。Eclipse還包括插件開發(fā)環(huán)境〔Plug-inDevelopmentEnvironment,PDE〕,這個(gè)組件主要針對(duì)希望擴(kuò)展Eclipse的軟件開發(fā)人員,因?yàn)樗试S他們構(gòu)建與Eclipse環(huán)境無(wú)縫集成的工具。盡管Eclipse是使用Java語(yǔ)言開發(fā)的,但它的用途并不限于Java語(yǔ)言;例如,支持諸如C/C++等編程語(yǔ)言的插件已經(jīng)可用,或預(yù)計(jì)會(huì)推出。Eclipse框架還可用來(lái)作為與軟件開發(fā)無(wú)關(guān)的其他應(yīng)用程序類型的根底,比方容管理系統(tǒng)等。1.3開發(fā)工具JDK介紹SunMicrosystems公司在推出Java語(yǔ)言的同時(shí),推出了一套開發(fā)工具JDK。Sun提供的基于字符模式的Java開發(fā)工具包JDK:Java開發(fā)工具〔JDK〕是許多Java專家最初使用的開發(fā)環(huán)境。Java是平臺(tái)無(wú)關(guān)的語(yǔ)言是因?yàn)橛肑ava寫的應(yīng)用程序不用修改就可在不同的軟硬件平臺(tái)上運(yùn)行。Java源程序編寫借助于記事本編輯工具。所有的Java文件編輯、編譯、調(diào)試、解釋運(yùn)行都是通過使用字符命令來(lái)執(zhí)行操作。JDK由一個(gè)標(biāo)準(zhǔn)類庫(kù)和一組建立,測(cè)試及建立文檔的Java實(shí)用程序組成。其核心JavaAPI是一些預(yù)定義的類庫(kù),開發(fā)人員需要用這些類來(lái)訪問Java語(yǔ)言的功能。JDK是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境〔JavaRuntimeEnvironment〕,一堆Java工具和Java根底的類庫(kù)。不管什么Java應(yīng)用效勞器實(shí)質(zhì)都是置了某個(gè)版本的JDK。因此掌握J(rèn)DK是學(xué)好Java的第一步。最主流的JDK是Sun公司發(fā)布的JDK,除了Sun之外,還有很多公司和組織都開發(fā)了自己的JDK,例如IBM公司開發(fā)的JDK,BEA公司的Jrocket,還有GNU組織開發(fā)的JDK等等。其中IBM的JDK包含的JVM〔JavaVirtualMachine〕運(yùn)行效率要比SunJDK包含的JVM高出許多。而專門運(yùn)行在x86平臺(tái)的Jrocket在效勞端運(yùn)行效率也要比SunJDK好很多。1.4應(yīng)用環(huán)境(1)操作系統(tǒng):Windows7,Windowsxp等。(2)應(yīng)用軟件:jdk7.1,eclipse。2系統(tǒng)需求分析2.1需求分析本系統(tǒng)主要是完成貪吃蛇游戲的根本操作,用戶可以自己練習(xí)和娛樂。本系統(tǒng)需要滿足以下幾點(diǎn)要求:(1)利用方向鍵來(lái)改變蛇的運(yùn)行方向。(2)空格鍵或回車鍵暫停或繼續(xù)游戲,并在隨機(jī)的地方產(chǎn)生食物,PgUp和PgDn控制速度快慢。(3)吃到食物就變成新的蛇體,碰到壁或自身那么游戲完畢,否那么正常運(yùn)行。2.2可行性分析貪吃蛇游戲是一種簡(jiǎn)單的群眾的游戲,自從計(jì)算機(jī)實(shí)現(xiàn)以來(lái),深受廣闊電腦玩家的喜愛,做一個(gè)簡(jiǎn)單的貪吃蛇小游戲,也比擬符合現(xiàn)代人用來(lái)打發(fā)閑暇時(shí)光的方式。貪吃蛇的核心算法是如何實(shí)現(xiàn)移動(dòng)和吃掉食物,沒有碰到食物的時(shí)候,把當(dāng)前運(yùn)動(dòng)方向上的下個(gè)節(jié)點(diǎn)入隊(duì),并以蛇節(jié)點(diǎn)的顏色繪制這個(gè)節(jié)點(diǎn),然后把頭指針?biāo)傅墓?jié)點(diǎn)出隊(duì),并以游戲框架部背風(fēng)光重繪出隊(duì)的節(jié)點(diǎn),這樣就可以到達(dá)移動(dòng)的效果。而在吃到食物的時(shí)候,那么只需把食物入隊(duì)即可。實(shí)現(xiàn)貪吃蛇的根本的蛇身移動(dòng)、吃到食物身體增長(zhǎng)、和碰到墻壁或自身死亡,能夠暫停和開場(chǎng)。本次設(shè)計(jì)主要運(yùn)用java語(yǔ)言來(lái)完成。Java語(yǔ)言是一種跨平臺(tái),適合于分布式計(jì)算環(huán)境的面向?qū)ο缶幊陶Z(yǔ)言,用Java寫的應(yīng)用程序不用修改就可在不同的軟硬件平臺(tái)上運(yùn)行。由于Java主要用于網(wǎng)絡(luò)應(yīng)用程序開發(fā),因此對(duì)平安性有較高的要求。如果沒有平安保證,用戶從網(wǎng)絡(luò)下載程序執(zhí)行就非常危險(xiǎn)。Java通過自己的平安機(jī)制防止了病毒程序的產(chǎn)生和下載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞。3系統(tǒng)概要設(shè)計(jì)3.1游戲流程圖進(jìn)入游戲界面進(jìn)入游戲界面點(diǎn)擊開場(chǎng)按鈕,游戲開場(chǎng),蛇隨機(jī)產(chǎn)生/^\/^\點(diǎn)擊開場(chǎng)按鈕,游戲開場(chǎng),蛇隨機(jī)產(chǎn)生/^\/^\_|__|O|\//~\_/\\____|__________/\\_______\`\\\||\//\//\\//\\//\\//__\\//_-~~-_||((_-~_--_~-__/|\~-____-~_-~~-_~-_-~/~-__-~~-__-~~--______-~~-___-~操作:空格:暫停操作:空格:暫停上移:下移:左移:右移:游戲中途欲中斷,稍候進(jìn)展游戲沒有吃到食物,且碰到邊界游戲中途欲中斷,稍候進(jìn)展游戲沒有吃到食物,且碰到邊界單擊重新開場(chǎng)游戲單擊暫停游戲單擊重新開場(chǎng)游戲單擊暫停游戲單擊開場(chǎng)游戲,游戲恢復(fù)正常單擊開場(chǎng)游戲,游戲恢復(fù)正常圖3-1游戲流程圖3.2游戲整體構(gòu)造圖圖3-2游戲整體構(gòu)造圖3.3設(shè)計(jì)目標(biāo)本系統(tǒng)是針對(duì)貪吃蛇小游戲的Java程序,利用方向鍵來(lái)改變蛇的運(yùn)行方向,空格鍵暫?;蚶^續(xù)游戲,并在隨機(jī)的地方產(chǎn)生食物,吃到食物就變成新的蛇體,碰到壁或自身那么游戲完畢,否那么正常運(yùn)行。3.4系統(tǒng)功能模塊1、本系統(tǒng)共包括10個(gè)類文件。java源文件及其功能如表所示。表3-1java源文件及其功能序號(hào)文件名主要功能1MainFrame該文件為程序入口,含有main方法。2GameOptionPanel實(shí)現(xiàn)菜單控制運(yùn)行等總體要求,實(shí)現(xiàn)方向鍵控制蛇的方向,空格鍵控制游戲暫停或繼續(xù)等。3SnakeListener蛇的監(jiān)聽器4GameListener游戲監(jiān)聽器5Food該文件實(shí)現(xiàn)組成蛇身的單位-食物。6Ground該文件實(shí)現(xiàn)障礙物-石頭7Snake該文件實(shí)現(xiàn)蛇類8Global該文件為工具類,實(shí)現(xiàn)一些配置9Controller控制器,控制蛇、食物、石頭10GamePanel游戲的顯示界面設(shè)置2、主要類之間的對(duì)應(yīng)關(guān)系如下:圖3-3主要類之間的關(guān)系3、因?yàn)樯卟荒苤苯硬僮黠@示面板〔GamePanel〕,所以定義一個(gè)監(jiān)視器SnakeListener,里面有兩個(gè)方法:snakeMoved〔〕和snakeEatFood()。圖3-4通過事件監(jiān)聽建立聯(lián)系3.5系統(tǒng)數(shù)據(jù)構(gòu)造設(shè)計(jì)蛇、石頭、食物的表示用一個(gè)大的表格來(lái)表示顯示區(qū)域,里面的格子就是組成蛇的根本單位,一個(gè)格子可以代表一個(gè)食物,也可以代表一個(gè)石頭,幾塊連在一起的石頭就可以代表一條蛇。使用坐標(biāo)來(lái)區(qū)分這些格子。圖3-5蛇、石頭、食物的表示這里用一個(gè)集合來(lái)存儲(chǔ)這些坐標(biāo),并且要求能夠區(qū)分出蛇頭和蛇尾。蛇的移動(dòng)蛇向前移動(dòng)一步,可以看作是蛇頭前面增加了一個(gè)節(jié)點(diǎn),蛇的尾巴上少了一個(gè)節(jié)點(diǎn)〔即去尾,加頭〕圖3-6蛇的移動(dòng)存儲(chǔ)蛇身的數(shù)據(jù)構(gòu)造由于要區(qū)分蛇頭和蛇尾,因此這個(gè)數(shù)據(jù)構(gòu)造必須是有序的。另一方面,我們需要經(jīng)常的訪問第一個(gè)和最后一個(gè)節(jié)點(diǎn),所以LinkedList最適宜。因?yàn)樗術(shù)etFirst(),getLast(),和removeLast()方法。圖3-7根據(jù)原蛇頭和方向計(jì)算新蛇頭的坐標(biāo)蛇的移動(dòng)方向蛇下一步移動(dòng)到哪里,是由方向來(lái)控制的。根據(jù)原蛇頭的坐標(biāo)和方向來(lái)確定新蛇頭的坐標(biāo),因此在這里用int型常量來(lái)表示蛇的移動(dòng)方向。在原坐標(biāo)的根底上,根據(jù)蛇頭的運(yùn)動(dòng)方向來(lái)確定新蛇頭的坐標(biāo),比方向上移動(dòng)就是y-1。在Snake中增加蛇的方向向量:publicstaticfinalintUP=1;上 publicstaticfinalintDOWN=-1;下 publicstaticfinalintLEFT=2;左 publicstaticfinalintRIGHT=-2;右如何顯示蛇身顯示蛇身,其實(shí)就是填充,用顏色填充格子。需要4個(gè)參數(shù),像素坐標(biāo)x,像素坐標(biāo)y,格子寬度,格子高度。像素坐標(biāo)就是矩形左上角的坐標(biāo)圖3-8格子坐標(biāo)和像素坐標(biāo)蛇身的移動(dòng)方向〔1〕相反方向和上一次移動(dòng)的方向相反的方向稱為相反方向,這種輸入應(yīng)該忽略。這樣可以防止蛇從自己的身體中穿過。〔2〕無(wú)效方向在蛇的這一次移動(dòng)之后和下一次移動(dòng)之前這個(gè)時(shí)間間隔輸入了多個(gè)非相反方向,只有最后一個(gè)是有效方向,其他的都是無(wú)效方向。蛇的最終運(yùn)動(dòng)方向以有效方向?yàn)闇?zhǔn)。Snake中增加監(jiān)聽器,并另外啟動(dòng)一個(gè)線程來(lái)不斷調(diào)用蛇的move(),在Snake中提供一個(gè)啟動(dòng)線程的方法。吃到食物判定通過判定坐標(biāo)是否重合來(lái)判斷,只需要判斷蛇頭是否和食物重合就可以了,因?yàn)樯叩纳眢w都是走蛇頭走過的地方,蛇吃掉食物后身體就會(huì)變長(zhǎng)。在Controller的snakeMoved中添加如下代碼:/*判斷是否吃到食物*/ if(food!=null&&food.isSnakeEatFood(snake)){ /*吃到食物后,蛇增加身體,再重新丟一個(gè)食物*/ snake.eatFood(); food.setLocation(ground==null"food.getNew():ground .getFreePoint()); }/*如果吃到食物,就肯定不會(huì)吃到石頭*/ elseif(ground!=null&&ground.isSnakeEatRock(snake)){ /*如果吃到的是石頭,或吃到自己的身體,就讓蛇死掉*/ stopGame(); }if(snake.isEatBody()) stopGame();4系統(tǒng)詳細(xì)設(shè)計(jì)4.1程序設(shè)計(jì)主類MainFrame〔1〕主類為此程序的入口,定義了MainFrame的對(duì)象frame,開場(chǎng)運(yùn)行此程序?!?〕源代碼見文件MainFrame.Java類MainFrame〔1〕成員變量見表4-1表4-1主要成員變量成員變量描述變量類型名稱選項(xiàng)面板privateGameOptionPaneloptionPanel游戲面板privateGamePanelgamePanel蛇類對(duì)象privateSnakesnake石頭對(duì)象privateGroundground食物對(duì)象privateFoodfood控制對(duì)象privateControllercontroller速度標(biāo)簽privateJLabelinfoLabel〔2〕方法見表4-2表4-2主要方法方法名功能gameOver()游戲完畢gameStart()游戲開場(chǎng)gameContinue()游戲繼續(xù)gamePause()游戲暫停類Snake〔1〕成員變量見表4-3表4-3主要成員變量成員變量描述變量類型名稱上下左右(方向)intUP、DOWN、LEFT、RIGHT蛇體LinkedList<Point>body蛇頭坐標(biāo)Pointhead蛇尾坐標(biāo)Pointtail是否活著booleanlive是否暫停booleanpause速度intspeed監(jiān)聽Set<SnakeListener>listener〔2〕方法見表4-4表4-4主要方法方法名功能eatFood()判斷食物是否被蛇吃掉,如果食物在蛇運(yùn)行方向的正前方,并且與蛇頭接觸,那么被吃掉setHeadColor()設(shè)置蛇頭的顏色setBodyColor()設(shè)置蛇身的顏色changeDirection(int)改變運(yùn)行方向move()蛇在運(yùn)行中所采取的措施begin()開啟一個(gè)新的線程驅(qū)動(dòng)蛇定時(shí)移動(dòng)類Food〔1〕成員變量見表4-5表4-5主要成員變量成員變量描述變量類型名稱顏色privateColorcolor隨機(jī)privateRandomrandom〔2〕源代碼見文件Food.java類Controller該類包含控制器和處理按鍵邏輯,控制器,控制Ground,Snake,F(xiàn)ood,負(fù)責(zé)游戲的邏輯處理按鍵事件,實(shí)現(xiàn)了SnakeListener接口的snakeMoved()方法,可以處理Snake觸發(fā)的事件,該類繼承KeyAdapter類并且覆蓋keyPressed()方法:處理按鍵事件,根據(jù)按鍵不同,發(fā)出不同的指令:UP:改變蛇的移動(dòng)方向?yàn)橄蛏螪OWN:改變蛇的移動(dòng)方向?yàn)橄蛳翷EFT:改變蛇的移動(dòng)方向?yàn)橄蜃驲IGHT:改變蛇的移動(dòng)方向?yàn)橄蛴襍PACE:暫停/繼續(xù)PgUp/PgDn:加速/減速蛇的移動(dòng)Y:開場(chǎng)新游戲的方法類Ground可以叫做地形,或地面,和食物一樣,Ground也有x,y坐標(biāo)和顏色等屬性,構(gòu)造方法Ground()初始化地圖,設(shè)置格局,可以通過setRockColor()方法設(shè)置石頭的顏色,方法isSnakeEatRock()判斷蛇是否吃到食物,最后運(yùn)用drawMe()方法顯示石頭。源代碼見文件Ground.java類GameListener此類為游戲監(jiān)聽類,實(shí)現(xiàn)游戲的監(jiān)聽功能。源代碼見文件GameListener.java類SnakeListener此類為蛇的監(jiān)聽類,實(shí)現(xiàn)蛇運(yùn)動(dòng)的監(jiān)聽,蛇移動(dòng)的監(jiān)聽snakeMoved(),蛇吃到食物的監(jiān)聽snakeEatFood()。源代碼見文件SnakeListener.java類Global工具類此類中存放了其他類中用到的一些常量:格子的像素〔寬度,高度〕、蛇的初始長(zhǎng)度和初始速度等。源代碼見文件Global.java類GameOptionPanel此類為游戲的選項(xiàng)面板類,實(shí)現(xiàn)游戲面板的控制。源代碼見文件GameOptionPanel.java類GamePanel此類為游戲的顯示界面設(shè)置,可以通過setBackgroundColor()設(shè)置游戲的背景顏色。源代碼見文件GamePanel.java4.2貪吃蛇游戲各功能界面截圖游戲的初始界面圖4-1初始界面圖4-2控制面板圖4-3速度標(biāo)簽游戲運(yùn)行過程界面〔1〕鼠標(biāo)點(diǎn)擊開場(chǎng)新游戲按鈕,開場(chǎng)游戲:圖4-4開場(chǎng)游戲圖4-5開場(chǎng)游戲〔有加速有改顏色有網(wǎng)格〕〔2〕按空格鍵,游戲開場(chǎng)運(yùn)行,蛇開場(chǎng)移動(dòng),并且吃到一次食物即紅色方塊后就變成蛇體:圖4-6吃到食物身體變長(zhǎng)〔3〕按方向鍵改變蛇的運(yùn)行方向,并且碰壁后從新開場(chǎng)游戲,紅色方塊隨機(jī)地方產(chǎn)生:圖4-7碰壁死亡5系統(tǒng)測(cè)試5.1測(cè)試的意義系統(tǒng)測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程,成功的測(cè)試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。測(cè)試的目的就是希望能以最少的人力和時(shí)間發(fā)現(xiàn)潛在的各種錯(cuò)誤和缺陷。應(yīng)根據(jù)開發(fā)各階段的需求、設(shè)計(jì)等文檔或程序的部構(gòu)造精心設(shè)計(jì)測(cè)試用例,并利用這些實(shí)例來(lái)運(yùn)行程序,以便發(fā)現(xiàn)錯(cuò)誤。系統(tǒng)測(cè)試是保證系統(tǒng)質(zhì)量和可靠性的關(guān)鍵步驟,是對(duì)系統(tǒng)開發(fā)過程中的系統(tǒng)分析系統(tǒng)設(shè)計(jì)和實(shí)施的最后復(fù)查。根據(jù)測(cè)試的概念和目的,在進(jìn)展信息系統(tǒng)測(cè)試時(shí)應(yīng)遵循以根本原那么。5.2測(cè)試過程(1)擬定測(cè)試方案。在制定測(cè)試方案時(shí),要充分考慮整個(gè)工程的開發(fā)時(shí)間和開發(fā)進(jìn)程以及一些人為因素和客觀條件等,使得測(cè)試方案是可行的。測(cè)試方案的容主要有測(cè)試的容、進(jìn)度安排、測(cè)試所需的環(huán)境和條件、測(cè)試培訓(xùn)安排等。(2)編制測(cè)試大綱。測(cè)試大綱是測(cè)試的依據(jù)。它明確詳盡地規(guī)定了在測(cè)試中針對(duì)系統(tǒng)的每一項(xiàng)功能或特性所必須完成的根本測(cè)試工程和測(cè)試完成的標(biāo)準(zhǔn)。(3)根據(jù)測(cè)試大綱設(shè)計(jì)和生成測(cè)試用例。在設(shè)計(jì)測(cè)試用例的時(shí)候,可綜合利用前面介紹的測(cè)試用例和設(shè)計(jì)技術(shù),產(chǎn)生測(cè)試設(shè)計(jì)說明文檔,其容主要有被測(cè)工程、輸人數(shù)據(jù)、測(cè)試過程、預(yù)期輸出結(jié)果等。(4)實(shí)施測(cè)試。測(cè)試的實(shí)施階段是由一系列的測(cè)試周期組成的。在每個(gè)測(cè)試周期中,測(cè)試人員和開發(fā)人員將依據(jù)預(yù)先編制好的測(cè)試大綱和準(zhǔn)備好的測(cè)試用例,對(duì)被測(cè)軟件或設(shè)備進(jìn)展完整的測(cè)試。(5)生成測(cè)試報(bào)告。測(cè)試完成后,要形成相應(yīng)的測(cè)試報(bào)告,主要對(duì)測(cè)試進(jìn)展概要說明,列出測(cè)試的結(jié)論,指出缺陷和錯(cuò)誤,另外,給出一些建議,如可采用的修改方法,各項(xiàng)修改預(yù)計(jì)的工作量及修改的負(fù)責(zé)人員。5.3測(cè)試結(jié)果貪吃蛇測(cè)試情況如表5-1所示:表5-1貪吃蛇測(cè)試情況執(zhí)行的操作期望的結(jié)果實(shí)際結(jié)果翻開文件,運(yùn)行代碼代碼正常運(yùn)行,無(wú)錯(cuò)誤信息符合期望結(jié)果點(diǎn)擊"開場(chǎng)游戲〞貪吃蛇出現(xiàn),食物出現(xiàn)符合期望結(jié)果點(diǎn)擊"暫停游戲〞游戲暫停,蛇和食物都靜止符合期望結(jié)果點(diǎn)擊"停頓游戲〞游戲停頓,重新開場(chǎng)新游戲符合期望結(jié)果利用方向鍵控制方向,空格鍵暫停游戲蛇運(yùn)行方向正常,空格鍵暫停游戲符合期望結(jié)果鍵盤按PgUp/PgDn蛇加速/減速運(yùn)動(dòng)符合期望結(jié)果點(diǎn)擊"設(shè)置背景顏色〞出現(xiàn)顏色選項(xiàng),背景顏色變化符合期望結(jié)果點(diǎn)擊"設(shè)置蛇頭/蛇身/食物顏色〞蛇頭、蛇身和食物顏色變化明顯且顯示正常效果符合期望結(jié)果"顯示網(wǎng)格〞打鉤出現(xiàn)網(wǎng)格,并且自行選擇網(wǎng)格顏色符合期望結(jié)果點(diǎn)擊"恢復(fù)默認(rèn)設(shè)置〞所有設(shè)置都恢復(fù)到初始化狀態(tài)符合期望結(jié)果蛇每吃到一個(gè)食物身體變長(zhǎng)符合期望結(jié)果蛇碰壁或者吃到自己的身體完畢游戲符合期望結(jié)果通過以上測(cè)試,驗(yàn)證程序運(yùn)行正常,沒有發(fā)現(xiàn)什么錯(cuò)誤。結(jié)論畢業(yè)設(shè)計(jì)是我們作為學(xué)生在學(xué)習(xí)階段的最后一個(gè)環(huán)節(jié),是對(duì)所學(xué)根底知識(shí)和專業(yè)知識(shí)的一種綜合應(yīng)用,是一種綜合的再學(xué)習(xí)、再提高的過程,這一過程對(duì)我們學(xué)生的學(xué)習(xí)能力和獨(dú)立思考及工作能力也是一個(gè)培養(yǎng),同時(shí)畢業(yè)設(shè)計(jì)的水平也反映了大學(xué)教育的綜合水平,因此學(xué)校十分重視畢業(yè)設(shè)計(jì)這一環(huán)節(jié),加強(qiáng)了對(duì)畢業(yè)設(shè)計(jì)工作的指導(dǎo)和發(fā)動(dòng)教育。在大學(xué)的學(xué)習(xí)過程中,畢業(yè)設(shè)計(jì)是一個(gè)重要的環(huán)節(jié),是我們步入社會(huì)參與實(shí)際工作的一次極好的演示,也是對(duì)我們自學(xué)能力和解決問題能力的一次考驗(yàn),是學(xué)校生活與社會(huì)生活間的過渡。在完成畢業(yè)設(shè)計(jì)的這段時(shí)間里,我收獲頗多:通過這次的java貪吃蛇游戲設(shè)計(jì)我了解到j(luò)ava語(yǔ)言的特點(diǎn):簡(jiǎn)單性、面向?qū)ο?、平臺(tái)無(wú)關(guān)性、可移植性、解釋性、髙性能、動(dòng)態(tài)性、可靠性和平安性、多線程、分布式處理等,在課程設(shè)計(jì)過程中不僅穩(wěn)固了我們以前的根底理論知識(shí),而且使我們各個(gè)方面的能力都有很大的提高。從一開場(chǎng)的無(wú)從下手,到不斷的查閱資料,圖書館借書,再到請(qǐng)教教師的幫助,這些都很好的鍛煉了我們理論聯(lián)系實(shí)際,與具體工程、課題相結(jié)合的能力,開發(fā)、設(shè)計(jì)游戲的能力進(jìn)一步在課程設(shè)計(jì)中表達(dá)。這讓我學(xué)會(huì)了很多,為以后的學(xué)習(xí)和工作加強(qiáng)。在設(shè)計(jì)過程中,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年食品蒸發(fā)濃縮機(jī)械合作協(xié)議書
- 2025年塑料助劑:潤(rùn)滑劑合作協(xié)議書
- 2025年呼吸制氧合作協(xié)議書
- 2025年年4K超高清合作協(xié)議書
- 2025年脂環(huán)烴合作協(xié)議書
- 八年級(jí)英語(yǔ)下冊(cè) Unit 10 單元綜合測(cè)試卷(人教版 2025年春)
- 2024-2025學(xué)年黑龍江省佳木斯市富錦市第十小學(xué)四年級(jí)(上)期末數(shù)學(xué)試卷
- 2025道德與法治九年級(jí)第二學(xué)期中考教學(xué)工作計(jì)劃
- 鄂州市梁子湖區(qū)八年級(jí)上冊(cè)語(yǔ)文名著導(dǎo)讀《紅星照耀中國(guó)》
- 七年級(jí)上學(xué)期歷史試卷
- 江蘇省蘇州市2024-2025學(xué)年高三上學(xué)期1月期末生物試題(有答案)
- 銷售與銷售目標(biāo)管理制度
- 特殊教育學(xué)校2024-2025學(xué)年度第二學(xué)期教學(xué)工作計(jì)劃
- 2025年第一次工地開工會(huì)議主要議程開工大吉模板
- 第16課抗日戰(zhàn)爭(zhēng)課件-人教版高中歷史必修一
- 對(duì)口升學(xué)語(yǔ)文模擬試卷(9)-江西省(解析版)
- 無(wú)人機(jī)運(yùn)營(yíng)方案
- (正式版)HGT 22820-2024 化工安全儀表系統(tǒng)工程設(shè)計(jì)規(guī)范
- NB-T 47013.15-2021 承壓設(shè)備無(wú)損檢測(cè) 第15部分:相控陣超聲檢測(cè)
- 隧道二襯承包合同參考
- 物理專業(yè)常用英語(yǔ)詞匯
評(píng)論
0/150
提交評(píng)論