




已閱讀5頁(yè),還剩18頁(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)介
畢業(yè)設(shè)計(jì)論文畢業(yè)設(shè)計(jì)論文 作者 學(xué)號(hào) 系部 專業(yè) 題目 基于 Java 的貪吃蛇游戲設(shè)計(jì) 指導(dǎo)教師 評(píng)閱教師 完成時(shí)間 畢業(yè)設(shè)計(jì)畢業(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)了游戲的 開始 暫停 結(jié)束 能夠?qū)崿F(xiàn)加速和減速 通過(guò)本游戲的開發(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) 試過(guò)程和功能測(cè)試結(jié)果 關(guān)鍵詞 Java eclipse 貪吃蛇 開發(fā)流程 畢業(yè)設(shè)計(jì)畢業(yè)設(shè)計(jì) 論文論文 外文摘要外文摘要 TitleTitle Java based game design Snake Abstract Snake game is a classic game using the Java language development it 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 game 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 related technologies 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 detailed 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 showing 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 I 目錄 1 緒論 1 1 1 JAVA語(yǔ)言的特點(diǎn) 1 1 2 開發(fā)工具 ECLIPSE介紹 2 1 3 開發(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ù)結(jié)構(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 1 1 緒論緒論 貪吃蛇是世界知名的益智類小游戲 選擇這個(gè)題目一方面是為了將我們自己的所學(xué)知 識(shí)加以運(yùn)用 另一方面 我希望通過(guò)自己的所學(xué)知識(shí)把它剖析開來(lái) 通過(guò)自己的動(dòng)手實(shí)踐 真正的了解它的本質(zhì)和精髓 希望通過(guò)這次實(shí)踐 能從中提高自己的編程能力 并從中學(xué) 會(huì)從零開始分析設(shè)計(jì)程序 達(dá)到學(xué)以致用 活學(xué)活用的目的 另外 通過(guò)本游戲的開發(fā) 達(dá)到學(xué)習(xí) Java 技術(shù)和熟悉軟件開發(fā)流程的目的 本游戲的開發(fā)語(yǔ)言為 Java 開發(fā)工具選用 Eclipse Java 是一種簡(jiǎn)單的 面向?qū)ο?的 分布式的 解釋型的 健壯安全的 結(jié)構(gòu)中立的 可移植的 性能優(yōu)異 多線程的動(dòng) 態(tài)語(yǔ)言 這里采用 Java 作為開發(fā)語(yǔ)言主要是基于 Java 的面向?qū)ο蠛涂梢浦残?Eclipse 是一個(gè)開放源代碼的 基于 Java 的可擴(kuò)展開發(fā)平臺(tái) 就其本身而言 它只是一個(gè)框架和 一組服務(wù) 用于通過(guò)插件組件構(gòu)建開發(fā)環(huán)境 1 11 1 JavaJava 語(yǔ)言的特點(diǎn)語(yǔ)言的特點(diǎn) 1 1 1 簡(jiǎn)單性 Java 與 C 語(yǔ)言非常相近 但 Java 比 C 簡(jiǎn)單 它拋棄了 C 中的一些不是絕對(duì)必要 的功能 如頭文件 預(yù)處理文件 指針 結(jié)構(gòu) 運(yùn)算符重載 多重繼承以及自動(dòng)強(qiáng)迫同型 Java 實(shí)現(xiàn)了自動(dòng)的垃圾收集 簡(jiǎn)化了內(nèi)存管理的工作 1 1 2 平臺(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) 1 1 3 安全性 Java 的編程類似 C 但舍棄了 C 的指針對(duì)存儲(chǔ)器地址的直接操作 程序運(yùn)行時(shí) 內(nèi) 存由操作系統(tǒng)分配 這樣可以避免病毒通過(guò)指針入侵系統(tǒng) 它提供了安全管理器 防止程 序的非法訪問(wèn) 1 1 4 面向?qū)ο?Java 吸收了 C 面向?qū)ο蟮母拍?將數(shù)據(jù)封裝于類中 實(shí)現(xiàn)了程序的簡(jiǎn)潔性和便于維 護(hù)性 使程序代碼可以只需一次編譯就可反復(fù)利用 2 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 健壯性 Java 致力于檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤 并自動(dòng)回收內(nèi)存 減少了內(nèi)存出錯(cuò)的可 能性 Java 取消了 C 語(yǔ)言的結(jié)構(gòu) 指針 define 語(yǔ)句 多重繼承 goto 語(yǔ)句 操作符 重載等不易被掌握的特性 提供垃圾收集器自動(dòng)回收不用的內(nèi)存空間 1 21 2 開發(fā)工具開發(fā)工具 EclipseEclipse 介紹介紹 Eclipse 是一個(gè)開放源代碼的 基于 Java 的可擴(kuò)展開發(fā)平臺(tái) 就其本身而言 它只 是一個(gè)框架和一組服務(wù) 用于通過(guò)插件組件構(gòu)建開發(fā)環(huán)境 幸運(yùn)的是 Eclipse 附帶了一 個(gè)標(biāo)準(zhǔn)的插件集 包括 Java 開發(fā)工具 Java Development Tools JDT 雖然大多數(shù)用戶很樂于將 Eclipse 當(dāng)作 Java IDE 來(lái)使用 但 Eclipse 的目標(biāo)不僅 限于此 Eclipse 還包括插件開發(fā)環(huán)境 Plug in Development Environment 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)用程序類型的基礎(chǔ) 比如內(nèi)容管理系統(tǒng)等 1 31 3 開發(fā)工具開發(fā)工具 JDKJDK 介紹介紹 Sun Microsystems 公司在推出 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)橛?Java 寫的應(yīng)用程序不用修改就可在不同的 軟硬件平臺(tái)上運(yùn)行 Java 源程序編寫借助于記事本編輯工具 所有的 Java 文件編輯 編譯 調(diào)試 解釋運(yùn)行都是通過(guò)使用字符命令來(lái)執(zhí)行操作 JDK 由一個(gè)標(biāo)準(zhǔn)類庫(kù)和一組建立 測(cè)試及建立文檔的 Java 實(shí)用程序組成 其核心 Java API 是一些預(yù)定義的類庫(kù) 開發(fā)人員需要用這些類來(lái)訪問(wèn) Java 語(yǔ)言的功能 JDK 是整個(gè) Java 的核心 包括了 Java 運(yùn)行環(huán)境 Java Runtime Environment 一堆 Java 工具和 Java 基 3 礎(chǔ)的類庫(kù) 不論什么 Java 應(yīng)用服務(wù)器實(shí)質(zhì)都是內(nèi)置了某個(gè)版本的 JDK 因此掌握 JDK 是學(xué) 好 Java 的第一步 最主流的 JDK 是 Sun 公司發(fā)布的 JDK 除了 Sun 之外 還有很多公司和組織都開發(fā)了 自己的 JDK 例如 IBM 公司開發(fā)的 JDK BEA 公司的 Jrocket 還有 GNU 組織開發(fā)的 JDK 等 等 其中 IBM 的 JDK 包含的 JVM Java Virtual Machine 運(yùn)行效率要比 Sun JDK 包含的 JVM 高出許多 而專門運(yùn)行在 x86 平臺(tái)的 Jrocket 在服務(wù)端運(yùn)行效率也要比 Sun JDK 好很 多 1 41 4 應(yīng)用環(huán)境應(yīng)用環(huán)境 1 操作系統(tǒng) Windows 7 Windows xp 等 2 應(yīng)用軟件 jdk7 1 eclipse 2 2 系統(tǒng)需求分析系統(tǒng)需求分析 2 12 1 需求分析需求分析 本系統(tǒng)主要是完成貪吃蛇游戲的基本操作 用戶可以自己練習(xí)和娛樂 本系統(tǒng)需要滿 足以下幾點(diǎn)要求 1 利用方向鍵來(lái)改變蛇的運(yùn)行方向 2 空格鍵或回車鍵暫?;蚶^續(xù)游戲 并在隨機(jī)的地方產(chǎn)生食物 PgUp 和 PgDn 控制 速度快慢 3 吃到食物就變成新的蛇體 碰到壁或自身則游戲結(jié)束 否則正常運(yùn)行 2 22 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ì) 并以游戲框架內(nèi)部背景色重繪出隊(duì)的節(jié)點(diǎn) 這樣就可以達(dá)到移動(dòng)的效果 而在吃到食物的 時(shí)候 則只需把食物入隊(duì)即可 實(shí)現(xiàn)貪吃蛇的基本的蛇身移動(dòng) 吃到食物身體增長(zhǎng) 和碰 到墻壁或自身死亡 能夠暫停和開始 本次設(shè)計(jì)主要運(yùn)用 java 語(yǔ)言來(lái)完成 Java 語(yǔ)言是一種跨平臺(tái) 適合于分布式計(jì)算環(huán) 4 境的面向?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 通過(guò)自己的安全機(jī)制防止了病毒程序的產(chǎn) 生和下載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞 3 3 系統(tǒng)概要設(shè)計(jì)系統(tǒng)概要設(shè)計(jì) 3 13 1 游戲流程圖游戲流程圖 圖 3 1 游戲流程圖 進(jìn)入游戲界面 點(diǎn)擊開始按鈕 游戲開始 蛇隨機(jī)產(chǎn)生 O 操作 空格 暫停 上移 下移 左移 右移 沒有吃到食物 且碰到邊界 游戲中途欲中斷 稍候進(jìn)行游戲 單擊重新開始游戲單擊暫停游戲 單擊開始游戲 游戲恢復(fù)正常 5 3 23 2 游戲整體結(jié)構(gòu)圖游戲整體結(jié)構(gòu)圖 圖 3 2 游戲整體結(jié)構(gòu)圖 3 33 3 設(shè)計(jì)目標(biāo)設(shè)計(jì)目標(biāo) 本系統(tǒng)是針對(duì)貪吃蛇小游戲的 Java 程序 利用方向鍵來(lái)改變蛇的運(yùn)行方向 空格鍵暫 停或繼續(xù)游戲 并在隨機(jī)的地方產(chǎn)生食物 吃到食物就變成新的蛇體 碰到壁或自身則游 戲結(jié)束 否則正常運(yùn)行 3 43 4 系統(tǒng)功能模塊系統(tǒng)功能模塊 1 本系統(tǒng)共包括 10 個(gè)類文件 java 源文件及其功能如表所示 6 表 3 1 java 源文件及其功能 2 主要類之間的對(duì)應(yīng)關(guān)系如下 圖 3 3 主要類之間的關(guān)系 3 因?yàn)樯卟荒苤苯硬僮黠@示面板 GamePanel 所以定義一個(gè)監(jiān)視器 SnakeListener 里 面有兩個(gè)方法 snakeMoved 和 snakeEatFood 序號(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è)置 7 圖 3 4 通過(guò)事件監(jiān)聽建立聯(lián)系 3 53 5 系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 3 5 1 蛇 石頭 食物的表示 用一個(gè)大的表格來(lái)表示顯示區(qū)域 里面的格子就是組成蛇的基本單位 一個(gè)格子可以 代表一個(gè)食物 也可以代表一個(gè)石頭 幾塊連在一起的石頭就可以代表一條蛇 使用坐標(biāo) 來(lái)區(qū)分這些格子 圖 3 5 蛇 石頭 食物的表示 這里用一個(gè)集合來(lái)存儲(chǔ)這些坐標(biāo) 并且要求能夠區(qū)分出蛇頭和蛇尾 3 5 2 蛇的移動(dòng) 蛇向前移動(dòng)一步 可以看作是蛇頭前面增加了一個(gè)節(jié)點(diǎn) 蛇的尾巴上少了一個(gè)節(jié)點(diǎn) 即去尾 加頭 8 圖 3 6 蛇的移動(dòng) 3 5 3 存儲(chǔ)蛇身的數(shù)據(jù)結(jié)構(gòu) 由于要區(qū)分蛇頭和蛇尾 因此這個(gè)數(shù)據(jù)結(jié)構(gòu)必須是有序的 另一方面 我們需要經(jīng)常 的訪問(wèn)第一個(gè)和最后一個(gè)節(jié)點(diǎn) 所以LinkedList最合適 因?yàn)樗術(shù)etFirst getLast 和removeLast 方法 圖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)的基礎(chǔ)上 根據(jù)蛇頭的運(yùn)動(dòng) 方向來(lái)確定新蛇頭的坐標(biāo) 比如向上移動(dòng)就是y 1 在Snake中增加蛇的方向向量 public static final int UP 1 上 public static final int DOWN 1 下 public static final int LEFT 2 左 public static final int RIGHT 2 右 9 3 5 5 如何顯示蛇身 顯示蛇身 其實(shí)就是填充 用顏色填充格子 需要4個(gè)參數(shù) 像素坐標(biāo)x 像素坐標(biāo)y 格子寬度 格子高度 像素坐標(biāo)就是矩形左上角的坐標(biāo) 圖3 8 格子坐標(biāo)和像素坐標(biāo) 3 5 6 蛇身的移動(dòng)方向 1 相反方向 和上一次移動(dòng)的方向相反的方向稱為相反方向 這種輸入應(yīng)該忽略 這樣可以防止蛇 從自己的身體中穿過(guò) 2 無(wú)效方向 在蛇的這一次移動(dòng)之后和下一次移動(dòng)之前這個(gè)時(shí)間間隔內(nèi)輸入了多個(gè)非相反方向 只 有最后一個(gè)是有效方向 其他的都是無(wú)效方向 蛇的最終運(yùn)動(dòng)方向以有效方向?yàn)闇?zhǔn) 3 Snake中增加監(jiān)聽器 并另外啟動(dòng)一個(gè)線程來(lái)不斷調(diào)用蛇的move 在Snake中提供一 個(gè)啟動(dòng)線程的方法 3 5 7 吃到食物判定 通過(guò)判定坐標(biāo)是否重合來(lái)判斷 只需要判斷蛇頭是否和食物重合就可以了 因?yàn)樯叩?身體都是走蛇頭走過(guò)的地方 蛇吃掉食物后身體就會(huì)變長(zhǎng) 在 Controller 的 snakeMoved 中添加如下代碼 判斷是否吃到食物 if food null food setLocation ground null food getNew ground getFreePoint 如果吃到食物 就肯定不會(huì)吃到石頭 else if ground null if snake isEatBody stopGame 4 4 系統(tǒng)詳細(xì)設(shè)計(jì)系統(tǒng)詳細(xì)設(shè)計(jì) 4 14 1 程序設(shè)計(jì)程序設(shè)計(jì) 4 1 1 主類 MainFrame 1 主類為此程序的入口 定義了 MainFrame 的對(duì)象 frame 開始運(yùn)行此程序 2 源代碼見文件 MainFrame Java 4 1 2 類 MainFrame 1 成員變量見表 4 1 表 4 1 主要成員變量 成員變量描述變量類型名稱 選項(xiàng)面板 private GameOptionPaneloptionPanel 游戲面板 private GamePanelgamePanel 蛇類對(duì)象 private Snakesnake 石頭對(duì)象 private Groundground 食物對(duì)象 private Foodfood 控制對(duì)象 private Controllercontroller 速度標(biāo)簽 private JLabelinfoLabel 2 方法見表 4 2 11 表 4 2 主要方法 方法名功能 gameOver 游戲結(jié)束 gameStart 游戲開始 gameContinue 游戲繼續(xù) gamePause 游戲暫停 4 1 3 類 Snake 1 成員變量見表 4 3 表 4 3 主要成員變量 成員變量描述變量類型名稱 上下左右 方向 int UP DOWN LEFT RIGHT 蛇體 LinkedListbody 蛇頭坐標(biāo) Pointhead 蛇尾坐標(biāo) Pointtail 是否活著 booleanlive 是否暫停 booleanpause 速度 intspeed 監(jiān)聽 Set 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) 4 1 4 類 Food 1 成員變量見表 4 5 12 表 4 5 主要成員變量 成員變量描述變量類型名稱 顏色 private Colorcolor 隨機(jī) private Randomrandom 2 源代碼見文件 Food java 4 1 5 類 Controller 該類包含控制器和處理按鍵邏輯 控制器 控制 Ground Snake Food 負(fù)責(zé)游戲的 邏輯處理按鍵事件 實(shí)現(xiàn)了 SnakeListener 接口的 snakeMoved 方法 可以處理 Snake 觸 發(fā)的事件 該類繼承 KeyAdapter 類并且覆蓋 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 開始新游戲的方法 4 1 6 類 Ground 可以叫做地形 或地面 和食物一樣 Ground 也有 x y 坐標(biāo)和顏色等屬性 構(gòu)造方法 Ground 初始化地圖 設(shè)置格局 可以通過(guò) setRockColor 方法設(shè)置石頭的顏色 方法 isSnakeEatRock 判斷蛇是否吃到食物 最后運(yùn)用 drawMe 方法顯示石頭 源代碼見文件 Ground java 4 1 7 類 GameListener 此類為游戲監(jiān)聽類 實(shí)現(xiàn)游戲的監(jiān)聽功能 源代碼見文件 GameListener java 4 1 8 類 SnakeListener 此類為蛇的監(jiān)聽類 實(shí)現(xiàn)蛇運(yùn)動(dòng)的監(jiān)聽 蛇移動(dòng)的監(jiān)聽 snakeMoved 蛇吃到食物的監(jiān) 聽 snakeEatFood 13 源代碼見文件 SnakeListener java 4 1 9 類 Global 工具類 此類中存放了其他類中用到的一些常量 格子的像素 寬度 高度 蛇的初始長(zhǎng)度和 初始速度等 源代碼見文件 Global java 4 1 10 類 GameOptionPanel 此類為游戲的選項(xiàng)面板類 實(shí)現(xiàn)游戲面板的控制 源代碼見文件 GameOptionPanel java 4 1 11 類 GamePanel 此類為游戲的顯示界面設(shè)置 可以通過(guò) setBackgroundColor 設(shè)置游戲的背景顏色 源代碼見文件 GamePanel java 4 24 2 貪吃蛇游戲各功能界面截圖貪吃蛇游戲各功能界面截圖 4 2 1 游戲的初始界面 14 圖 4 1 初始界面 圖 4 2 控制面板 圖 4 3 速度標(biāo)簽 4 2 2 游戲運(yùn)行過(guò)程界面 1 鼠標(biāo)點(diǎn)擊開始新游戲按鈕 開始游戲 圖 4 4 開始游戲 15 圖 4 5 開始游戲 有加速 有改顏色 有網(wǎng)格 2 按空格鍵 游戲開始運(yùn)行 蛇開始移動(dòng) 并且吃到一次食物即紅色方塊后就變成蛇體 16 圖 4 6 吃到食物 身體變長(zhǎng) 3 按方向鍵改變蛇的運(yùn)行方向 并且碰壁后從新開始游戲 紅色方塊隨機(jī)地方產(chǎn)生 圖 4 7 碰壁死亡 5 5 系統(tǒng)測(cè)試系統(tǒng)測(cè)試 5 15 1 測(cè)試的意義測(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ù)開發(fā)各階段的需求 設(shè)計(jì)等文檔或程序的內(nèi)部結(jié)構(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ā)過(guò)程中的系統(tǒng)分析系統(tǒng)設(shè)計(jì)和實(shí)施的最后復(fù)查 根據(jù)測(cè)試的概念和目的 在進(jìn)行信息系 統(tǒng)測(cè)試時(shí)應(yīng)遵循以基本原則 5 25 2 測(cè)試測(cè)試過(guò)程過(guò)程 1 擬定測(cè)試計(jì)劃 在制定測(cè)試計(jì)劃時(shí) 要充分考慮整個(gè)項(xiàng)目的開發(fā)時(shí)間和開發(fā)進(jìn)程以 及一些人為因素和客觀條件等 使得測(cè)試計(jì)劃是可行的 測(cè)試計(jì)劃的內(nèi)容主要有測(cè)試的內(nèi) 容 進(jìn)度安排 測(cè)試所需的環(huán)境和條件 測(cè)試培訓(xùn)安排等 2 編制測(cè)試大綱 測(cè)試大綱是測(cè)試的依據(jù) 它明確詳盡地規(guī)定了在測(cè)試中針對(duì)系統(tǒng)的 17 每一項(xiàng)功能或特性所必須完成的基本測(cè)試項(xiàng)目和測(cè)試完成的標(biāo)準(zhǔn) 3 根據(jù)測(cè)試大綱設(shè)計(jì)和生成測(cè)試用例 在設(shè)計(jì)測(cè)試用例的時(shí)候 可綜合利用前面介紹 的測(cè)試用例和設(shè)計(jì)技術(shù) 產(chǎn)生測(cè)試設(shè)計(jì)說(shuō)明文檔 其內(nèi)容主要有被測(cè)項(xiàng)目 輸人數(shù)據(jù) 測(cè) 試過(guò)程 預(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)行概要說(shuō)明 列出測(cè)試的結(jié)論 指出缺陷和錯(cuò)誤 另外 給出一些建議 如可采用的修改方法 各項(xiàng)修 改預(yù)計(jì)的工作量及修改的負(fù)責(zé)人員 5 35 3 測(cè)試結(jié)果測(cè)試結(jié)果 貪吃蛇測(cè)試情況如表 5 1 所示 表 5 1 貪吃蛇測(cè)試情況 執(zhí)行的操作期望的結(jié)果實(shí)際結(jié)果 打開文件 運(yùn)行代碼代碼正常運(yùn)行 無(wú)錯(cuò)誤信息符合期望結(jié)果 點(diǎn)擊 開始游戲 貪吃蛇出現(xiàn) 食物出現(xiàn)符合期望結(jié)果 點(diǎn)擊 暫停游戲 游戲暫停 蛇和食物都靜止符合期望結(jié)果 點(diǎn)擊 停止游戲 游戲停止 重新開始新游戲符合期望結(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é)果 18 蛇碰壁或者吃到自己的身體結(jié)束游戲符合期望結(jié)果 通過(guò)以上測(cè)試 驗(yàn)證程序運(yùn)行正常 沒有發(fā)現(xiàn)什么錯(cuò)誤 結(jié)論 畢業(yè)設(shè)計(jì)是我們作為學(xué)生在學(xué)習(xí)階段的最后一個(gè)環(huán)節(jié) 是對(duì)所學(xué)基礎(chǔ)知識(shí)和專業(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ì)工作的指導(dǎo)和動(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ì)我了解到 java 語(yǔ)言的特點(diǎn) 簡(jiǎn)單性 面向?qū)ο?平 臺(tái)無(wú)關(guān)性 可移植性 解釋性 髙性能 動(dòng)態(tài)性 可靠性和安全性 多線程 分布式處理 等 在課程設(shè)計(jì)過(guò)程中不僅鞏固了我們以前的基礎(chǔ)理論知識(shí) 而且使我們各個(gè)方面的能力 都有很大的提高 從一開始的無(wú)從下手 到不斷的查閱資料 圖書館借書 再到請(qǐng)教老師 的幫助 這些都很好的鍛煉了我們理論聯(lián)系實(shí)際 與具體項(xiàng)目 課題相結(jié)合的能力 開發(fā) 設(shè)計(jì)游戲的能力進(jìn)一步在課程設(shè)計(jì)中體現(xiàn) 這讓我學(xué)會(huì)了很多 為以后的學(xué)習(xí)和工作加強(qiáng) 在設(shè)計(jì)過(guò)程中 總是遇到這樣或那樣的問(wèn)題 有時(shí)發(fā)現(xiàn)一個(gè)問(wèn)題的時(shí)候 需要做大量的工 作 花大量的時(shí)間才能解決 為以后的工作積累了經(jīng)驗(yàn) 增強(qiáng)了信心 既讓我們懂得了怎 樣把理論應(yīng)用于實(shí)際 又讓我們懂得了在實(shí)踐中遇到的問(wèn)題怎樣用理論去解決 它更是自 己綜合運(yùn)用所學(xué)知識(shí) 發(fā)
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)三個(gè)課堂管理制度
- 吉林動(dòng)畫學(xué)院管理制度
- 單位工作安全管理制度
- 凈化車間供暖管理制度
- 攪拌設(shè)備清洗方案(3篇)
- 招商方案策劃(3篇)
- 商場(chǎng)擺攤預(yù)算方案(3篇)
- 工程安全論證方案(3篇)
- DB62T 4396-2021 高壓天然氣儲(chǔ)氣井定期檢驗(yàn)規(guī)范
- 商場(chǎng)燈籠采購(gòu)方案(3篇)
- 《潔凈工程項(xiàng)目定額》(征求意見稿)
- JJG 151-2006 金屬維氏硬度計(jì)檢定規(guī)程-(高清現(xiàn)行)
- 眼科學(xué)教學(xué)課件淚器病
- 張雙樓煤礦安全評(píng)價(jià)報(bào)告(出版稿10.14)
- 關(guān)于贛州市登革熱病例疫情的初步調(diào)查報(bào)告
- 網(wǎng)絡(luò)輿論監(jiān)督存在的問(wèn)題及對(duì)策分析研究行政管理專業(yè)
- (蘇教版)二年級(jí)科學(xué)(下冊(cè))第四單元課件全套
- 深圳實(shí)驗(yàn)學(xué)校小學(xué)畢業(yè)班數(shù)學(xué)試卷
- 工業(yè)產(chǎn)品質(zhì)量監(jiān)督抽查復(fù)查復(fù)檢樣品確認(rèn)書(模板)
- 掛牌上鎖及維修管理程序文件
- 上海初中地理會(huì)考知識(shí)點(diǎn)匯總(上海鄉(xiāng)土地理
評(píng)論
0/150
提交評(píng)論