【推箱子游戲的設(shè)計實現(xiàn)研究12000字(論文)】_第1頁
【推箱子游戲的設(shè)計實現(xiàn)研究12000字(論文)】_第2頁
【推箱子游戲的設(shè)計實現(xiàn)研究12000字(論文)】_第3頁
【推箱子游戲的設(shè)計實現(xiàn)研究12000字(論文)】_第4頁
【推箱子游戲的設(shè)計實現(xiàn)研究12000字(論文)】_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

推箱子游戲的設(shè)計實現(xiàn)研究目錄【摘要】 11.1課題研究背景 41.2課題現(xiàn)狀分析 51.3課題研究的意義 61.4本文的工作與組織結(jié)構(gòu) 71.4.1開發(fā)語言的選擇 71.4.2開發(fā)平臺介紹 82.需求分析 92.1功能性需求分析 102.2非功能性需求 111.軟硬件需求 112.3可行性分析 122.3.1經(jīng)濟可行性 122.3.2技術(shù)可行性 122.3.3管理可行性 122.3.4社會可行性 123.系統(tǒng)設(shè)計 123.1將用戶需求轉(zhuǎn)化為設(shè)計概念 133.2系統(tǒng)功能模塊設(shè)計 133.2.1游戲界面的初始化 143.2.2繪圖功能的實現(xiàn) 143.2.3人物移動功能的實現(xiàn) 153.2.4箱子移動功能的實現(xiàn) 153.2.5基礎(chǔ)功能的實現(xiàn) 154.系統(tǒng)實現(xiàn) 214.1系統(tǒng)開發(fā)平臺 214.2系統(tǒng)運行軟件環(huán)境 214.3函數(shù)模型說明 215.軟件測試 235.1.什么是軟件測試? 235.2.為什么要進(jìn)行軟件測試? 245.3.軟件測試的基礎(chǔ)流程: 245.4軟件運行測試 245.5測試結(jié)論 266.總結(jié) 26參考文獻(xiàn): 26緒論工欲善其事,必先利其器。對自身條件的掌握程度會在很大一定的影響著我們的行事風(fēng)格和執(zhí)行力度,也正是需要先對自身的能力有了清晰的認(rèn)知后,才能相對應(yīng)的指定合適的執(zhí)行計劃。所以想要順利的完成一個任務(wù),把握自身條件、理清邏輯順序、制定詳細(xì)執(zhí)行計劃這些步驟都是必不可少的。而系統(tǒng)分析的作用也正是如此,清晰的邏輯思維可以幫助開發(fā)者更加順利的完成任務(wù)進(jìn)度,把原本龐大繁瑣的開發(fā)問題轉(zhuǎn)化成為一個個并不復(fù)雜的小目標(biāo),一步一步的去攻克難題。下面將從選擇游戲作為開發(fā)項目的目的,推箱子游戲的國內(nèi)外研究背景介紹,開發(fā)語言的選擇和此次項目開發(fā)的環(huán)境配置需求以及代碼編寫過程中的算法基礎(chǔ)等方面進(jìn)行簡單的介紹。1.1課題研究背景推箱子的本質(zhì)上是屬于滑塊謎題(SlidingPiecePuzzle)的一種,游戲里面核心就是他的難度變化曲線的設(shè)計。游戲的難度變化曲線也就是常說的游戲的節(jié)奏,而一款休閑益智標(biāo)簽的解謎游戲來說,游戲節(jié)奏恰恰是最為重要的一個關(guān)鍵點。人們對解謎類型游戲的節(jié)奏把握要求實際上是相對苛刻的,這類的游戲一方面要為玩家設(shè)置游戲難度,但他的難度指標(biāo)又不能超過一定的界限。實現(xiàn)難度設(shè)定的方式有很多方向,而推箱子游戲則是能夠?qū)崿F(xiàn)各種不同的解題方向,給玩家留下了很大的思考的空間,往往同一關(guān)卡的解謎思路有各種各樣,玩家都可以達(dá)到通關(guān)的目的;而簡單性則是要求游戲難度的設(shè)計可以滿足大多數(shù)玩家的水平,如果隨便一個人都可以簡單的通關(guān),那么人們就無法提起挑戰(zhàn)的欲望,市場上很大一部分的游戲都是選擇保持稍高節(jié)奏來激起人們的勝負(fù)欲和挑戰(zhàn)心,以此來維持游戲的活力。同樣的,推箱子游戲的基本原理還可以延伸到機器人的控制和物品擺放這些實際問題上來幫助人們解決出現(xiàn)在生活中的實際問題,這也是游戲的初始背景。推箱子游戲作為最為經(jīng)典的幾款初級開發(fā)游戲佳作之一,從他的設(shè)計誕生之初就在世界范圍風(fēng)靡了幾十年,當(dāng)然推箱子的流行推廣也啟發(fā)了很大一批的游戲制作人,他們在推箱子的參考原型下設(shè)計出來了許多精彩的解謎游戲。1.2課題現(xiàn)狀分析推箱子游戲作為一款經(jīng)典的單機小游戲,在其誕生之初就有許許多多的人投入了相關(guān)方面的研究。在以此為基礎(chǔ)的項目開發(fā)中,許多新穎的游戲方式和游戲內(nèi)容不斷涌現(xiàn),極大的豐富了游戲的飽和度。例如:推箱子+音樂游戲=Resynth,推箱子+貪吃蛇=SnokobanDash,推箱子+多消+其他=Polyology。隨著開發(fā)技術(shù)的不斷創(chuàng)新,也不斷的有人去改進(jìn)關(guān)卡制作界面,讓它變得越來越精美符合人們的審美觀,再結(jié)合不同的主題風(fēng)格,還有各種各樣的功能如自定義關(guān)卡、跳轉(zhuǎn)關(guān)卡等功能的實現(xiàn)。本次的課題探究也選擇從用戶角度中出發(fā),著力于對用戶體驗的優(yōu)化和游戲內(nèi)容的提升。此次開發(fā)在原有的推箱子游戲基礎(chǔ)上優(yōu)化了用戶在功能操作方面的選擇。一、雙鍵盤監(jiān)聽,可以讓不同習(xí)慣的用戶都有一個良好的游戲體驗,提升游戲的適應(yīng)性;二、關(guān)卡自由選擇,游戲關(guān)卡的跳轉(zhuǎn)功能一是為了方便用戶的游戲進(jìn)度控制,其次是為了更好把控游戲的節(jié)奏和進(jìn)度,對于任何一款游戲來說,他的最終目的都是用戶向的,是為了滿足用戶的需求,而自由選關(guān)就是把游戲節(jié)奏的控制權(quán)交付給用戶,讓其自行把握;三、音樂的控制和選擇,每一款游戲都有自己的代表性音樂,讓用戶在音樂響起的第一時間就可以會想出游戲的畫面,針對此次的優(yōu)化,本次開發(fā)選擇了四款基礎(chǔ)音樂可供選擇,且經(jīng)過考慮后決定將音樂的初始播放功能關(guān)閉,使得用戶在登錄的第一時間可以擁有一個相對安靜的游戲環(huán)境,用戶可根據(jù)自身實際需求選擇是否播放音樂,可以說是對當(dāng)代社死青年一個極其友好的優(yōu)化。1.3課題研究的意義臨近畢業(yè),每個畢業(yè)生都需要選擇一個自己喜歡的研究方向來完成最后的畢業(yè)設(shè)計,一方面是為了檢驗在校期間的學(xué)習(xí)成果,另一方面也是為了對自己的專業(yè)能力進(jìn)一步的進(jìn)行強化鞏固。此次開發(fā)選定推箱子游戲作為第一方向的其中一個原因是主觀方面對游戲的開發(fā)興趣使然,覺得自己經(jīng)過大學(xué)四年的計算機學(xué)習(xí)以及初步掌握了代碼編寫的基本能力,希望通過此次的畢業(yè)設(shè)計來對自己的能力進(jìn)行一次檢驗,同時也是為了圓自己一個編寫游戲的夢,體驗一下運行在自己的雙手中跑出來的成果;第二個原因則是作為當(dāng)代青少年的主流消遣娛樂方式,游戲必然有他的迷人之處。人們可以以一個極低的時間成本、空間成本以及消費水平來輕松達(dá)到放松緩壓的目的,幫助人們釋放掉各種負(fù)面的情緒,重拾一個陽光健康的心態(tài)面對生活。從國家長遠(yuǎn)發(fā)展來看,游戲的精進(jìn)也是社會發(fā)展的必然結(jié)果,他的低成本、更高空間利用率都是人們選擇的首發(fā)??梢灶A(yù)見的是未來的游戲種類會變得愈來愈繁多,科技含金量也會越來越高,可以更好的滿足人們的心理需求?;蛟S現(xiàn)在的我們還只是在生活中游戲,而以后的我們可以在游戲中生活。當(dāng)然這只是現(xiàn)階段對游戲發(fā)展前景的一個美好構(gòu)想,當(dāng)前社會的游戲設(shè)計的初心還只是停留在吸金引流的初級階段,緩解壓力和釋放情緒仍然是他的功能主體。而此次的游戲開發(fā)也將是本人邁出的第一步。在實踐操作的過程中熟悉掌握開發(fā)的相關(guān)操作技能,提升自己的編程能力,為今后的社會工作生活打下堅實的基礎(chǔ)。1.4本文的工作與組織結(jié)構(gòu)1.4.1開發(fā)語言的選擇已經(jīng)學(xué)習(xí)的語言種類:Java語言作為校內(nèi)學(xué)習(xí)的原生開發(fā)語言,java語言在代碼編寫的方面都有各自的優(yōu)勢區(qū)間,經(jīng)過認(rèn)真的比對思考,最終定下了開發(fā)的語言環(huán)境。(1)Java語言的優(yōu)點:1.簡單。Java語言簡單易學(xué),稍微有C語言基礎(chǔ)的人很容易就可以上手入門。但這并不意味著Java是和C語言直接劃等號,Java語相較C語言少掉了很多復(fù)雜特性,使得編程的難度和代碼量一下子就減輕了很多,具有更強的邏輯性。2.面向?qū)ο?。Java基于對象的編程方式更加符合普通人的思維模式,這使得人們更容易適應(yīng)程序編寫模式。Java語言引入類的概念,給用戶創(chuàng)建對象模板提供與之對應(yīng)的模板,類包含了被創(chuàng)建對象的狀態(tài)描述和方法的定義。3.平臺無關(guān)性。與平臺無關(guān)是Java語言最大的優(yōu)勢。其它語言編寫的程序在不同的操作系統(tǒng)運行可能會出現(xiàn)錯誤或無法運行。而Java語言的代碼經(jīng)過編譯生成的代碼則是與計算機硬件結(jié)構(gòu)無關(guān),因此Java代碼具有很強的可移植性。4.解釋型。Java不像C++,它把程序編譯為稱做字節(jié)碼的一個“中間代碼”。字節(jié)碼可以在任何一個安裝有Java虛擬機JVM的系統(tǒng)上被解釋執(zhí)行出來。Java語言翻譯一句,執(zhí)行一句,不產(chǎn)生整個的機器代碼程序。翻譯過程如果沒有出現(xiàn)錯誤,就會持續(xù)翻譯知道結(jié)束,否則就會在報錯的地方停止執(zhí)行。5.多線程。Java支持多線程,可以允許多個任務(wù)同時進(jìn)行。當(dāng)然這并不是真正意義上的同時完成,目前的計算機處理器在同一時刻依然只能執(zhí)行一個線程。處理器的處理速度遠(yuǎn)超過了人們接收信息的反應(yīng)速度的時候就造成了一種多個任務(wù)在同時執(zhí)行的錯覺。6.安全性。我們在網(wǎng)頁下載的時候經(jīng)常會當(dāng)心有病毒、惡意代碼等等,但是在支持Java的瀏覽器中就不必?fù)?dān)心這個問題,它可以有效的限制代碼的運行環(huán)境,不會對我們的用戶造成傷害。Java語言作為如今的高熱度編寫語言,自然也是我們作為游戲開發(fā)語言的絕佳選擇。1.4.2開發(fā)平臺介紹MyEclipse企業(yè)級工作平臺(MyEclipseEnterpriseWorkbench,簡稱MyEclipse)是對EclipseIDE的擴展,通過MyEclipse可以大大的提高用戶在數(shù)據(jù)庫和JavaME的開發(fā)、發(fā)布以及應(yīng)用程序服務(wù)器的整合方面的工作效率。作為一個功能極其豐富的JavaME集成開發(fā)環(huán)境MyEclipse擁有完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML,Struts,JSP,CSS,JavaScript,Spring,SQL,Hibernate。MyEclipse的功能非常強大,支持也十分廣泛,尤其是對各種開源產(chǎn)品的支持十分不錯。MyEclipse可以支持Java

Servlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC數(shù)據(jù)庫鏈接工具等多項功能。幾乎囊括了所有主流開源產(chǎn)品。MyEclipse常用快捷鍵CTR+L定位在某行Ctrl+T快速顯示當(dāng)前類的繼承結(jié)構(gòu)Ctrl+J正向增量查找(輸入的每個字母編輯器都能夠快速匹配定位到某個單詞,如果沒有,則在statesline中顯示未找到)Ctrl+Z撤銷當(dāng)前的修改狀態(tài)Ctrl+/注釋當(dāng)前行,再按則取消注釋Ctrl+D刪除當(dāng)前行Ctrl+F8切換到下一個ViewCtrl+Shift+/自動注釋代碼Ctrl+Shift+\自動取消已經(jīng)注釋的代碼Ctrl+Shift+O自動引導(dǎo)類包Ctrl+Shift+S保存所有未保存的文件。Shift+Ctrl+Enter在當(dāng)前行插入空行(原理同上條)Alt+CTRL+↓復(fù)制當(dāng)前行到下一行(復(fù)制增加)Alt+CTRL+↑復(fù)制當(dāng)前行到上一行(復(fù)制增加)Alt+Shift+C修改函數(shù)結(jié)構(gòu)(比較實用,有N個函數(shù)調(diào)用了這個方法,修改一次搞定)2.需求分析1.什么是需求分析?需求分析又稱之為軟件需求分析、系統(tǒng)需求分析或者需求分析工程等。軟件項目的開發(fā)人員通過各種途徑了解軟件的構(gòu)成,與用戶進(jìn)行深入的溝通,確定并確定軟件項目的功能、概念、主題要求等等用戶需求,逐步把用戶模糊的項目概念和概念集體細(xì)化,得到一個具體的開發(fā)方向和設(shè)計需求。為什么要進(jìn)行需求分析?項目需求分析是所有項目開發(fā)環(huán)節(jié)中必不可少的一個步驟,從歷史的項目開發(fā)經(jīng)驗中我們可以分析得出需求分析的重要性,許多的項目失敗究其根本原因就是開發(fā)前期的需求分析沒有做到位,與用戶的溝通情況并不明朗,沒有正確擬定項目的功能結(jié)構(gòu)和細(xì)化信息,使得最后開發(fā)出來的項目與用戶的預(yù)期不符合,最終導(dǎo)致項目失敗,浪費了許多的時間成本和人力物力成本,造成資源浪費。因此,軟件分析對于軟件開發(fā)人員來說,是極其重要的一個步驟,是所有項目開發(fā)的基石。3.軟件分析的內(nèi)容有哪些?軟件需求分成:1.目標(biāo)需求2.業(yè)務(wù)需求3.功能需求4.性能需求5.約束與限制。對于項目開發(fā)人員而言,系統(tǒng)的設(shè)計和代碼開發(fā)并不是最難的部分,因為這些部分都有自己的理解和網(wǎng)絡(luò)學(xué)習(xí)資料可供借鑒,因此技術(shù)方面的問題并不是主導(dǎo)項目開發(fā)難度的關(guān)鍵因素,恰恰相反,在用戶角度三言兩語就可以說明的系統(tǒng)內(nèi)容常常會因為最后完成的軟件沒有完成用戶的需求而導(dǎo)致用戶不滿,最終還是要回到與用戶的功能需求溝通的問題上去,所以說主導(dǎo)項目開發(fā)難度的是用戶角度的系統(tǒng)需求。用戶需求分析要求我們了解以下信息:用戶想要達(dá)到的效果是什么?用戶設(shè)計的軟件包括那些內(nèi)容?用戶對細(xì)微功能的具體要求有哪些以及對軟件本身的運行環(huán)境有沒有具體的要求等等。只有對這些信息有詳細(xì)的了解,才能在接下來的代碼編寫過程中不至于束手束腳。例如:在不知道用戶的運行環(huán)境要求的情況下,開發(fā)人員是應(yīng)該編寫一個微軟系統(tǒng)的程序呢還是開發(fā)一個安卓的移動端應(yīng)用呢,顯而易見的是這兩種情況不能互通,這樣的情況就會加大開發(fā)的難度,造成不必要的損失和浪費。2.1功能性需求分析推箱子游戲作為一款休閑益智的經(jīng)典小游戲,開發(fā)得到的最終項目應(yīng)該是輕松舒緩,節(jié)奏可控的。由于用戶對項目的最終目標(biāo)需求并不明確,需求分析的大致方向由已有的游戲設(shè)計為背景,提出了以下設(shè)計要求:游戲界面:市面的推箱子游戲界面設(shè)計大多都比較簡潔,這也符合玩家的實際需求,通過簡單的配色達(dá)到一個舒適的界面效果。其次是需要有一定的功能按鈕,方便用戶在游戲過程中的快捷操作。游戲內(nèi)容:登錄游戲時自動打開地圖展示在玩家眼前,玩家通過上下左右/WASD鍵位來控制人物的移動,將箱體推到合適的位置完成通關(guān)任務(wù)。為了讓玩家可以清晰的找到終點的位置,初始箱體和目標(biāo)地點的顏色深淺應(yīng)該明確的區(qū)分開來。游戲邏輯設(shè)計:當(dāng)玩家將所有的箱子推動到正確的位置上的時候可以正常通關(guān),如果箱子移動到了無法移動的死角則無法順利過關(guān),可以通過界面的返回上一步或者直接選擇重新開始。2.2非功能性需求1.軟硬件需求硬件環(huán)境:CPU:Inteli5-7300HQCPU@2.50GHz64位操作系統(tǒng),基于x64的處理器機帶RAM:8G;內(nèi)存剩余資源:7.87G;軟件環(huán)境:JDK版本:jdk1.8.0_281MyEclipse10。配置jdk:1.環(huán)境變量-->JAVA_HOME 配置path變量2.測試JDK是否安裝成功2.3可行性分析2.3.1經(jīng)濟可行性2.經(jīng)濟可行性:本次設(shè)計主要目的是學(xué)術(shù)研究的初級開發(fā)實踐,相關(guān)內(nèi)容僅用于畢業(yè)資格審核,不涉及商業(yè)相關(guān)的用途。通過此次的項目設(shè)計鍛煉開發(fā)者java技術(shù)和實踐相結(jié)合的能力,把課堂所學(xué)的知識結(jié)構(gòu)應(yīng)用到實際開發(fā)中來。同時深入探究可視化界面的學(xué)習(xí),熟悉各種頁面跳轉(zhuǎn)變換的操作概念。開發(fā)所需要的軟件操作環(huán)境為MyEclipse,MyEclipse的相關(guān)資料學(xué)習(xí)資料和操作功能可以自由的在網(wǎng)絡(luò)環(huán)境中查詢。開發(fā)所需要的硬件操作環(huán)境為個人學(xué)習(xí)筆記本,除去少量資料查詢成本外并無其他項費用支出。綜上所述條件可以發(fā)現(xiàn)開發(fā)的成本低廉,具備經(jīng)濟條件可行性。2.3.2技術(shù)可行性技術(shù)可行性:此次畢業(yè)設(shè)計項目開發(fā)的可用語言很多,僅課堂學(xué)習(xí)的VB、C語言、JAVA、Python等語言都可以完成,結(jié)合自身綜合因素考慮,本次開發(fā)選擇的語言最終定為JAVA,一方面是因為JAVA語言作為后期學(xué)習(xí)的主要語言,個人使用熟練度較高,對語言的相關(guān)操作有較好的基礎(chǔ)能力,適合游戲開發(fā)的需求。其次是JAVAD的語言環(huán)境擁有簡潔的操作,對變量的定義、初始化、游戲界面的可視化操作簡單,可以大大的減低項目開發(fā)難度,可以滿足此次開發(fā)的基本技術(shù)要求。2.3.3管理可行性管理可行性:本次畢業(yè)設(shè)計項目內(nèi)容基于java,具備面向?qū)ο蟆⒖梢浦残?、安全性、并發(fā)機制、支持可視化圖形界面等??梢栽诤艽蟪潭壬系姆奖汩_發(fā)者進(jìn)行項目管理。2.3.4社會可行性社會可行性:網(wǎng)絡(luò)查詢的相關(guān)資料以及相關(guān)的知識文獻(xiàn)的引用屬于正常的學(xué)術(shù)交流范圍,并未涉及版權(quán)問題。且此次開發(fā)過程到結(jié)果生成不會對社會產(chǎn)生負(fù)面影響,滿足社會可行性。3.系統(tǒng)設(shè)計3.1將用戶需求轉(zhuǎn)化為設(shè)計概念用戶界面需求:簡潔、可視化,有相應(yīng)的功能按鈕對地圖進(jìn)行美化處理,將箱體、墻體、人物、終點等因素使用不同顏色的圖片區(qū)別開來,方便用戶的直觀感受。相應(yīng)的功能按鈕可以選擇添加控件代碼實現(xiàn)關(guān)卡的選擇、錯誤步驟的回溯、音樂功能調(diào)節(jié)。鍵盤監(jiān)聽事件:鍵盤監(jiān)聽主要是為了控制游戲中人物與箱子的移動事件,用戶通過對鍵盤方向鍵(上、下、左、右鍵或者W、A、S、D)實現(xiàn)對人物移動的上、下、左、右方向控制,并且在遇到箱子存在的時候可以推動箱子。顯示需求:當(dāng)玩家將地圖上所有的箱子都移動到指定的區(qū)域后就可以順利通過當(dāng)前關(guān)卡過關(guān),如果在移動過程中將箱子推到死角則無法過關(guān),此時玩家可以選擇悔步或重新開始的操作來決定是否返回上一步或者直接重新開始本關(guān)。除此之外,玩家也可以選擇點擊選關(guān)的功能在彈出窗口控件中輸入自己想要跳轉(zhuǎn)的關(guān)卡數(shù),如果輸入的數(shù)值在1至50之間,則可以成功跳轉(zhuǎn),否則將會顯示該關(guān)卡不存在!選關(guān)的功能極大的豐富了游戲的可玩性,玩家能夠自由選擇關(guān)卡進(jìn)行游戲。3.2系統(tǒng)功能模塊設(shè)計游戲的主體功能包括:游戲界面的初始化;繪圖功能的實現(xiàn);人物移動功能實現(xiàn):箱子移動功能實現(xiàn):基礎(chǔ)功能實現(xiàn)。圖3-2-1游戲的功能主體由用戶給出的概念需求提煉出我們開發(fā)的有關(guān)信息,找到項目開發(fā)的主體方向,定下需要實現(xiàn)的具體功能。從基本的框架結(jié)構(gòu)入手,慢慢的實現(xiàn)想要的效果。3.2.1游戲界面的初始化本模塊完成的主要功能包括游戲窗口的顯示,顯示內(nèi)容包括第一關(guān)的初始地圖、游戲的基礎(chǔ)信息介紹、下拉菜單功能和返回上一步、重新開始、關(guān)卡選擇、音量控制和音樂選擇等等功能。玩家可以在初始界面就完成對游戲的大致認(rèn)知。圖3-2-2游戲的初始界面(1)界面框架與按鈕設(shè)計推箱子游戲界面設(shè)計簡單美觀,圖像的選擇貼合游戲的主題設(shè)計,具有很強的帶入性。游戲界面的顯示內(nèi)容如下:“初始化”,“悔一步”,“上一關(guān)”,“下一關(guān)”,“第1關(guān)”,“最終關(guān)”,“選關(guān)”“音樂關(guān)”并且各個按鈕的名稱與相關(guān)功能為:“悔一步”:返回上一步用戶操作(支持返回連續(xù)步數(shù)的用戶操作,可以返回到初始狀態(tài));“初始化”:重置當(dāng)前關(guān)卡的所有操作,堆棧記錄清零,地圖返回初始狀態(tài);“上一關(guān)”:跳轉(zhuǎn)到當(dāng)前關(guān)的上一關(guān);“下一關(guān)”:跳轉(zhuǎn)到當(dāng)前關(guān)的下一關(guān);“第1關(guān)”:用戶登錄的游戲初始關(guān)卡默認(rèn)是第一關(guān),點擊此按鈕可以方便用戶從其它游戲關(guān)卡直接跳轉(zhuǎn)到第一關(guān);“最終關(guān)”:實現(xiàn)功能為跳轉(zhuǎn)到游戲最后一關(guān);“選關(guān)”:為用戶提供了關(guān)卡的自由選擇功能,單擊此按鈕可以在彈出的窗口控件中輸入想要跳轉(zhuǎn)的關(guān)卡數(shù),實現(xiàn)范圍內(nèi)的任意跳轉(zhuǎn);“音樂開/關(guān)”:單機此按鈕,用戶可以自由控制游戲音樂的開關(guān);“更換音樂”:單機此按鈕,用戶可以自由選擇游戲音樂3.2.2繪圖功能的實現(xiàn)本模塊完成的主要功能是被其他的模塊調(diào)用,語句調(diào)用后實現(xiàn)墻體生成、終點箱子生成、人物移動調(diào)用等等功能。地圖的設(shè)計需要提前將編寫好的二維數(shù)組儲存的地圖文件保存在本地的游戲土地文件夾中。以0到9的十個數(shù)字對地圖內(nèi)容進(jìn)行不同的定義:數(shù)字0表示:沒有定義的空白區(qū)域;數(shù)字1表示:墻體/障礙物;數(shù)字2表示:人物和箱子可到達(dá)的區(qū)域;數(shù)字3表示:箱子的當(dāng)前區(qū)域;數(shù)字4表示:箱子的最終目的區(qū)域;數(shù)字5表示:游戲人物向下移動;數(shù)字6表示:游戲人物向左移動;數(shù)字7表示:游戲人物向右移動;數(shù)字8表示:游戲人物向上移動;數(shù)字9表示:箱子已經(jīng)達(dá)到指定位置;圖2-1二維地圖文件與對應(yīng)的游戲應(yīng)界面游戲中對應(yīng)的游戲地圖文件共計50個,這些地圖信息都是在開發(fā)之前就編寫好的二維數(shù)據(jù)文件,然后在游戲目錄下面創(chuàng)建一個專屬的map文件夾存放地圖信息,方便程序運行時調(diào)用文件。3.2.3人物移動功能的實現(xiàn)人物移動功能:想要實現(xiàn)游戲人物的移動功能就需要在窗體上添加一個鍵盤監(jiān)聽事件,用來判斷人物移動的方向。接著通過切換人物的圖片信息達(dá)到一個動態(tài)移動的效果。邏輯判斷:邏輯判斷的實現(xiàn)需要設(shè)計二維數(shù)組存儲的數(shù)據(jù),需要從數(shù)據(jù)中判斷人物當(dāng)前的移動方向有哪些,判斷哪些是墻體,哪些是空地,那些地方是兩個箱子并排一起的。出現(xiàn)墻體和并排的情況時,人物就無法移動。在人物移動的過程中,二維數(shù)組中存儲的數(shù)據(jù)也會不停的變換。3.2.4基礎(chǔ)功能的實現(xiàn)本模塊完成的主要功能包括:(1)悔步功能;(2)關(guān)卡選擇功能;(3)音樂控制功能;(4)開發(fā)者信息介紹功能.1.悔步功能:悔步的主要操作是本關(guān)重新開始和返回上一步兩種操作。前一種操作只需要將地圖信息重新加載就可以完成重新開始的操作功能;而后者的返回上一步則是需要利用堆棧的存儲方式來記錄人物與箱子的移動信息以及地圖文件的變換信息。提供的兩種悔步功能從用戶需求角度出發(fā),可以極大的優(yōu)化用戶的游戲體驗,使得用戶在陷入思維誤區(qū)時可以有更多的選擇空間,大大提高了玩家的解謎流暢度,也使得游戲的節(jié)奏性更加可控!具體實現(xiàn)代碼如下:實現(xiàn)效果如下:圖3-2-3游戲初始狀態(tài)圖3-2-4游戲初始狀態(tài)悔步圖3-2-5游戲移動后狀態(tài)圖3-2-6游戲移動后悔一步圖3-2-7游戲移動后重新開始2.關(guān)卡選擇功能關(guān)卡選擇功能主要實現(xiàn)了上/下關(guān)卡的變換和任意關(guān)卡的選擇兩種狀態(tài)。兩種設(shè)計都是從用戶游戲體驗角度出發(fā),讓用戶可以隨心所欲地選擇自己想要的挑戰(zhàn)關(guān)卡,節(jié)約游戲時間成本,優(yōu)化游戲體驗。具體實現(xiàn)代碼如下:實現(xiàn)效果如下:圖3-2-8游戲選關(guān)功能3.音樂控制功能:音樂控制功能主要實現(xiàn)的是音樂的開關(guān)控制和播放音樂的選擇兩個主體功能,兩種設(shè)計都是從用戶游戲體驗角度出發(fā),讓用戶可以隨心所欲地選擇自己喜歡的游戲環(huán)境,可以選擇不同的音樂節(jié)奏進(jìn)行游戲,也可以選擇關(guān)閉音樂播放,營造一個安靜的游戲空間,優(yōu)化用戶的游戲體驗。具體實現(xiàn)代碼如下:音樂控制功能展示:圖3-2-9游戲音樂選擇功能4.開發(fā)者信息介紹功能開發(fā)者信息介紹功能是開發(fā)者對這款游戲的簡介,為初次接觸這款游戲的用戶介紹游戲的玩法,提供了一些開發(fā)者的基本信息介紹,優(yōu)化用戶的游戲體驗。具體實現(xiàn)代碼如下:elseif(e.getSource()==about) { JOptionPane.showMessageDialog(this,"您可以使用WASD或←↑↓→來控制人物的移動,\n最終目標(biāo)是將全部的箱子推到合適的地方,加油騷年!\n\nJAVA推箱子 開發(fā):萬永輝"); }實現(xiàn)效果如下:圖3-2-10開發(fā)者信息介紹4.系統(tǒng)實現(xiàn)4.1系統(tǒng)開發(fā)平臺MyEclipse104.2系統(tǒng)運行軟件環(huán)境軟件環(huán)境:JDK版本:jdk1.8.0_281 。4.3函數(shù)模型說明1.putoutChar()函數(shù)原型:voidputoutChar(inty,intx,charch,charfc,charbc)該函數(shù)實現(xiàn)的功能是將開發(fā)者需要顯示的字符信息在屏幕上的指定位置上輸出出來。其中的x、y表示的是位置的坐標(biāo),ch表示需要輸出的字符,fc是對字符顏色進(jìn)行設(shè)置,bc是設(shè)置背景顏色。2.printWall()函數(shù)原型:voidprintWall(intx,inty)該函數(shù)實現(xiàn)的功能是設(shè)置墻壁,參數(shù)x、y表示的是當(dāng)前墻體的坐標(biāo)位置。該函數(shù)調(diào)用putoutChar()進(jìn)行輸出,以黑色為背景繪制綠色墻,用小方塊表示墻(ASCII值為219)。3.printBox()函數(shù)原型:voidprintBox(intx,inty)該函數(shù)實現(xiàn)的功能是在非目的地繪制箱子,參數(shù)x、y表示的是繪制箱體的位置。該函數(shù)調(diào)用putoutChar()進(jìn)行輸出,以黑色為背景白色箱子,(ASCII值為10)的字符表示箱子。4.printBoxDes()函數(shù)原型:voidprintBoxDes(intx,inty)該函數(shù)實現(xiàn)的功能是在目的地繪制箱子,參數(shù)x、y表示的是目的箱子的位置。該函數(shù)調(diào)用putoutChar()進(jìn)行輸出,以黑色為背景繪制黃色箱子,仍用(ASCII值為10)的字符表示箱子。5.printDestination()函數(shù)原型:voidprintDestination(intx,inty)該函數(shù)實現(xiàn)的功能是繪制目的地,傳入?yún)?shù)x、y指明位置。該函數(shù)調(diào)用putoutChar()進(jìn)行輸出,以黑色為背景繪制黃色目的地,用心型表示(ASCII值為003)。6.printDestination1()函數(shù)原型:voidprintDestination1(intx,inty,winer**win,winer**pw)該函數(shù)實現(xiàn)的功能是繪制目的地函數(shù),但是printDestination1()增加了記錄每一個目的地位置的功能。其中x、y指明目的地的位置,每一關(guān)的所有目的地位置存放在結(jié)構(gòu)體structwiner中,形成一條鏈表,**winer返回鏈表的頭,**pw則指向鏈表的尾部。7.printMan()函數(shù)原型:voidprintMan(intx,inty)該函數(shù)實現(xiàn)的功能是繪制小人。X、y指明繪制的位置。該函數(shù)通過軟中斷來實現(xiàn),首先設(shè)置寄存器AX的高位和低位,設(shè)置高位0xa表示在光標(biāo)位置顯示字符;設(shè)置低位02(ASCII值),表示輸出的字符;然后設(shè)置寄存器CX為01,表示重復(fù)輸出的次數(shù),這里只輸出一次;最后產(chǎn)生類型為0x10的中斷,表示顯示器輸出。8.init()函數(shù)原型:voidinit()該函數(shù)實現(xiàn)的功能是初始化屏幕。該函數(shù)首先用兩個for循環(huán)初始化屏幕20*20范圍內(nèi)的狀態(tài),初始化為0,以后根據(jù)實際情況重新賦值;然后設(shè)置屏幕輸出狀態(tài),設(shè)置寄存器AX的高位為0,低位為3,表示以80*25的彩色方式顯示;最后移動光標(biāo)到指定的位置輸出操作提示信息以及版權(quán)信息。9.初始化游戲函數(shù)原型:winer*initStep1()、winer*initStep2()、winer*initStep3()、winer*initStep4()這幾個函數(shù)分別初始化游戲的第一關(guān)到第四關(guān)。這些函數(shù)的功能和實現(xiàn)步驟相似。首先根據(jù)需要在指定的位置繪制墻壁和繪制箱子,在這里可以設(shè)置游戲的難度,初始化的墻壁越復(fù)雜,箱子越多,則游戲就越難。游戲的第一關(guān)至第四關(guān)難度依次增加。然后分別調(diào)用printDestination1()和printMan()函數(shù)繪制目的地和小人。函數(shù)返回包含各個目的地位置的鏈表。10.移動箱子函數(shù)原型:voidmoveBoxSpacetoSpace(intx,inty,chara)、voidmoveBoxDestoSpace(intx,inty,chara)、voidmoveBoxSpacetoDes(intx,inty,chara)、voidmoveBoxDestoDes(intx,inty,chara)這幾個函數(shù)實現(xiàn)的功能分別是人空地移動箱子到空地、從目的地移動箱子到空地、從空地移動箱子到目的地和中從目的地移動箱子到目的地。X、y指明小人當(dāng)前所處的位置,字符a表示移動的方向,有“u”、“d”、“l(fā)”和“r”4個值,分別表示向上、下、左、右移動。這幾個函數(shù)的實現(xiàn)原理大致相似。對于前面兩個函數(shù),首先判斷移動的方向,人小人所在的位置沿著移動的方向移動一步繪制小人,移動兩步繪制箱子(調(diào)用printBox()函數(shù)),并設(shè)置狀態(tài)為“b”;對于后面兩個參數(shù),首先判斷移動的方向,從小人所在的位置沿著移動方向移動一步繪制小人,移動兩上在目的地繪制箱子(調(diào)用printBoxDes()函數(shù)),并設(shè)置狀態(tài)為“i”,表明箱子在目的地上。11.judge()函數(shù)原型:intjudge(intx,inty)該函數(shù)實現(xiàn)的功能是根據(jù)結(jié)構(gòu)體struct[x][y]中存的值來判斷該點的狀態(tài)。12.move()函數(shù)原型:voidmoid(intx,inty,chara)該函數(shù)實現(xiàn)的功能是根據(jù)按下的鍵來處理小人的移動。小人移動的方向有上(“u”)、下(“d”)、左(“l(fā)”)、右(“r”)4個,4個方向的處理方式一樣。首先判斷移動的方向,然后根據(jù)小人的當(dāng)前位置、下一步位置以及下下一步位置所在的狀態(tài)進(jìn)行處理。(1)若下一步所在位置的狀態(tài)為墻壁(“w”),則直接退出,不作任何處理。(2)若下一步所在位置的狀態(tài)為目的地(“i”)或者什么都沒有(“0”),則:①若當(dāng)前位置的狀態(tài)為目的地,則在當(dāng)前位置繪制目的地(調(diào)用printDestination()函數(shù))、在下一步位置繪制小人(調(diào)用printMan()函數(shù))。②若當(dāng)前位置的狀態(tài)為非目的地,則輸出空格清空當(dāng)前位置的小人,并在下一步位置繪制小人(調(diào)用printMan()函數(shù))。(3)若下一步所在位置的狀態(tài)為箱子(“b”),則:①如果下下一步位置的狀態(tài)為“0”,則把箱子從空地移動到空地(調(diào)用moveBoxSpacetoSpace()函數(shù)),然后把光標(biāo)移動到下一步位置(如果當(dāng)前位置的狀態(tài)為目的地,則應(yīng)先繪制目的地(調(diào)用predestination()函數(shù)))。②如果下下一步位置的狀態(tài)為目的地,則把箱子從空地移動到目的地(調(diào)用moveBoxSpacetoDes()函數(shù)),然后把光標(biāo)移動到下一步位置(如果當(dāng)前位置的狀態(tài)為目的地,則應(yīng)先繪制目的地(調(diào)用printDestination()函數(shù)))。③其它情況則直接返回,不作任何處理。(4)若下一步所在位置的狀態(tài)為箱子在目的地(“i”),則:①如果下下一步位置的狀態(tài)為“0”,則把箱子從目的地移動到空地(調(diào)用moveBoxDestoSpace()函數(shù)),然后把光標(biāo)移動到下一步位置(如果當(dāng)前位置的狀態(tài)為目的地,則應(yīng)先畫目的地(調(diào)用printDestination()函數(shù)))。②如果下下一步位置的狀態(tài)為目的地,則把箱子從目的地移動到目的地(調(diào)用moveBoxDestoDes()函數(shù)),然后把光標(biāo)移動到下一步位置(如果當(dāng)前位置的狀態(tài)為目的地,則應(yīng)先畫目的地(調(diào)用printDestination()函數(shù)))。③其它情況則直接返回,不作任何處理。13.reset()函數(shù)原型:voidreset(inti)該函數(shù)實現(xiàn)的功能是重置當(dāng)前關(guān)。該函數(shù)首先判斷當(dāng)前關(guān)是第幾關(guān),然后調(diào)用init()函數(shù)和初始化當(dāng)前關(guān)的函數(shù)進(jìn)行重置。14.主函數(shù)主函數(shù)首先設(shè)置寄存器AX的高位和低位,顯示器軟中斷,進(jìn)行顯示狀態(tài)的設(shè)置,初始化屏幕,初始化第一關(guān),并顯示操作提示信息和版權(quán)信息。然后根據(jù)按下的鍵(bioskey(0)函數(shù)返回按下的鍵值)進(jìn)行處理,處理過程由move()函數(shù)進(jìn)行(如果按下Esc鍵,則退出程序)。對于每一關(guān),如果所有的表示目的地的狀態(tài)都由“m”變成了“i”,則表示通過該關(guān),可以進(jìn)入下一關(guān)。5.軟件測試5.1.什么是軟件測試?軟件測試(英語:SoftwareTesting)主要目的是為了對軟件的正確性、完整性、安全性和質(zhì)量等方面進(jìn)行檢驗性測試的過程。軟件測試是將軟件的運行效果和用戶需求的預(yù)期效果進(jìn)行比較的過程。軟件測試的定義是:在規(guī)定的條件下對程序進(jìn)行操作,以發(fā)現(xiàn)程序錯誤,對軟件質(zhì)量的評估,并對其是否能滿足設(shè)計要求進(jìn)行的過程。5.2.為什么要進(jìn)行軟件測試?測試的目的為了讓開發(fā)者在產(chǎn)品項目交付給用戶使用之前的測試環(huán)節(jié)中,通過實踐運行測試,找到功能實現(xiàn)的不足之處或者是bug,可以及時的修改項目代碼,調(diào)節(jié)相應(yīng)的功能結(jié)構(gòu),以達(dá)到用戶需求的目的。適量的軟件測試可以在有限的條件下對軟件的正確性、完整性、安全性和質(zhì)量等方面有一個大致的評估,降低用戶的使用風(fēng)險,且可以節(jié)約時間成本和金錢,減少后期不必要的額外維護(hù)支出。5.3.軟件測試的基礎(chǔ)流程:(1)制定測試計劃。測試計劃應(yīng)當(dāng)充分考慮當(dāng)前的人力、物力、時間等條件因素,對研發(fā)的項目產(chǎn)品進(jìn)行必要的測試。測試計劃應(yīng)該包含的項目有:測試的內(nèi)容、進(jìn)度安排、測試所需的環(huán)境等。(2)編制測試大綱。編寫大致的測試方向和初步計劃。(3)由測試大綱設(shè)計、生成測試用例,得到相對應(yīng)的測試文檔結(jié)構(gòu)。(4)開始測試。依據(jù)測試大綱的基本內(nèi)容和具體的測試用例,針對對被測軟件進(jìn)行完整的項目測試。(5)得到最終的測試結(jié)果詳細(xì)報告。5.4軟件運行測試經(jīng)測試發(fā)現(xiàn),游戲可在當(dāng)前系統(tǒng)正常運行,且相關(guān)功能實現(xiàn),該功能測試結(jié)果正常。運行結(jié)果如下圖5-4-1運行測試圖5-4-1運行測試經(jīng)測試發(fā)現(xiàn),游戲可在當(dāng)前系統(tǒng)正常運行,且上一關(guān)、下一關(guān)功能實現(xiàn),可以從第一關(guān)進(jìn)入到第二關(guān),該功能測試結(jié)果正常。系統(tǒng)功能測試如圖5-4-2下一關(guān)測試圖5-4-2下一關(guān)測試經(jīng)測試發(fā)現(xiàn),游戲可在當(dāng)前系統(tǒng)正常運行,且關(guān)卡選擇功能單擊后能夠正常跳出窗口,并且有相關(guān)的信息提示,輸入1到50范圍內(nèi)的關(guān)卡數(shù)時可以直接完成跳轉(zhuǎn),并且可以在標(biāo)題顯示出來。當(dāng)輸入的關(guān)卡數(shù)不在這個范圍內(nèi)的時候,就會彈出警示窗口,提醒用戶輸入的關(guān)卡并不存在!該功能測試結(jié)果正常。系統(tǒng)功能測試如圖5-4-3選關(guān)測試圖5-4-3選關(guān)測試5-4-4選關(guān)測試經(jīng)測試發(fā)現(xiàn),游戲可在當(dāng)前系統(tǒng)正常運行,且音樂選擇功能正常,當(dāng)用戶點擊了更換音樂的下拉框后,可以看到下拉的五個可供選擇的音樂選項,點擊想要更換的名稱即可完成音樂切換,該功能測試結(jié)果正常。系統(tǒng)功能測試如圖5-4-5音樂選擇播放功能測試圖5-4-5音樂選擇播放功能測試5.5測試結(jié)論針對此次的軟件開發(fā)的每一個功能都逐一測試后,發(fā)現(xiàn)該游戲可以正常運行,且功能實現(xiàn)滿足了用戶需求。在后期優(yōu)化過程中設(shè)計的快捷功能也為游戲測試提供了

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論