畢業(yè)設(shè)計(jì)論文---基于 Java的游戲設(shè)計(jì)——貪吃蛇
《畢業(yè)設(shè)計(jì)論文---基于 Java的游戲設(shè)計(jì)——貪吃蛇》由會(huì)員分享,可在線閱讀,更多相關(guān)《畢業(yè)設(shè)計(jì)論文---基于 Java的游戲設(shè)計(jì)——貪吃蛇(24頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、畢業(yè)設(shè)計(jì)論文 作者 系部 專(zhuān)業(yè) 題目 學(xué)號(hào) 指導(dǎo)教師 評(píng)閱教師 完成時(shí)間 畢業(yè)設(shè)計(jì)(論文)中文摘要 〔題目〕:基于Java的游戲設(shè)計(jì)一一貪吃蛇 摘要:“貪吃蛇〃游戲是使用Java語(yǔ)言開(kāi)發(fā)的一款經(jīng)典的游戲,它因操作簡(jiǎn)單、娛樂(lè)性強(qiáng) 而廣受歡送。本文基于Java技術(shù)和eclipse開(kāi)發(fā)環(huán)境,開(kāi)發(fā)了一個(gè)操作簡(jiǎn)單、界面美觀、 功能較齊全的“貪吃蛇〃游戲。整個(gè)游戲程序分為十個(gè)類(lèi)模塊,實(shí)現(xiàn)了游戲的開(kāi)場(chǎng)、暫 停、完畢,能夠?qū)崿F(xiàn)加速和減速。通過(guò)本游戲的開(kāi)發(fā),到達(dá)學(xué)習(xí)Java技術(shù)和熟悉軟件開(kāi) 發(fā)流程的目的。 本文
2、在介紹Java相關(guān)技術(shù)時(shí)對(duì)“貪吃蛇〃游戲的整個(gè)生命周期的各個(gè)開(kāi)發(fā)階段進(jìn)展 了詳細(xì)地介紹。首先,分析了開(kāi)發(fā)本游戲軟件的可行性;其次,從游戲主界面等幾方面, 分析了本游戲的功能需求;然后,進(jìn)展了游戲的概要設(shè)計(jì)和詳細(xì)設(shè)計(jì),這也是本文的重 點(diǎn)。概要設(shè)計(jì)給出兩個(gè)功能模塊的主框架以及八個(gè)類(lèi)模塊的函數(shù)調(diào)用關(guān)系;詳細(xì)設(shè)計(jì)重 點(diǎn)給出各個(gè)類(lèi)模塊的程序列表,介紹了各個(gè)類(lèi)包含的變量、使用的方法,展示了游戲的 界面。 為了保證程序代碼的正確性和功能實(shí)現(xiàn)的可靠性,本文還介紹了游戲軟件的程序調(diào) 試過(guò)程和功能測(cè)試結(jié)果。 關(guān)鍵詞:Java eclipse貪吃蛇開(kāi)發(fā)流程 畢業(yè)設(shè)計(jì)(論文)外文摘要 Title Java-b
3、ased game designSnake Abstract: Snake game is a classic game using the Java language developments is simple, entertaining and popular. This article is based on Java technology and the Eclipse development environment, developing a simple, beautiful interface, Full-featured "Snake" game. The entire g
4、ame program is divided into ten modules, the start of the game, pause, end , being able to achieve speed up and speed down . Through the development of the game, to achieve the purpose of learning Java technology and familiar with the software development process. Introducing Java-relatedtechnologi
5、es, a detailed description of the various development phases of the entire life cycle of the "Snake" game. First, the analysis of the feasibility of the development of the game software; Secondly, the game from the main game interface aspects, functional requirements; Then, the outline design and de
6、tailed design of the game, which is the focus of this article. Outline design gives the main frame of the two functional modules and The eight modules function call relationship; Detailed design focusing of each module is given the list of programs, each class contains variables, the methods used, s
7、howing the game's interface . In order to ensure the correctness and functions achieving reliability of the program code, the article also describes the results of the game software debugging process and functional testing. keywords: Java eclipse Snake the development process 目錄 1緒論1 1.1 JAVA語(yǔ)言
8、的特點(diǎn)1 1.2 開(kāi)發(fā)工具 Eclipse/H§ 2 1.3 開(kāi)發(fā)工具JDK介紹2 1.4 應(yīng)用環(huán)境3 2系統(tǒng)需求分析3 2.1 需求分析3 2.2 可行性分析3 3系統(tǒng)概要設(shè)計(jì)4 3.1 游戲流程圖4 3.2 設(shè)計(jì)目標(biāo)5 3.3 系統(tǒng)功能模塊5 3.4 系統(tǒng)數(shù)據(jù)構(gòu)造設(shè)計(jì)7 4系統(tǒng)詳細(xì)設(shè)計(jì)10 4.1 程序設(shè)計(jì)10 4.2 貪吃蛇游戲各功能界面截圖13 5系統(tǒng)測(cè)試16 5.1 測(cè)試的意義16 5.2 測(cè)試過(guò)程16 5.3 測(cè)試結(jié)果17 結(jié)論18 致19 參考文獻(xiàn)19 1 緒論 貪吃蛇是世界知名的益智類(lèi)小游戲,選擇這個(gè)題目一方面是為了將我們自己的所學(xué)
9、知識(shí) 加以運(yùn)用;另一方面,我希望通過(guò)自己的所學(xué)知識(shí)把它剖析開(kāi)來(lái),通過(guò)自己的動(dòng)手實(shí)踐,真 正的了解它的本質(zhì)和精華。希望通過(guò)這次實(shí)踐,能從中提高自己的編程能力。并從中學(xué)會(huì)從 零開(kāi)場(chǎng)分析設(shè)計(jì)程序,到達(dá)學(xué)以致用,活學(xué)活用的目的。另外,通過(guò)本游戲的開(kāi)發(fā),到達(dá)學(xué) 習(xí)Java技術(shù)和熟悉軟件開(kāi)發(fā)流程的目的。 本游戲的開(kāi)發(fā)語(yǔ)言為Java開(kāi)發(fā)工具選用Eclipse Java是一種簡(jiǎn)單的,面向?qū)ο蟮模?分布式的,解釋型的,強(qiáng)健平安的,構(gòu)造中立的,可移植的,性能優(yōu)異、多線程的動(dòng)態(tài)語(yǔ)言。 這里采用Java作為開(kāi)發(fā)語(yǔ)言主要是基于 Java的面向?qū)ο蠛涂梢浦残?。Eclipse是一個(gè)開(kāi)放 源代碼的、基于Java的可擴(kuò)展開(kāi)發(fā)
10、平臺(tái)。就其本身而言,它只是一個(gè)框架和一組效勞,用 于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。 1.1 Java語(yǔ)言的特點(diǎn) 1.1.1 簡(jiǎn)單性 Java與C+鈉言非常相近,但Java比C+喻單,它拋棄了 C++4的一些不是絕對(duì)必要的 功能,如頭文件、預(yù)處理文件、指針、構(gòu)造、運(yùn)算符重載、多重繼承以及自動(dòng)強(qiáng)迫同型。Java 實(shí)現(xiàn)了自動(dòng)的垃圾收集,簡(jiǎn)化了存管理的工作。 1.1.2 平臺(tái)無(wú)關(guān)性 Java引進(jìn)虛擬機(jī)原理,并運(yùn)行于虛擬機(jī),實(shí)現(xiàn)不同平臺(tái)之間的Java接口。Java的數(shù)據(jù)類(lèi) 型與機(jī)器無(wú)關(guān)。 1.1.3 平安性 Java的編程類(lèi)似C++但舍棄了 C+柏勺指針對(duì)存儲(chǔ)器地址的直接操作,程序運(yùn)行時(shí),存由
11、 操作系統(tǒng)分配,這樣可以防止病毒通過(guò)指針入侵系統(tǒng)。它提供了平安管理器,防止程序的非 法訪問(wèn)。 1.1.4 面向?qū)ο? Java吸收了 C++S向?qū)ο蟮母拍?,將?shù)據(jù)封裝于類(lèi)中,實(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)。 1.1.6 強(qiáng)健性 Java致力于檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤,并自動(dòng)回收存,減少了存出錯(cuò)的可能性。 Java取消了 C語(yǔ)言的構(gòu)造、指針、#define語(yǔ)句、多重繼承、goto
12、語(yǔ)句、操作符、重載等不 易被掌握的特性,提供垃圾收集器自動(dòng)回收不用的存空間。 1.2 開(kāi)發(fā)工具Eclipse介紹 Eclipse是一個(gè)開(kāi)放源代碼的、基于 Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框 架和一組效勞,用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是, Eclipse附帶了一個(gè)標(biāo)準(zhǔn)的插 件集,包括 Java 開(kāi)發(fā)工具〔Java Development Tools JDTL 雖然大多數(shù)用戶很樂(lè)于將 Eclipse當(dāng)作Java IDE來(lái)使用,但Eclipse的目標(biāo)不僅限于 此。Eclipse還包括插件開(kāi)發(fā)環(huán)境〔Plug-in Development Environment, PD
13、日,這個(gè)組件主要 針對(duì)希望擴(kuò)展Eclipse的軟件開(kāi)發(fā)人員,因?yàn)樗试S他們構(gòu)建與 Eclipse環(huán)境無(wú)縫集成的工 具。 盡管Eclipse是使用Java語(yǔ)言開(kāi)發(fā)的,但它的用途并不限于 Java語(yǔ)言;例如,支持 諸如C/C++?編程語(yǔ)言的插件已經(jīng)可用,或預(yù)計(jì)會(huì)推出。 Eclipse框架還可用來(lái)作為與軟件 開(kāi)發(fā)無(wú)關(guān)的其他應(yīng)用程序類(lèi)型的根底,比方容管理系統(tǒng)等。 1.3 開(kāi)發(fā)工具JDK介紹 Sun Microsystems公司在推出Java語(yǔ)言的同時(shí),推出了一套開(kāi)發(fā)工具 JDK Sun提供的基于 字符模式的Java開(kāi)發(fā)工具包JDK Java開(kāi)發(fā)工具〔JDK是許多Java專(zhuān)家最初使用的開(kāi)發(fā)環(huán) 境。
14、Java是平臺(tái)無(wú)關(guān)的語(yǔ)言是因?yàn)橛?Java寫(xiě)的應(yīng)用程序不用修改就可在不同的軟硬件平臺(tái)上 運(yùn)行。 Java源程序編寫(xiě)借助于記事本編輯工具。 所有的Java文件編輯、編譯、調(diào)試、解釋運(yùn)行都是通過(guò)使用字符命令來(lái)執(zhí)行操作。JDK 由一個(gè)標(biāo)準(zhǔn)類(lèi)庫(kù)和一組建立,測(cè)試及建立文檔的Java實(shí)用程序組成。其核心Java AP是一些 預(yù)定義的類(lèi)庫(kù),開(kāi)發(fā)人員需要用這些類(lèi)來(lái)訪問(wèn)Java語(yǔ)言的功能。JDK是整個(gè)Java的核心, 包括了 Java運(yùn)行環(huán)境〔Java Runtime Environment t, 一堆Java工具和Java根底的類(lèi)庫(kù)。不管 什么Java應(yīng)用效勞器實(shí)質(zhì)都是置了某個(gè)版本的 JDK因此掌握J(rèn)
15、DK是學(xué)好Java的第一步。 最主流的JDK是Sun公司發(fā)布的JDK除了 Sun之外,還有很多公司和組織都開(kāi)發(fā)了自 己的JDK,傷J如 舊M公司開(kāi)發(fā)的JDK BEA公司的Jrocket,還有GNU組織開(kāi)發(fā)的JDK等等。 其中 舊M的JDK包含的JVM〔Java Virtual Machine〕運(yùn)行效率要比 Sun JDK&含的JVM高出 許多。而專(zhuān)門(mén)運(yùn)行在x86平臺(tái)的Jrocket在效勞端運(yùn)行效率也要比Sun JDK子很多。 1.4 應(yīng)用環(huán)境 (1)操作系統(tǒng): Windows 7, Windows xp 等。 (2)應(yīng)用軟件:jdk7.1 , eclipseo 2系統(tǒng)需求分析 2.
16、1 需求分析 本系統(tǒng)主要是完成貪吃蛇游戲的根本操作,用戶可以自己練習(xí)和娛樂(lè)。本系統(tǒng)需要滿足 以下幾點(diǎn)要求: (1)利用方向鍵來(lái)改變蛇的運(yùn)行方向。 (2)空格鍵或回車(chē)鍵暫?;蚶^續(xù)游戲,并在隨機(jī)的地方產(chǎn)生食物,PgUp和PgDn控制速 度快慢。 (3)吃到食物就變成新的蛇體,碰到壁或自身那么游戲完畢,否那么正常運(yùn)行。 2.2 可行性分析 貪吃蛇游戲是一種簡(jiǎn)單的群眾的游戲,自從計(jì)算機(jī)實(shí)現(xiàn)以來(lái),深受廣闊電腦玩家的喜愛(ài), 做一個(gè)簡(jiǎn)單的貪吃蛇小游戲,也比擬符合現(xiàn)代人用來(lái)打發(fā)閑暇時(shí)光的方式。 貪吃蛇的核心算法是如何實(shí)現(xiàn)移動(dòng)和吃掉食物,沒(méi)有碰到食物的時(shí)候,把當(dāng)前運(yùn)動(dòng)方向 上的下個(gè)節(jié)點(diǎn)入隊(duì),
17、并以蛇節(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)、和碰到墻壁或 自身死亡,能夠暫停和開(kāi)場(chǎng)。 本次設(shè)計(jì)主要運(yùn)用java語(yǔ)言來(lái)完成。Java語(yǔ)言是一種跨平臺(tái),適合于分布式計(jì)算環(huán)境的 面向?qū)ο缶幊陶Z(yǔ)言,用Java寫(xiě)的應(yīng)用程序不用修改就可在不同的軟硬件平臺(tái)上運(yùn)行。 由于Java主要用于網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā),因此對(duì)平安性有較高的要求。如果沒(méi)有平安保 證,用戶從網(wǎng)絡(luò)下載程序執(zhí)行就非常危險(xiǎn)。Java通過(guò)自己的平安機(jī)制防止了病毒程序的產(chǎn)生 和下
18、載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞。 3系統(tǒng)概要設(shè)計(jì) 3.1 游戲流程圖 圖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è)類(lèi)文件。 java源文件及其功能如表所示。 表3-1 java源文件及其功能 序號(hào) 文件名 主要功能 1 MainFrame 該文件為程序入口,含有main方法。
19、 2 GameOptionPanel 實(shí)現(xiàn)菜單控制運(yùn)行等總體要求,實(shí)現(xiàn)方向鍵控制蛇 的方向,空格鍵控制游戲暫?;蚶^續(xù)等。 3 SnakeListener 蛇的監(jiān)聽(tīng)器 4 GameListener 游戲監(jiān)聽(tīng)器 5 Food 該文件實(shí)現(xiàn)組成蛇身的單位 -食物。 6 Ground 該文件實(shí)現(xiàn)障礙物-石頭 7 Snake 該文件實(shí)現(xiàn)蛇類(lèi) 8 Global 該文件為工具類(lèi),實(shí)現(xiàn)一些配置 9 Controller 控制器,控制蛇、食物、石頭 10 GamePanel 游戲的顯示界面設(shè)置 2、主要類(lèi)之間的對(duì)應(yīng)關(guān)系如下: 圖3-3主要類(lèi)之間的關(guān)系
20、 3、因?yàn)樯卟荒苤苯硬僮黠@示面板〔GamePanel,所以定義一個(gè)監(jiān)視器SnakeListener里面有 兩個(gè)方法:snakeMoved〔〕和 snakeEatFood() 圖3-4通過(guò)事件監(jiān)聽(tīng)建立聯(lián)系 3.5 系統(tǒng)數(shù)據(jù)構(gòu)造設(shè)計(jì) 3.5.1 蛇、石頭、食物的表示 用一個(gè)大的表格來(lái)表示顯示區(qū)域, 里面的格子就是組成蛇的根本單位, 一個(gè)格子可以代 表一個(gè)食物,也可以代表一個(gè)石頭,幾塊連在一起的石頭就可以代表一條蛇。使用坐標(biāo)來(lái)區(qū) 分這些格子。 x坐標(biāo) - 01234567S910 5 6 圖3-5蛇、石頭、食物的表示 0 12 Y坐標(biāo) 4 這里用一個(gè)集合來(lái)
21、存儲(chǔ)這些坐標(biāo),并且要求能夠區(qū)分出蛇頭和蛇尾。 3.5.2 蛇的移動(dòng) 蛇向前移動(dòng)一步,可以看作是蛇頭前面增加了一個(gè)節(jié)點(diǎn),蛇的尾巴上少了一個(gè)節(jié)點(diǎn)〔即 去尾,加頭〕 幽后 圖3-6蛇的移動(dòng) 3.5.3 存儲(chǔ)蛇身的數(shù)據(jù)構(gòu)造 由于要區(qū)分蛇頭和蛇尾,因此這個(gè)數(shù)據(jù)構(gòu)造必須是有序的。另一方面,我們需要經(jīng)常的 訪問(wèn)第一個(gè)和最后一個(gè)節(jié)點(diǎn),所以LinkedLis最適宜。因?yàn)樗術(shù)etFirst(), getLast(),和 removeLast(。法。 X坐標(biāo) (2J)| (L2) 蛇頭 (3i2) — 0
22、 2 3 0 1 2 3 向上移動(dòng).丫空標(biāo)短1 向下移動(dòng),Y坐標(biāo)加1 向左移動(dòng).K坐標(biāo)遺I 向右移動(dòng),X坐標(biāo)加1 圖3-7根據(jù)原蛇頭和方向計(jì)算新蛇頭的坐標(biāo) 3.5.4 蛇的移動(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。 在Snaked增加蛇的方向向量: public static final int UP = 1 上 public static final int DOWN = -1 下 p
23、ublic static final int LEFT = 2^ public static final int RIGHT = -2^ 3.5.5 如何顯示蛇身 顯示蛇身,其實(shí)就是填充,用顏色填充格子。 需要4個(gè)參數(shù),像素坐標(biāo)x,像素坐標(biāo)y,格子寬度,格子高度。 像素坐標(biāo)就是矩形左上角的坐標(biāo) 這個(gè)點(diǎn)的像興隼除為 k坐標(biāo):搟f的競(jìng)度reft ¥生&格子的在度* top loft是這個(gè)一于陽(yáng)左於界的距寓 top心這個(gè)格「史上H不怕思離 圖3-8格子坐標(biāo)和像素坐標(biāo) 3.5.6 蛇身的移動(dòng)方向 〔1〕相反方向 和上一次移動(dòng)的方向相反的方向稱(chēng)為相反方向,這種輸入應(yīng)該忽略。這樣
24、可以防止蛇從 自己的身體中穿過(guò)。 〔2〕無(wú)效方向 在蛇的這一次移動(dòng)之后和下一次移動(dòng)之前這個(gè)時(shí)間間隔輸入了多個(gè)非相反方向,只有最 后一個(gè)是有效方向,其他的都是無(wú)效方向。 蛇的最終運(yùn)動(dòng)方向以有效方向?yàn)闇?zhǔn)。 (3) Snak并增加監(jiān)聽(tīng)器,并另外啟動(dòng)一個(gè)線程來(lái)不斷調(diào)用蛇的move(),在Snak并提供一個(gè) 啟動(dòng)線程的方法。 3.5.7吃到食物判定 通過(guò)判定坐標(biāo)是否重合來(lái)判斷,只需要判斷蛇頭是否和食物重合就可以了, 因?yàn)樯叩纳?體都是走蛇頭走過(guò)的地方,蛇吃掉食物后身體就會(huì)變長(zhǎng)。在 Controller的snakeMoved中添 加如下代碼: /*判斷是否吃到食物*/ if (foo
25、d != null && food.isSnakeEatFood(snake)) { /*吃到食物后,蛇增加身體,再重新丟一個(gè)食物*/ snake.eatFood(); food.setLocation(ground == null ? food.getNew() : ground .getFreePoint()); }/*如果吃到食物,就肯定不會(huì)吃到石頭*/ else if (ground != null && ground.isSnakeEatRock(snake)) { /*如果吃到的是石頭,或吃到自己的身體,就讓蛇死掉*/ stopGame(); } if (snake
26、.isEatBody()) stopGame(); 4系統(tǒng)詳細(xì)設(shè)計(jì) 4.1 程序設(shè)計(jì) 4.1.1 主類(lèi) MainFrame 〔1〕主類(lèi)為此程序的入口,定義了 MainFrame的對(duì)象frame,開(kāi)場(chǎng)運(yùn)行此程序 〔2〕源代碼見(jiàn)文件 MainFrame.Java 4.1.2 類(lèi) MainFrame 〔1〕成員變量見(jiàn)表4-1 表4-1主要成員變量 成員變量描述 變量類(lèi)型 名稱(chēng) 選項(xiàng)面板 private GameOptionPanel optionPanel 游戲面板 private GamePanel gamePanel 蛇類(lèi)對(duì)象 private Snake
27、 snake 石頭對(duì)象 private Ground ground 食物對(duì)象 private Food food 控制對(duì)象 private Controller controller 速度標(biāo)簽 private JLabel infoLabel 〔2〕方法見(jiàn)表4-2 方法名 功能 gameOver() 游戲完畢 gameStart() 游戲開(kāi)場(chǎng) gameContinue() 游戲繼續(xù) gamePause() 游戲暫停 4.1.3 類(lèi) Snake 〔1〕成員變量見(jiàn)表4-3 表4-3主要成員變量 成員變量描述 變量類(lèi)型 名稱(chēng) 上下左
28、右(方向)
int
UP、DOWN、LEFT RIGHT
蛇體
LinkedList
29、) 判斷食物是否被蛇吃掉,如果食物在蛇運(yùn)行方向的 正前方,并且與蛇頭接觸,那么被吃掉 設(shè)置蛇頭的顏色 設(shè)置蛇身的顏色 改變運(yùn)行方向 蛇在運(yùn)行中所采取的措施 開(kāi)啟一個(gè)新的線程驅(qū)動(dòng)蛇定時(shí)移動(dòng) 4.1.4 類(lèi) Food 〔1〕成員變量見(jiàn)表4-5 表4-5主要成員變量 成員變量描述 變量類(lèi)型 名稱(chēng) 顏色 private Color color 隨機(jī) private Random random 〔2〕源代碼見(jiàn)文件Food.java 4.1.5 類(lèi) Controller 該類(lèi)包含控制器和處理按鍵邏輯,控制器,控制Ground, Snake^ Food,負(fù)責(zé)
30、游戲的邏 輯處理按鍵事件,實(shí)現(xiàn)了 SnakeListener接口的snakeMoved()方法,可以處理Snake觸發(fā)的事 件,該類(lèi)繼承KeyAdapter類(lèi)并且覆蓋keyPressed方法:處理按鍵事件,根據(jù)按鍵不同,發(fā) 出不同的指令: UP:改變蛇的移動(dòng)方向?yàn)橄蛏? DOWN:改變蛇的移動(dòng)方向?yàn)橄蛳? LEFT:改變蛇的移動(dòng)方向?yàn)橄蜃? RIGHT:改變蛇的移動(dòng)方向?yàn)橄蛴? SPACE暫停/繼續(xù) PgUp/PgDn:加速/減速蛇的移動(dòng) Y:開(kāi)場(chǎng)新游戲的方法 4.1.6 類(lèi) Ground 可以叫做地形,或地面,和食物一樣, Ground也有x, y坐標(biāo)和顏色等屬性,構(gòu)造方法 Gr
31、ound()初始化地圖,設(shè)置格局,可以通過(guò)setRockColor(方法設(shè)置石頭的顏色,方法 isSnakeEatRock刻斷蛇是否吃到食物,最后運(yùn)用drawMe()方法顯示石頭。 源代碼見(jiàn)文件Ground.java 4.1.7 類(lèi) GameListener 此類(lèi)為游戲監(jiān)聽(tīng)類(lèi),實(shí)現(xiàn)游戲的監(jiān)聽(tīng)功能。 源代碼見(jiàn)文件GameListener.java 4.1.8 類(lèi) SnakeListener 此類(lèi)為蛇的監(jiān)聽(tīng)類(lèi),實(shí)現(xiàn)蛇運(yùn)動(dòng)的監(jiān)聽(tīng),蛇移動(dòng)的監(jiān)聽(tīng)snakeMoved()蛇吃到食物的監(jiān)聽(tīng) snakeEatFood() 源代碼見(jiàn)文件SnakeListener.java 4.1.9 類(lèi) G
32、lobal 工具類(lèi) 此類(lèi)中存放了其他類(lèi)中用到的一些常量:格子的像素〔寬度,高度〕 、蛇的初始長(zhǎng)度和 初始速度等。 源代碼見(jiàn)文件Global.java 4.1.10 類(lèi) GameOptionPanel 此類(lèi)為游戲的選項(xiàng)面板類(lèi),實(shí)現(xiàn)游戲面板的控制。 源代碼見(jiàn)文件 GameOptionPanel.java 4.1.11 類(lèi) GamePanel 此類(lèi)為游戲的顯示界面設(shè)置,可以通過(guò) setBackgroundColorQ?置游戲的背景顏色。 源代碼見(jiàn)文件GamePanel.java 4.2 貪吃蛇游戲各功能界面截圖 4.2.1 游戲的初始界面 圖4-1初始界面 圖4-2控制
33、面板 帶示熊期卷飆 圖4-3速度標(biāo)簽 4.2.2游戲運(yùn)行過(guò)程界面 〔1〕鼠標(biāo)點(diǎn)擊開(kāi)場(chǎng)新游戲按鈕,開(kāi)場(chǎng)游戲: 圖4-4開(kāi)場(chǎng)游戲 圖4-5開(kāi)場(chǎng)游戲〔有加速 有改顏色 有網(wǎng)格〕 〔2〕按空格鍵,游戲開(kāi)場(chǎng)運(yùn)行,蛇開(kāi)場(chǎng)移動(dòng),并且吃到一次食物即紅色方塊后就變成蛇體: 圖4-6吃到食物身體變長(zhǎng)
34、 〔3〕按方向鍵改變蛇的運(yùn)行方向,并且碰壁后從新開(kāi)場(chǎng)游戲,紅色方塊隨機(jī)地方產(chǎn)生: 圖4-7碰壁死亡 5系統(tǒng)測(cè)試 5.1 測(cè)試的意義 系統(tǒng)測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程,成功的測(cè)試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯(cuò)誤 的測(cè)試。測(cè)試的目的就是希望能以最少的人力和時(shí)間發(fā)現(xiàn)潛在的各種錯(cuò)誤和缺陷。應(yīng)根據(jù)開(kāi) 發(fā)各階段的需求、設(shè)計(jì)等文檔或程序的部構(gòu)造精心設(shè)計(jì)測(cè)試用例,并利用這些實(shí)例來(lái)運(yùn)行程 序,以便發(fā)現(xiàn)錯(cuò)誤。系統(tǒng)測(cè)試是保證系統(tǒng)質(zhì)
35、量和可靠性的關(guān)鍵步驟,是對(duì)系統(tǒng)開(kāi)發(fā)過(guò)程中的 系統(tǒng)分析系統(tǒng)設(shè)計(jì)和實(shí)施的最后復(fù)查。 根據(jù)測(cè)試的概念和目的,在進(jìn)展信息系統(tǒng)測(cè)試時(shí)應(yīng)遵 循以根本原那么。 5.2 測(cè)試過(guò)程 (1)擬定測(cè)試方案。在制定測(cè)試方案時(shí),要充分考慮整個(gè)工程的開(kāi)發(fā)時(shí)間和開(kāi)發(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í)候,可綜合利用前面介
36、紹的 測(cè)試用例和設(shè)計(jì)技術(shù),產(chǎn)生測(cè)試設(shè)計(jì)說(shuō)明文檔,其容主要有被測(cè)工程、輸人數(shù)據(jù)、測(cè)試過(guò)程、 預(yù)期輸出結(jié)果等。 ⑷實(shí)施測(cè)試。測(cè)試的實(shí)施階段是由一系列的測(cè)試周期組成的。在每個(gè)測(cè)試周期中,測(cè)試 人員和開(kāi)發(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)展概要說(shuō)明,列 出測(cè)試的結(jié)論,指出缺陷和錯(cuò)誤,另外,給出一些建議,如可采用的修改方法,各項(xiàng)修改預(yù) 計(jì)的工作量及修改的負(fù)責(zé)人員。 5.3 測(cè)試結(jié)果 貪吃蛇測(cè)試情況如表5-1所示: 表5-1貪吃蛇測(cè)試情況 執(zhí)行的操作 期望的結(jié)果 實(shí)際結(jié)果
37、 翻開(kāi)文件,運(yùn)行代碼 代碼正常運(yùn)行,無(wú)錯(cuò)誤信息 符合期望結(jié)果 點(diǎn)擊“開(kāi)場(chǎng)游戲〃 貪吃蛇出現(xiàn),食物出現(xiàn) 符合期望結(jié)果 點(diǎn)擊“暫停游戲〃 游戲暫停,蛇和食物都靜止 符合期望結(jié)果 點(diǎn)擊“停頓游戲〃 游戲停頓,重新開(kāi)場(chǎng)新游戲 符合期望結(jié)果 利用方向鍵控制方向,空格鍵暫 停游戲 蛇運(yùn)行方向正常,空格鍵暫停游 戲 符合期望結(jié)果 鍵盤(pán)按PgUp/PgDn 蛇加速/減速運(yùn)動(dòng) 符合期望結(jié)果 點(diǎn)擊“設(shè)置背景顏色〃 出現(xiàn)顏色選項(xiàng),背景顏色變化 符合期望結(jié)果 點(diǎn)擊“設(shè)置蛇頭 /蛇身/食物顏 色〃 蛇頭、蛇身和食物顏色變化明顯 且顯示正常效果 符合期望結(jié)果 “顯示
38、網(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é)果 通過(guò)以上測(cè)試,驗(yàn)證程序運(yùn)行正常,沒(méi)有發(fā)現(xiàn)什么錯(cuò)誤 結(jié)論 畢業(yè)設(shè)計(jì)是我們作為學(xué)生在學(xué)習(xí)階段的最后一個(gè)環(huán)節(jié),是對(duì)所學(xué)根底知識(shí)和專(zhuān)業(yè)知識(shí)的 一種綜合應(yīng)用,是一種綜合的再學(xué)習(xí)、再提高的過(guò)程,這一過(guò)程對(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ì)工
39、作的指導(dǎo)和發(fā)動(dòng)教育。在大學(xué)的學(xué)習(xí) 過(guò)程中,畢業(yè)設(shè)計(jì)是一個(gè)重要的環(huán)節(jié),是我們步入社會(huì)參與實(shí)際工作的一次極好的演示,也 是對(duì)我們自學(xué)能力和解決問(wèn)題能力的一次考驗(yàn),是學(xué)校生活與社會(huì)生活間的過(guò)渡。 在完成畢業(yè)設(shè)計(jì)的這段時(shí)間里,我收獲頗多: 通過(guò)這次的java貪吃蛇游戲設(shè)計(jì)我了解到j(luò)ava語(yǔ)言的特點(diǎn):簡(jiǎn)單性、面向?qū)ο?、平臺(tái) 無(wú)關(guān)性、可移植性、解釋性、高性能、動(dòng)態(tài)性、可靠性和平安性、多線程、分布式處理等, 在課程設(shè)計(jì)過(guò)程中不僅穩(wěn)固了我們以前的根底理論知識(shí),而且使我們各個(gè)方面的能力都有很 大的提高。從一開(kāi)場(chǎng)的無(wú)從下手,到不斷的查閱資料,圖書(shū)館借書(shū),再到請(qǐng)教教師的幫助, 這些都很好的鍛煉了我們理論聯(lián)系實(shí)
40、際,與具體工程、課題相結(jié)合的能力,開(kāi)發(fā)、設(shè)計(jì)游戲 的能力進(jìn)一步在課程設(shè)計(jì)中表達(dá)。這讓我學(xué)會(huì)了很多,為以后的學(xué)習(xí)和工作加強(qiáng)。在設(shè)計(jì)過(guò) 程中,總是遇到這樣或那樣的問(wèn)題。有時(shí)發(fā)現(xiàn)一個(gè)問(wèn)題的時(shí)候,需要做大量的工作,花大量 的時(shí)間才能解決。為以后的工作積累了經(jīng)歷,增強(qiáng)了信心。既讓我們懂得了怎樣把理論應(yīng)用 于實(shí)際,又讓我們懂得了在實(shí)踐中遇到的問(wèn)題怎樣用理論去解決,它更是自己綜合運(yùn)用所學(xué) 知識(shí),發(fā)現(xiàn)、提出、分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié)。其實(shí)我們可以把畢業(yè)設(shè) 計(jì)看作是一個(gè)社會(huì)實(shí)踐的容,在完成畢業(yè)設(shè)計(jì)的時(shí)候,所用到的知識(shí),以及所具備的專(zhuān)注力 和責(zé)任心,同樣在以后的社會(huì)工作中是必不可少的。 任何
41、事情都是一分為二的,在畢業(yè)設(shè)計(jì)過(guò)程中也暴露出自己專(zhuān)業(yè)根底的很多缺乏之處。 例如對(duì)java語(yǔ)言的綜合運(yùn)用的技巧的缺乏,對(duì)一些 java類(lèi)的理解不夠透徹,等等。感覺(jué)自 己所學(xué)習(xí)的只是冰山一角,面對(duì)稍微復(fù)雜的東西還是沒(méi)能得心應(yīng)手,再一次體會(huì)到學(xué)無(wú)止境 的意義了。 這款游戲的優(yōu)點(diǎn),就是簡(jiǎn)單的畫(huà)面和容易的操作很容易使玩家就上手,適合不通年齡段 的玩家?jiàn)蕵?lè)。當(dāng)然這款游戲也存在有缺乏的地方,有些功能還是沒(méi)有實(shí)現(xiàn)。通過(guò)這次設(shè)計(jì)過(guò) 程中,我查閱了大量的資料,對(duì)java有了更深刻的認(rèn)識(shí),通過(guò)這次的設(shè)計(jì),更提高了我在程 序設(shè)計(jì)和調(diào)試方面的技巧,更重要的是我認(rèn)識(shí)了自己的缺乏, 在編程方面我還需要努力學(xué)習(xí) 來(lái)充實(shí)
42、自己,來(lái)獲取更大的收獲。 致 大學(xué)三年學(xué)習(xí)時(shí)光已經(jīng)接近尾聲, 畢業(yè)論文的完成也隨之畫(huà)上了圓滿的句號(hào), 在此我想 對(duì)我的學(xué)校,我的父母、親人們,我的教師和同學(xué)們表達(dá)我由衷的意。感我的家人對(duì)我大學(xué) 三年學(xué)習(xí)的默默支持;感我的學(xué)校給了我在大學(xué)三年深造的時(shí)機(jī),讓我能繼續(xù)學(xué)習(xí)和提高; 感所有教過(guò)我的教師和同學(xué)們?nèi)陙?lái)的關(guān)心和鼓勵(lì)。 當(dāng)然,這次的畢業(yè)設(shè)計(jì)得到了很多教師和同學(xué)的幫助,首先,最主要感的是我的指導(dǎo)教 師一一王莉教師,她為人隨和熱情,治學(xué)嚴(yán)謹(jǐn)細(xì)心。王教師始終認(rèn)真負(fù)責(zé)地給予我深刻而細(xì) 致地指導(dǎo),幫助我拓寬思路,精心點(diǎn)撥、熱忱鼓勵(lì)。在整個(gè)畢業(yè)設(shè)計(jì)過(guò)程中她給了我很大的 幫助:在畢業(yè)設(shè)計(jì)選題時(shí)她給了
43、我很多的意見(jiàn),同時(shí)又幫我具體分析使我最后選擇了基于 java游戲設(shè)計(jì)這個(gè)具體目標(biāo),讓我的畢業(yè)設(shè)計(jì)有了具體的方向。在論文提綱制定時(shí),我的思 路不是很清晰,經(jīng)過(guò)教師的幫助,讓我在寫(xiě)作時(shí)思路更加清晰和明確。在完成初稿后,教師 認(rèn)真查看了我的文章,指出了我存在的很多問(wèn)題,然后不斷的修改完善。在此十分感王教師 的細(xì)心指導(dǎo),才能讓我順利完成畢業(yè)設(shè)計(jì)論文。 最后,感在整個(gè)畢業(yè)設(shè)計(jì)期間和我密切合作的同學(xué), 和曾經(jīng)在各個(gè)方面給予過(guò)我?guī)椭?伙伴們,在此,我再一次真誠(chéng)地向幫助過(guò)我的教師和同學(xué)表示衷心的感! 參考文獻(xiàn) 1、思民,Java開(kāi)發(fā)技術(shù)與工程實(shí)踐[M].清華大學(xué),2010-11 2、彬彬,馬文強(qiáng).Eclipse應(yīng)用開(kāi)發(fā)完全手冊(cè)[M].人民郵電,2007-9 3、慶)克羅夫特著.暉譯,Java游戲高級(jí)編程[M].清華大學(xué),2005-8-1 4、王曉東,計(jì)算機(jī)算法設(shè)計(jì)與分析(第三版)[M].電子工業(yè),2009-12-1 5、宛延闿,Java程序設(shè)計(jì)實(shí)例剖析.,國(guó)防工業(yè),2003-3 6、包汝,Java十大經(jīng)典案例.,科學(xué),2005-1 7、阿奇,Java實(shí)用教程〔第二版〕,電子工業(yè),2009-8-1
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新人教版小學(xué)數(shù)學(xué)二年級(jí)下冊(cè)《總復(fù)習(xí)圖形的運(yùn)動(dòng)》ppt課件
- 鉆石小鳥(niǎo)電子商務(wù)案例分析x
- 貴州專(zhuān)版201x中考語(yǔ)文復(fù)習(xí)第二輪古詩(shī)文閱讀專(zhuān)題十文言文閱讀專(zhuān)項(xiàng)訓(xùn)練二課外古詩(shī)詞賞析課件
- 計(jì)算機(jī)發(fā)展簡(jiǎn)史
- 五年級(jí)最小公倍數(shù)
- 分?jǐn)?shù)除法應(yīng)用題(一)1
- 人教版小學(xué)科學(xué)三年級(jí)《空氣占據(jù)空間嗎》
- 腹腔鏡脾切除技巧探討
- 水下溷凝土的灌注
- 主題班會(huì)關(guān)注小環(huán)境共享大健康
- 章引言數(shù)字圖像處理
- 學(xué)情通報(bào)會(huì)二課件
- 醫(yī)療企業(yè)組織氣氛建設(shè)方案分析
- 數(shù)據(jù)中心供配電系統(tǒng)概述
- 小學(xué)三年級(jí)口算題卡課件