版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
目錄VI基于Java的簡易角色扮演游戲的設計與實現(xiàn)摘要隨著手機游戲的火爆,電腦端小型游戲已經(jīng)慢慢淡出了人們的視線,在各種電子設備無處不在的今天,休閑娛樂也成為了人們不可或缺的一部分,但是游戲越來越多,卻已經(jīng)沒有了電子游戲剛興起時的體驗。電子游戲的出現(xiàn)就是為了讓人們通過游戲獲得快樂,所以電子游戲隨著時代的發(fā)展還在不斷延續(xù)著,如今的游戲已從最初的簡單枯燥的文字游戲,發(fā)展到如今的各種各樣絢麗多擦的游戲種類,如MOBA游戲,F(xiàn)PS游戲,單機RPG游戲,網(wǎng)絡游戲等,這些游戲已經(jīng)成長為一定規(guī)模的娛樂項目。本游戲設計采用的是基于J2SE標準平臺的Java編程技術,運用Eclipse軟件在Windows10操作系統(tǒng)中進行開發(fā),在本設計中我們需要用到的游戲素材包括地圖場景圖片,各種特效圖片,主角人物模型敵方單位模型,子彈模型以及各類物品模型等。這些元素的選取很重要,游戲中清新亮麗的人物形象畫面能夠給每位玩家一個充足的審美情趣與游戲體驗。在用戶彈道與敵方怪物的相撞測試中,包括自己控制的人物與敵方單位或彈道的相撞等。在這一過程中,將所有彈道對象的矩形區(qū)域與敵人對象的矩形區(qū)域逐個以此進行檢測,如果出現(xiàn)重疊則說明彈道與敵人發(fā)生了碰撞。該軟件項目實現(xiàn)了游戲該具備的基礎功能,并且在操上作簡單易懂、容易上手,適用于大部分人群。該程序設計項目能夠實現(xiàn)完整的闖關劇情和道具系統(tǒng),玩家上手后會有一定的代入感,和良好的游戲體驗。關鍵詞:角色扮演,游戲,Java目錄TOC\o"1-3"\u摘要 IAbstract II第1章緒論 11.1項目背景 11.2電腦游戲的發(fā)展歷史 11.3國內游戲項目研究現(xiàn)狀 21.4項目主要工作 2第2章關鍵技術介紹 32.1Java語言的特點 32.2關于Eclipse 4第3章系統(tǒng)分析 53.1用戶需求分析 53.2功能分析 53.3功能結構 63.3.1界面生成 63.3.2人物功能 73.3.3武器系統(tǒng) 83.4難點分析 83.5游戲流程分析 83.6系統(tǒng)環(huán)境可行性分析 93.7技術可行性分析 93.8經(jīng)濟可行性分析 93.9安全性分析 93.10社會可行性分析 10第4章系統(tǒng)設計 114.1設計指導思想和原則 114.1.1指導思想 114.1.2軟件設計原則 114.2系統(tǒng)功能設計 114.3界面設計 154.3.1開始界面設計 154.3.2游戲界面設計 164.4游戲操作設計 174.5怪物的設計 174.6道具系統(tǒng)設計 174.7武器系統(tǒng)設計 184.8碰撞檢測設計 194.9多線程設計 204.10雙緩沖設計 21第5章系統(tǒng)實現(xiàn) 225.1窗口界面的實現(xiàn) 225.1.1開始窗口的實現(xiàn) 225.1.2游戲窗口實現(xiàn) 225.1.3背包面板的實現(xiàn) 235.2NPC的實現(xiàn) 245.3怪物的實現(xiàn) 245.4怪物智能化的實現(xiàn) 255.5地圖的實現(xiàn) 255.6路障的實現(xiàn) 255.7子彈功能的實現(xiàn) 265.8道具功能實現(xiàn) 265.9操作功能實現(xiàn) 27第6章系統(tǒng)測試 286.1測試方案 286.1.1游戲環(huán)境及開始測試 286.1.2人物功能測試 286.1.3怪物掉落功能測試 296.1.4地圖檢測功能測試 306.2測試結果 30第7章結論 31參考文獻 32-第1章緒論隨著手機游戲的火爆,電腦端小型游戲已經(jīng)慢慢淡出了人們的視線,在各種電子設備無處不在的今天,休閑娛樂也成為了人們不可或缺的一部分,但是游戲越來越多,卻已經(jīng)沒有了電子游戲剛興起時的體驗。游戲本身的定義是讓人可以在其中得到快樂,并且還可以緩解自身的壓力?,F(xiàn)在理解的游戲意義都是偏向娛樂性質,甚至還有許多以此為職業(yè)者,靠游戲來養(yǎng)活自己,而且收入還相當可觀,由此可見游戲行業(yè)近些年來發(fā)展之迅猛。電子游戲的出現(xiàn)就是為了讓人們通過游戲獲得快樂,所以電子游戲隨著時代的發(fā)展還在不斷延續(xù)著,如今的游戲已從最初的簡單枯燥的文字游戲,發(fā)展到如今的各種各樣絢麗多擦的游戲種類,如MOBA游戲,F(xiàn)PS游戲,單機RPG游戲,網(wǎng)絡游戲等,這些游戲已經(jīng)成長為一定規(guī)模的娛樂項目。隨著電子產(chǎn)業(yè)的不斷進步,各類芯片的計算能力也不斷提高,帶來的是游戲畫面和操作體驗的不斷提升,人們也對游戲的要求越來越嚴格。人們在如今高強度的生活壓力下,很難再像以前找到一個便捷的情緒釋放的活動,雖然你現(xiàn)在人們比以前富裕了,但是精神方面卻逐漸的難以支撐下去,人們在閑暇的時間通過游戲可以讓緊繃的情緒得到放松,還可以接觸到許多新鮮事物,認識許多朋友,所以游戲逐漸成為了人們生活中不可或缺的一部分。同時游戲產(chǎn)業(yè)促動高科技技術不斷升級,也成為了經(jīng)濟增長的一大支撐點。1.1項目背景作為90后的我們,在小的時候都癡迷于游戲機中的各類游戲,里面的游戲成百上千,但也有幾個讓我們記憶深刻的經(jīng)典游戲。像“雪人兄弟”、“魂斗羅”、“坦克大戰(zhàn)”等等,也正是這些游戲我們的童年也有了很大的樂趣,幾個小伙伴圍坐在游戲機前打游戲的樣子至今我還覺得很是美好。我之所以選擇基于Java的角色扮演類游戲作為我的畢業(yè)設計,也可以說是我對同年的美好回憶。目前常見的電腦游戲的類型有動作游戲、傳統(tǒng)益智游戲、多人對戰(zhàn)游戲、策略游戲、休閑游戲和角色扮演類游戲等。每種類型的游戲有著自身的特點,并且每一種游戲都有自己的受眾群體。要寫出一款良好的游戲,并且了解各個種類型的玩法思想是很有必要的。而角色扮演類也算是這么多年年來久盛不衰的一種游戲類型。1.2電腦游戲的發(fā)展歷史電子游戲這個讓人又愛又恨,同時又讓人欲罷不能的產(chǎn)物可以說是20世紀人類最偉大的發(fā)明之一,伴隨著二戰(zhàn)后物理學、計算機科學的蓬勃崛起,電子游戲從最初的實驗室里走了出來,走進了千家萬戶,逐漸成為了人們尤其是青少年最主要的娛樂方式之一,截止至今,電子游戲市場規(guī)模已經(jīng)超過千億美元。在這一片欣欣向榮的大背景下,那么電子游戲究竟是電子海洛因,是洪水猛獸還是第九藝術。“玩”,其實是人類最原始的一種天性,科學技術的發(fā)展也是為了讓人們更好的生活,更好的娛樂,更好的玩。另一方面這個命題所涵蓋的內容非常非常多,從第一世代的游戲機發(fā)展到現(xiàn)在已經(jīng)經(jīng)歷的八個世代,目前第八世代的電子游戲設備以PS4,XBOXONE,SWITCH等為主,是我們目前的主流主機,還有PC游戲的發(fā)展,網(wǎng)游和手游的崛起甚至電子競技也都值得說道說道。電子游戲發(fā)展史中還涌現(xiàn)出了非常非常多的優(yōu)秀公司、工作室、游戲制作人,游戲類型也從單一類型到現(xiàn)在的百花齊放。1.3國內游戲項目研究現(xiàn)狀盡管中國社會因傳統(tǒng)觀念影響游戲產(chǎn)業(yè)的發(fā)展,但也無法抵擋那些熱愛游戲的年輕人,隨著年輕人的長大,人們對于游戲固化的思想也從開始的抵制轉變?yōu)榻邮?。隨著互聯(lián)網(wǎng)的普及,國外許多高品質游戲流入國內,像星際爭霸,魔獸爭霸,紅色警戒這些游戲,在中國紅極一時,但由于中國對版權保護沒有意識,所以當時流通的游戲基本都是盜版游戲。直到2014年國務院才解除“游戲禁止令”。但對于中國14年的游戲產(chǎn)業(yè)斷層來說,中國游戲要發(fā)展起來還有很長的一段路要走。隨著這幾年來游戲的普及和人們對游戲已經(jīng)不像以前那樣的排斥,國產(chǎn)游戲也開始慢慢嶄露頭角,國產(chǎn)游戲廠商也因此賺得缽滿瓢滿,所以,中國的游戲市場在將來還會有很大的發(fā)展空間。1.4項目主要工作本項目開發(fā)是基于Java的簡易角色扮演游戲的設計與實現(xiàn)。這款游戲通俗來說就是玩家控制角色擊敗各個關卡的怪物達到最終通關的目的,當然,本設計中還加入了許多功能來豐富玩家的游戲體驗,如豐富的武器系統(tǒng),道具系統(tǒng)等。首先應生成一個窗口界面來承載這個游戲,其次是玩家可以通過操作實現(xiàn)對游戲中角色的控制,游戲中還必須要有敵人,角色可通過不同的武器發(fā)射不同的子彈,來對敵人造成傷害,最終擊敗敵人,玩家可通過使用道具恢復狀態(tài),還可以通過擊敗怪物或商店購買道具和武器,也可以通過積攢金幣在商人出購買道具,強大自己的戰(zhàn)斗力,擊敗各個關卡的怪物,然后結束游戲。第2章關鍵技術介紹2.1Java語言的特點(1)平臺無關性Java編程語言最大的主要優(yōu)點之一就是與它的平臺架構無關。在一個Java文件中,源代碼文件指令并非直接進行編譯后成為一個只有硬件系統(tǒng)能夠進行識別的機器指令,而是首先由一個Java軟件編譯器將其進行編譯后成為一個帶有字節(jié)行代碼的源文件。字節(jié)源代碼中的文件類型是一個已經(jīng)編譯了Java源代碼程序的開發(fā)人員可以獲得的一個文件類型編碼文件。Java的一個虛擬跨硬件平臺主要設計目的也就是為了使得多個字節(jié)的編碼執(zhí)行文件同時能夠在任何一個軟硬件的操作平臺上同時可以進行編碼操作,而Java虛擬機平臺正是一個平臺能夠同時執(zhí)行此種編碼文件同時操作的平臺虛擬機。Java虛擬機系統(tǒng)是一種基于它的軟件編譯進行系統(tǒng)模擬化的小型計算機,它可以使我們同時能夠通過軟件編譯獲取Java源代碼文件等多種方式快速獲得它的中間代碼和源文件并對不同的網(wǎng)絡平臺服務進行數(shù)據(jù)處理。(2)安全性Java的程序編程語言方式與似于C++,但是我們舍棄了使用C++的一個指針直接自動進行整個存儲器和磁盤地址的分配操作,程序在開始執(zhí)行時,內存被整個操作系統(tǒng)自動進行分配,這樣就完全可以有效地完全避免了病毒從一個存儲器中通過一個新的指針直接自動入侵整個操作系統(tǒng)。它為您的用戶程序提供一個安全的文件管理器,防止應用程序被非法用戶訪問。(3)創(chuàng)面向對象面向對象己經(jīng)成為當前應用程序開發(fā)者的首要選擇。它充分利用了Java中不同的面向對象語言的特性和優(yōu)勢,使得面向對象技術的應用和實現(xiàn)得到了深化。一般而言,Java程序的所有結構和功能都必須是建立在一個對象上。為了真正實現(xiàn)數(shù)據(jù)模塊化和隱含數(shù)據(jù),Java語言使用了函數(shù)源代碼進行封裝。繼承到Java語言中的實施,這使得函數(shù)源代碼具備可重用性。用戶可以通過將特定的函數(shù)代碼封裝到自定義類中來重用代碼。C++語言是一種比較經(jīng)典的面向對象語言。Java語言雖然繼承了C++語言中的面向對象理論,但去掉了Java語言中的一些復雜技術,簡化了面向對象的技術,如操作符重載等。經(jīng)過這樣的深入研究和綜合處理,Java實踐中的面向對象核心技術已經(jīng)逐漸變得更加簡潔易懂,同時還充分保留了面向對象的一些重要核心技術,使得企業(yè)用戶可以在實踐中不僅可以很容易地直接享有到面向對象核心技術所能夠給予的便捷。(4)創(chuàng)分布式Java是一個能夠建立在利用TPC/IP的小型網(wǎng)絡平臺上,提供了一個能夠利用利用HTTP和利用FTPP這兩種網(wǎng)絡協(xié)議同時進行信息傳送和同時接受網(wǎng)絡信息的庫函數(shù),使用它們提供相關的網(wǎng)絡技術工具能夠很好地幫助構建一個分布式的網(wǎng)絡應用程序系統(tǒng)。(5)創(chuàng)健壯性Java主要是致力于通過檢查編譯和執(zhí)行應用程序中的任何一個錯誤,自動地回收其中的內存,從而大大降低其中一個內存錯誤發(fā)生的概率。Java已經(jīng)取消了C語言的結構、指針、#define語句、多重繼承、goto語句、運算符、重載等特點,提供了垃圾搜集器和回收未使用的數(shù)據(jù)庫內存空間。2.2關于EclipseEclipse是一個開源的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于從插件組件構建開發(fā)環(huán)境。幸運的是,Eclipse附帶了一組標準的插件,包括Java開發(fā)工具(JavaDevelopmentTools,JDT)。盡管大多數(shù)用戶很樂意將Eclipse作為JavaIDE使用,但Eclipse的目標并不僅限于此。Eclipse還包括插件開發(fā)環(huán)境(Plug-inDevelopmentEnvironment,PDE),它主要針對想要擴展Eclipse的軟件開發(fā)人員,因為它允許他們構建與Eclipse環(huán)境無縫集成的工具。由于Eclipse中的所有內容都是一個插件,所以所有工具開發(fā)人員都可以在為Eclipse提供插件和為用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境方面發(fā)揮相同的作用。這種平等和一致性并不局限于Java開發(fā)工具。盡管Eclipse是在Java語言中開發(fā)的,但它的使用并不局限于Java語言;例如,支持編程語言(如C/C++、COBOL和Eiffel)的插件已經(jīng)可用或預期可用。Eclipse框架還可以用作與軟件開發(fā)無關的其他類型應用程序的基礎,比如內容管理系統(tǒng)。Eclipse是一個開源的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于從插件組件構建開發(fā)環(huán)境。第3章系統(tǒng)分析3.1用戶需求分析隨著時代的發(fā)展,人們的生活節(jié)奏越來越快,市面上充斥的大量的氪金游戲和讓人玩起來很疲憊的網(wǎng)絡游戲,人們越來越難從游戲中放松自己,娛樂身心。而本項目設計完全是一款可以讓人放下沉重的生活壓力,在閑暇之余可以讓自己疲憊不堪的精神世界可以得到治愈。在軟件設計階段,通過調查咨詢身邊的人和查閱相關的網(wǎng)絡資料,選擇了充足的游戲素材,如玩家的模型、游戲背景故事、游戲中出現(xiàn)的劇情等,都符合當代人們的喜好。這款游戲具有很好的跨平臺能力,可以實現(xiàn)不同操作系統(tǒng),不同設備的玩家體驗該游戲。該軟件項目實現(xiàn)了游戲該具備的基礎功能,并且在操上作簡單易懂、容易上手,適用于大部分人群。該程序設計項目能夠實現(xiàn)完整的劇情鏈和人物關系網(wǎng),玩家上手后會有一定的代入感,和良好的游戲體驗。3.2功能分析該設計是通過不斷闖關進行游戲的,而且游戲中為了豐富玩家的體驗還加入了許多功能,所以要考慮到很多突發(fā)事件的產(chǎn)生,必須反復的進行程序的測試。(1)玩家可以通過點擊鍵盤來操作人物的移動和實現(xiàn)各種人物的功能,敵方怪物需要有一定的智能化,這樣該款游戲才有一定的可玩性,所以要對不同的怪物進行不同的技能設計,同時,游戲中需要多個敵人同時進行人物的攻擊。該款游戲還加入了許多道具的掉落,金幣系統(tǒng)還有商人系統(tǒng),使游戲更具有可玩性。(2)要實時監(jiān)控各單位發(fā)射的子彈,判斷擊中的是什么物體,需要開辟一個獨立的線程來處理子彈,控制所有物體。同時,在虛擬機上保持運行這么多線程,可能會導致程序變慢甚至癱瘓。(3)游戲界面中的物體種類比較多,所以要實時對人物周邊的環(huán)境進行掃描檢測,來避免物體重疊。(4)游戲中的動態(tài)圖片可增加游戲的美觀性,漂亮的用戶界面可引起玩家對一款游戲的好感,所以游戲界面的設計與實現(xiàn)需要充分地調研。(5)游戲地圖設計中加入了許多不同的圖片,過大的圖片會束縛程序的大小,需要熟練掌握Graphcis()方法的使用。同時,使用讀取外部文件的方法來加載游戲關卡,這樣可以減少內存的使用,保證游戲的流暢性。(6)游戲中需要實時記錄監(jiān)控人物的各項數(shù)據(jù),其中包括人物功能和人物屬性,以及解決數(shù)據(jù)存的儲方法。3.3功能結構通過市場調研分析總結出本項目設計包含用戶進入游戲,用戶通過按鍵控制游戲人物的各項功能,游戲地圖的切換和滾動原理的實現(xiàn),不同陣營的人物顯示不同的外觀,以區(qū)分敵人和友方單位,武器系統(tǒng)中每種武器有獨有的攻擊特效和彈道效果,還加入了NPC實現(xiàn)裝備的買賣和玩家的互動。具體功能框架如圖3.1所示。圖3.1功能結構圖3.3.1界面生成(1)創(chuàng)建怪物創(chuàng)建怪物容器寫進怪物屬性并導入相應怪物所對應的素材,并在相應的關卡位置生成怪物,怪物會對玩家發(fā)射子彈攻擊或碰撞攻擊,使玩家損失一定量的生命值,這也為游戲增加了難度,使游戲每一個關卡都有不同的難度體驗。(2)創(chuàng)建草坪初始化地圖,導入地圖文件夾中的地圖,并在相應的關卡生成不同的背景圖片,這樣會讓玩家不再審美疲勞,玩家每次進入一個新的關卡都有獨特的視覺體驗,這樣游戲更具美感,不再單調。(3)創(chuàng)建NPC在特殊關卡會有NPC的出現(xiàn),他們會售賣一定的裝備或消耗道具,玩家可通過花費金幣來購買,這樣可提升玩家的戰(zhàn)斗力,讓玩家為之后的戰(zhàn)斗做好準備。(4)創(chuàng)建路障在地圖中添加各種路障,如河流,樹木等,這樣會使地圖更加有立體感,同時也更考驗玩家的操作,這樣可以增加游戲的可玩性。(5)創(chuàng)建道具玩家可以通過擊敗怪物,拾取怪物掉落的道具,也可以通過玩家在NPC處購買獲得。道具分為消耗品道具和裝備型道具兩個部分,消耗品道具可恢復玩家的血量或生命值,裝備型道具可增加玩家的生命值或魔法值上限,使游戲內容更加豐滿。3.3.2人物功能(1)玩家使用道具恢復血量或藍量玩家在與怪物戰(zhàn)斗后會被怪物擊中或碰撞損失一定量的血量,玩家可通過使用回血道具恢復血量;玩家在使用消耗魔法值的武器時損失一定量的魔法值,使用恢復法值的道具可恢復玩家的魔法,使玩家可繼續(xù)使用消耗魔法值的道具。(2)玩家拾取道具背包內獲得玩家可通過擊敗怪物拾取金幣或道具,也可以通過商店購買道具,拾取裝備類型道具會自動丟棄當前所攜帶的裝備。(3)玩家打敗當前關卡怪物進入下一關玩家只有擊殺當前關卡所有怪物才會出現(xiàn)下一關卡的入口,此條件為進入下一關卡的唯一條件,這樣會激發(fā)玩家的好奇心,從而讓玩家有繼續(xù)玩下去的想法。(4)玩家可通過按鍵實現(xiàn)人物的操控玩家可通過鍵盤對游戲中的人物進行控制。(5)玩家通過按鍵切換武器玩家可通過鍵盤切換武器按鍵來實現(xiàn)武器的切換,這樣增加了玩家的可操作性和游戲策略性。(6)玩家金幣購買道具玩家可在NPC出花費已有的金幣購買自己想要的道具,還可以通過花費金幣刷新NPC所售賣的道具,以此來提升人物的戰(zhàn)斗力。(7)玩家可通過發(fā)射子彈擊敗怪物玩家可通過鍵盤點擊發(fā)射子彈按鍵,發(fā)射當前武器專屬子彈,每種武器擁有自己獨有的傷害和特效,這樣使游戲更具有觀賞性和可玩性。3.3.3武器系統(tǒng)(1)武器該游戲中有多種武器可供玩家使用,玩家可通過怪物掉落拾取或使用金幣在商店處購買武器。(2)子彈每一種武器都有獨特的子彈類型,每種子彈有自己的彈道、速度攻擊力,所以在子彈碰撞檢測中也會根據(jù)每種子彈的像素大小做出檢測。(3)特效有部分子彈在擊中怪物后怪物會生成一個負面狀態(tài),如中毒、燃燒等。3.4難點分析(1)界面美化在游戲的開發(fā)過程中每一種道具或者人物都要有自己的靜態(tài)模型,動態(tài)模型以及碰撞模型等交互動畫,這些動畫或者靜態(tài)模型會在用戶的游戲體驗中表現(xiàn)得尤為重要。只有視覺上的直觀感受與用戶的操縱性相結合,才能夠加強用戶的游戲體驗。因此在游戲各個界面的模型選材上必須進行有必要的篩選工作。(2)多線程實現(xiàn)游戲的開發(fā)勢必要求足夠性能的支撐,而多線程技術恰好能夠實現(xiàn)多任務的編程工作,能夠較大的提高系統(tǒng)的性能以及資源使用率。runnable接口用于定義用戶線程,它不會更改其他類的繼承或其他接口的實現(xiàn)。(3)碰撞事件用戶操作角色進行子彈的發(fā)射,與游戲內怪物或者墻體邊界的碰撞測試。包含了角色或者子彈與怪物或游戲邊界的接觸,對子彈的飛行路徑的監(jiān)測與怪物或游戲邊界的部分進行同步的監(jiān)測工作,如果產(chǎn)生區(qū)域重疊則判定為碰撞事件發(fā)生。(4)移動實現(xiàn)游戲角色的移動實際上是背景滾動所帶來的視覺感受。借助游戲背景的移動,讓用戶感受到所控制角色在地圖中進行各種移動的操作。3.5游戲流程分析用戶進入游戲開始界面,選擇開始游戲,用戶可通過方向鍵按鍵控制游戲人物的移動,還可以實現(xiàn)人物的發(fā)射子彈,切換子彈,使用道具,切換道具等功能。人物在游戲中移動時通過切換和滾動原理的實現(xiàn)地圖的變換。玩家通過自己操作擊敗怪物,通過自己的運營和策略豐富自己的道具。玩家只有在擊敗當前關卡所有怪物后才可進入下一關卡,最終玩家可以通過擊敗最終關卡的怪物來達到通關的目的,游戲流程如圖3.2所示。圖3.2游戲流程圖3.6系統(tǒng)環(huán)境可行性分析硬件環(huán)境需求:CPU:Inteli5-6500及以上內存:2G及以上軟件環(huán)境需求:操作系統(tǒng):Windows10開發(fā)平臺:Eclipse3.7技術可行性分析技術可行性,實際上取決于技術條件能否滿足本項目的開發(fā)工作。本項目設計開發(fā)平臺為Eclipse,開發(fā)語言為Java,平臺無關性是Java語言的最大優(yōu)勢,而且Java可以處理各種異常,能夠滿足角色扮演游戲的開發(fā)需求。硬件方面,電子行業(yè)的快速發(fā)展,芯片的算力已經(jīng)很強,所以市面上大多數(shù)電腦都能完美運行。綜上所述,本軟件的開發(fā)在技術上是可行的。3.8經(jīng)濟可行性分析由于游戲項目的開發(fā)成本低,沒有任何經(jīng)濟上的困難,所以這款游戲在提高工作效率上是一個優(yōu)勢。同時,軟件的變更也非常方便和實用,項目成功運行后的變更也很簡單。使得用戶只需要直接將其中一個軟件裝入自己計算機。所以當人們對于游戲中的某些功能感到不滿意,只需要修改信息和升級特定功能模塊。綜上所述,本軟件在經(jīng)濟上具有可行性。3.9安全性分析在C/C++中,指針的廣泛性和使用被普遍認為已經(jīng)是一個高級別的主題。如果練掌握了這個指針,將來就會為整個軟件程序的設計編寫和日常運行操作帶來極大的方便。但如若是在該數(shù)據(jù)指針正常運行時在使用期間失效,則很有可能會直接影響導致整個系統(tǒng)的數(shù)據(jù)資源被完全泄漏,此外,錯誤的數(shù)據(jù)運算處理操作也必定有一種可能甚至會直接影響導致非法指針訪問一個系統(tǒng)文件的數(shù)據(jù)存儲器和文件地址存儲空間,給整個操作系統(tǒng)過程造成了一種災難性的數(shù)據(jù)損失,因此對于C/C++中多個指針的錯誤運算操作應該應當引起高度重視。而在Java中,沒有這樣的指針。所有的存儲空間訪問程序都是根據(jù)Java語言本身來完成的,存儲空間之間并沒有一種訪問的方法。它能夠確保一個地址空間沒有受到任何意外或無意損壞。而經(jīng)過這些處理,也能夠有效地避免整個系統(tǒng)資源泄漏。3.10社會可行性分析該游戲的社會可行性將通過法律影響因素和玩家的使用可行性兩個多方面進行綜合說明。(1)法律因素本次畢業(yè)設計主要是基于Java的簡易角色扮演游戲,參考了目前市場上銷售的各種角色扮演游戲類型,觀察到它們在游戲中所需要實現(xiàn)的各種功能以及缺點和不足之處,但是這些軟件的研究開發(fā)和論文編寫都是獨立完成的,沒有剽竊過目前市場上或網(wǎng)上的任何同類型游戲。(2)玩家使用可行性該款游戲適用于群體大眾,因為其操作簡單、易上手,不需要提前進行練習培訓,可行性較高。綜上所述,本軟件具有社會可行性。
第4章系統(tǒng)設計4.1設計指導思想和原則4.1.1指導思想系統(tǒng)設計主要是對一款游戲的總體情況進行了規(guī)劃性的工作,即在整個系統(tǒng)項目正式開始和編寫之前,要對整個游戲的研究和開發(fā)流程進行一定的規(guī)劃,知道每個階段的工作做是什么。本次項目系統(tǒng)設計的具體任務就是對游戲整體模型進行了設計和規(guī)劃,同時還需要對系統(tǒng)中的游戲設計文件進行詳細的描述。策劃的內容包含了整個游戲的全部內容。此外,游戲素材需要準備充分,這樣在制作游戲中的過程中才能手到擒來。而程序開發(fā)的流程是按照游戲策劃階段設計好的游戲內容運用代碼逐一地加以實現(xiàn)。該系統(tǒng)設計包括:背景設計、數(shù)據(jù)設計、關卡設計等。這款游戲是屬于一款角色扮演類的游戲,在這款游戲的策劃中主要包括了關卡設計,這一過程中就需要通過應用軟件來實現(xiàn),并與素材資源搜集和綜合制作。也就是說,我們需要根據(jù)整個任務體系的框架來對這本任務書進行編寫。4.1.2軟件設計原則軟件系統(tǒng)總體設計的目標和任務主要是通過實現(xiàn)軟件模塊的設計和實現(xiàn)軟件系統(tǒng)體系的結構化設計,軟件系統(tǒng)體系結構化的概念是整個軟件系統(tǒng)中最基本的元素,因為軟件體系結構主要是對于復雜物體和應用的抽象,可以直接描述不同風格的各種軟件系統(tǒng)結構,高效地處理各種應用需求。良好的軟件架構體系結構表示了高效和穩(wěn)定性。該游戲項目的主要設計原則有:簡單性:本次軟件中的項目基本實現(xiàn)了各種角色扮演類網(wǎng)絡游戲的各種基本功能,并且使得它們在操作上做得簡單、易學和上手,適合大部分的人群。針對性:這款角色扮演類網(wǎng)絡游戲主要是基于Java的應用程序而開發(fā)的一個項目,具有較強的針對性。實用性:該程序設計項目能夠實現(xiàn)角色扮演類游戲的基本功能功能,還加入了許多創(chuàng)新的關卡和游戲模式。4.2系統(tǒng)功能設計用戶進入游戲開始界面,選擇開始游戲,用戶可通過方向鍵按鍵控制游戲人物的移動,還可以實現(xiàn)人物的發(fā)射子彈,切換子彈,使用道具,切換道具等功能。人物在游戲中移動時通過切換和滾動原理的實現(xiàn)地圖的變換。玩家通過自己操作擊敗怪物,通過自己的運營和策略豐富自己的道具。玩家只有在擊敗當前關卡所有怪物后才可進入下一關卡,最終玩家可以通過擊敗最終關卡的怪物來達到通關的目的,系統(tǒng)功能流程圖如4.1所示。圖4.1系統(tǒng)功能流程圖(1)界面生成功能玩家進入游戲后,通過GameMap(GameFramegf)導入游戲畫面,通過ArrayList中讀取地圖數(shù)據(jù),通過創(chuàng)建list表生需要用到的不同素材的相應容器,readAirWall()讀取地圖中路障的位置;drawBace(Graphicsg)繪制底部地圖元素,通過bg.draw(id,g)繪制背景,通過drawMedium(Graphicsg)繪制頂部地圖元素。通過mob.drawMob(g)繪制出怪物,通過bullet.getType()==0定義三種傷害類型。界面生成類關系如圖4.2所示。圖4.2界面生成類圖(2)人物功能actorLined開啟人物線程,x,y定義角色初始位置,dir定義人物朝向,speed設置人物移動度,用width和height設置人物圖片的顯示大小,getImage()獲取人物素材圖片。通過state接口判斷人物距離地圖邊界的距離來設置地圖的滾動;獲取人物和路障的坐標和尺寸信息,并根據(jù)其尺寸生成相應大小的矩形,通過碰撞檢測確定人物與路障的相對位置,如果碰撞人物停止移動。isActorLined()實時獲取任務狀態(tài)信息。人物功能類關系如圖4.3所示。圖4.3人物設計類圖(3)武器功能getId()獲取武器序號,setCd(intcd)設置武器攻擊間隔,getCdLimit()設置武器的攻擊力,并在武器類中獲取子彈類中相對應的子彈信息,getName()設置武器名稱,getInfo()獲取武器介紹,在子彈類中通過list表儲存各種子彈的屬性,用RectanglegetRect()獲取子彈的攻擊范圍,并通過getRect().intersects()來判斷子彈是否擊中怪物,在子彈擊中怪物身上會產(chǎn)生相應的特效。武器系統(tǒng)類關系如圖4.4所示。圖4.4武器功能類圖4.3界面設計4.3.1開始界面設計該款游戲擁有兩個窗口界面窗口,第一個為開始窗口界面,一個為游戲窗口界面,運行游戲后,首先看到的是開始界面,在玩家做好準備后可點擊開始進入游戲,其中開始按鍵為一個新建窗口的監(jiān)聽器KeyListenerkl;在玩家點擊開始按鍵后會監(jiān)聽器會向游戲窗口注冊生成一個新的界面gf.addKeyListener(kl),并關閉開始界面。游戲開始界面如圖4.5所示。圖4.5開始界面設計4.3.2游戲界面設計該在進入游戲界面后,在窗口中繪制各種功能模塊。通過draw(Graphicsg)在GameFrame內繪制生命值、魔法值、金幣的數(shù)值和圖像顯示,生成基本的UI界面。在GameFrame內導入地圖數(shù)據(jù),并在地圖中繪制路障、人物、怪物、道具。游戲UI界面設計如圖4.6所示。圖4.6游戲界面設計4.4游戲操作設計玩家通過按鍵來實現(xiàn)人物的各項功能,首用keyPressed(KeyEvente)來監(jiān)聽按鍵按下,按鍵按下后可實現(xiàn)人物的控制,如移動、攻擊等。用keyReleased(KeyEvente)來監(jiān)聽按鍵抬起,在按鍵抬起后可以停止一些當前動作。具體流程如圖4.7所示圖4.7游戲操作設計4.5怪物的設計本設計中使用到了6種不同的怪物,不同的怪物有不同的屬性。每種怪物的屬性信息都儲存在mobList中,在怪物唄子彈擊中后怪物會失去相應的生命值,還會通過mobSatusUpdate(GameFramegf)方法更新當前狀態(tài),如燃燒、中毒冰凍等,怪物通過mobAtk(GameFramegf)方法攻擊人物。為了使怪物更加智能化,每一種怪物有特定的移動方式來追蹤人物,最后在使用(Graphicsg)繪制出怪物當前的所有信息。具體設計如表4.1所示。表4.1怪物設計表怪物序號怪物血量怪物大小子彈編號移動速度圖片110032*3271250032*32823100032*32934250032*321045250032*321156500032*321254.6道具系統(tǒng)設計道具系統(tǒng)分為消耗品道具和武器道具兩個部分,其中裝備分為頭部,身體,武器三個部分,可增加人物的血量攻擊力等屬性;恢復類道具可恢復人物的魔法值和生命值。商店會隨機出售一些裝備和道具,如果沒有想要的裝備或道具可選擇花費金幣刷新商店所售物品。頭部裝備信息儲存在hatList中,身體裝備信息儲存在equipList中,消耗品道具信息儲存在itemList中,玩家通過裝備或使用道具更新玩家相關屬性的數(shù)據(jù)。道具屬性設計如表4.2所示。表4.2道具設計表道具效果圖片頭部裝備1增加40生命值上限頭部裝備2增加80生命值上限頭部裝備3增加40生命值上限和100魔法值上限頭部裝備4增加400生命值上限頭部裝備5增加240生命值上限和500魔法值上限身體裝備1增加50生命值上限身體裝備2增加100生命值上限身體裝備3增加50生命值上限和100魔法值上限身體裝備4增加500生命值上限身體裝備5增加30生命值上限和500魔法值上限消耗道具1恢復60生命值消耗道具2恢復60魔法值消耗道具3恢復100生命值和魔法值消耗道具4恢復200生命值消耗道具5恢復200生命值消耗道具6恢復500生命值和魔法值4.7武器系統(tǒng)設計這款游戲有多種可供玩家使用的武器,他們可通過怪物掉落,或在商店花費金幣購買來獲得,每種武器擁有不同的子彈屬性,如傷害、速度、特效、像素大小并且他們還會產(chǎn)生不同的攻擊特效,如灼燒,冰凍等、中毒等。當子彈擊中墻體后,子彈會自行消失,不會穿墻而過,造成內存的泄露,在每一關卡的切換后都會重置子彈容器。武器屬性儲存在bulletList中,玩家使用武器攻擊會調用當前武器特效,并在玩家坐標方向相對應的位置發(fā)射出子彈。具體武器系統(tǒng)設計如表4.3所示。表4.3怪物設計表子彈序號子彈傷害子彈大小特效編號移動速度圖片110032*3278250032*32883100032*32984250032*321085250032*321136500032*321204.8碰撞檢測設計游戲中的碰撞檢測。游戲的開發(fā)和設計,會涉及到很多物體之間的碰撞問題。矩形碰撞、像素碰撞和圓碰撞是常見的碰撞。游戲中的檢測就是觀察長方體之間是否有交集。如果測試對象之間的邊界重疊,則可以使用循環(huán)碰撞。通過比較物體的路徑長度和半徑,如果物體的長度小于其半徑之和,說明在博弈過程中存在碰撞。物體形狀一般可以設定為矩形區(qū)域,這類規(guī)則圖形。它的碰撞檢測可以通過JAVAAPI中的Rectangle類來實現(xiàn)碰撞的檢測。規(guī)則圖形碰撞檢測(Rectangle),API關于Rectangle類的介紹:它就是指定坐標空間的一個區(qū)域,這個區(qū)域是通過指定左上角x、y坐標和去高度和寬度來確定的。具體的方法是使用publicRectangleintersection(Rectangle
r)方法,這個方法就是碰撞檢測的關鍵,如果兩個Rectangle對象有交集,那么兩物體之間就產(chǎn)生了碰撞。本設計中人物碰撞檢測是通過getRec()方法就是得到人物圖形的Rectangle對象,具體實現(xiàn)就是根據(jù)其坐標和width、height來生成。采用此種方法進行碰撞檢測需要注意,對于圖片的實現(xiàn)處理應該盡量的去掉圖標邊角的空白,不然實際效果可以產(chǎn)生肉眼可辨的誤差。也就是說Rectangle盡量的包住圖形且Rectangle的區(qū)域盡量小。這種碰撞檢測的方法被稱之為多矩形碰撞。但本設計中素材圖片較小,不影響玩家實際體驗,所以不用擔心矩形邊緣過大的問題。一般規(guī)則的物體碰撞都可以處理成矩形碰撞,實現(xiàn)的原理就是檢測兩個矩形是否重疊。矩形1的參數(shù)是:左上角的坐標是(x1,y1),寬度是w1,高度是h1;矩形2的參數(shù)是:左上角的坐標是(x2,y2),寬度是w2,高度是h2。在檢測時,數(shù)學上可以處理成比較中心點的坐標在x和y方向上的距離和寬度的關系。即兩個矩形中心點在x方向的距離的絕對值小于等于矩形寬度和的二分之一,同時y方向的距離的絕對值小于等于矩形高度和的二分之一,計算公式為:x方向:|(x1+w1/2)–(x2+w2/2)|<|(w1+w2)/2|;y方向:|(y1+h1/2)–(y2+h2/2)|<|(h1+h2)/2|。碰撞檢測設計如圖4.8所示。圖4.8碰撞檢測設計4.9多線程設計有兩種方法可以使Java中的線程實現(xiàn)。一個方法就是通過實施runnable接口來將runnable接口在用戶本身的類之間進行。這個特定的接口只有一個run(),需要在其中指定方法體和操作。當線程運行時,run()方法中的操作將被執(zhí)行。第二種是通過創(chuàng)建一個用戶自己的Thread子類,此類封裝了線程的各種屬性和行為。Thread類的主要方法有四種:定義啟動線程的途徑和方法,定義線程步驟的途徑和方法,暫停線程的途徑和方法,結束線程的途徑和方法,以及確定一個線程目前是否正在死亡的途徑和方法。上述兩種線程實現(xiàn)的方式雖然并不完全相同,盡管它們都可以從某些運算器中獲得獨立地執(zhí)行任務。繼承Thread這個類的主要特征之一就是操作簡便,但它的性質和功能也很明顯。由于Java語言并沒有完全支持項目的多重繼承,因此無法從其他語言中繼承,這將會直接影響項目開發(fā)。實現(xiàn)Runnable接口的方法不影響其他接口的實現(xiàn),也不影響其他類的繼承,更加靈活。因此,本項目采用Runnable接口來實現(xiàn)多線程。4.10雙緩沖設計雙圖形緩沖器技術是一種用于設計實現(xiàn)各種圖形化的影像編碼處理與圖形編程,軟件過程系統(tǒng)中的基本硬件技術。表單在需要發(fā)出一個響應WM_PAINT這個信號源的消息時它還需要對其信號進行復雜的圖形處理,重繪表單時刷新頻率過高導致了flash現(xiàn)象。而且要解決該問題的一種有效辦法就是采用雙緩沖。因為在重新刷新一個表單時,必須始終保持有一個擦除原始圖像的過程,即OnEraseBkgnd,它用一個背景顏色來填充整個表單的所有繪制區(qū)域,然后再調用一個全新的繪制代碼重新進行繪制它,從而造成圖像顏色的對比。當WM_PAINT響應頻繁時,對比就會變得越來越明顯,這時就會出現(xiàn)閃爍現(xiàn)象。BitBlt函數(shù)已經(jīng)可以完全支持對圖形塊進行復制,我們可以首先在一個內存中進行繪制,然后再次使用這個函數(shù)將已經(jīng)完成的圖像復制放置到一個前臺,禁止其他后臺的刷新,從而徹底消除了閃爍。以上介紹的是雙緩沖測試繪制方法的基礎和思路,具體設計如圖4.9所示。圖4.9雙緩沖設計
第5章系統(tǒng)實現(xiàn)5.1窗口界面的實現(xiàn)5.1.1開始窗口的實現(xiàn)用戶在運行游戲后會生成一個開始界面的窗口,玩家可通過點擊開始按鈕進入游戲,或點擊退出按鈕關閉游戲,開始窗口的實現(xiàn)如圖5.1所示,具體實現(xiàn)代碼如下:jf.setSize(640,450);jf.setIconImage(icon);jf.setLocationRelativeTo(null);jf.setResizable(false);GameFramegf=null;try{gf=newGameFrame();}catch(Exceptionex){ex.printStackTrace();}KeyListenerkl=newKeyListener(gf);gf.addKeyListener(kl);圖5.1開始窗口實現(xiàn)5.1.2游戲窗口實現(xiàn)用戶在點擊生成開始界面窗口中的開始按鍵后會出現(xiàn)一個新的游戲窗口,在窗口中會生成地圖、UI界面、路障、人物、怪物、道具等,游戲窗口的實現(xiàn)如圖5.2所示,具體核心代碼如下:publicclassGameFrameextendsJFramepublicDataactorData=newData();publicActoractor=newActor(this);publicGameMapgameMap=newGameMap(this);publicMenumenu=newMenu(actorData);publicUIui=newUI(this);publicvoidinitAirWall()圖5.2游戲窗口的實現(xiàn)5.1.3背包面板的實現(xiàn)Menu類繪制了玩家背包內物品的位置顯示,Item類和Arm類中儲存了各類道具和武器的屬性,玩家可通過打開背包面板查看人物當前裝備和道具的屬性。背包界面的實現(xiàn)如圖5.3所示,具體實現(xiàn)代碼如下:g.drawImage(menuBackImage,0,0,null);if(arms.size()+2==3){g.drawImage(circleXImage,386,219,null);g.drawImage(circleXImage,339,312,null);g.drawImage(circleXImage,386,405,null);圖5.3背包界面的實現(xiàn)5.2NPC的實現(xiàn)游戲中,玩家可通過在NPC處購買相應的道具。NPC界面的實現(xiàn)如圖5.4所示,具體實現(xiàn)代碼如下:if(gf.actorData.getMoney()>=cost){for(inti=2;i<gf.gameMap.eventList.size();i++){if(gf.gameMap.eventList.get(i).isLive()&&((gf.gameMap.eventList.get(i).eventid==2||gf.gameMap.eventList.get(i).eventid==3||gf.gameMap.eventList.get(i).eventid==4))){gf.gameMap.eventList.remove(i);gf.gameMap.eventList.add(i,newEvent(gf.gameMap.id,gf.gameMap.x,gf.gameMap.y,i));}}gf.actorData.adjustMoney(-cost);}圖5.4NPC的實現(xiàn)5.3怪物的實現(xiàn)游戲中,為了體現(xiàn)出不同關卡的難度,每一關的怪物設定也會不同,所以需要對每一種怪物進行出現(xiàn)數(shù)量及位置還有屬性的設定。MOb類通過mobList設置了怪物的共同屬性,并根據(jù)不同外形的怪物設置了不同的屬性,通過StringgetMobName函數(shù)給怪物設置名稱,通過ImagegetMobimg方法獲取怪物圖像信息,最后用draw(Graphicsg){}方法在地圖中相應位置加入怪物。具體實現(xiàn)代碼如下:publicMobmob;ArrayList<Mob>mobList=newArrayList<>();float[][]mobList={};privateImagegetMobimg()publicvoidaddEffect(intefid){effects.add(newEffect(this,originX,originY,efid));}publicvoiddrawEffect(Graphicsg){for(inti=0;i<effects.size();i++){effects.get(i).draw(g,originX,originY,this);}}5.4怪物智能化的實現(xiàn)讓怪物智能化,可讓怪物對人物自動發(fā)射子彈或向玩家靠近,這樣產(chǎn)生了碰撞會使玩家拾取一定生命值,通過RandomMove()方法怪物可實現(xiàn)隨機移動,通過closeMove()方法怪物可實現(xiàn)靠近人物移動,通過leaveMove()方法怪物可實現(xiàn)遠離人物移動。具體實現(xiàn)代碼如下:publicvoidmove(GameFramegf)publicvoidaction()publicbooleanRangeCheck(inta,intb)publicbooleanhit(intpoint)publicvoidmoveUpublicvoidcloseMove()publicvoidleaveMove()publicvoidRandomMove()5.5地圖的實現(xiàn)人物及障礙物和敵人所處的場景,并且將路障和怪物繪制到場景中。在該類中包括用于存放敵人和障礙物的list集合,以及當怪物被消滅后用于存放已經(jīng)消失的怪物集合,這樣做是為了人物復活所用。同時地圖在每一關卡進行切換,人物移動地圖隨之滾動。具體實現(xiàn)代碼如下:publicvoidgameMapScroll(intx,inty)publicbooleancheckGameMapScroll(intx,inty)publicvoidChangeMap(intid,intx,inty)publicvoidpaint(Graphicsg){BufferedImagebufferedImage=(BufferedImage)this.createImage(this.getSize().width,this.getSize().height);Graphicsgp=bufferedImage.getGraphics();gameMap.drawBace(gp);actor.drawEffect(gp);gameMap.drawMedium(gp);gameMap.drawTop(gp);5.6路障的實現(xiàn)創(chuàng)建list表,并把地圖分成一定量的矩形小格,通過list表表示每個矩形小格所代表的物體的坐標,如樹木,空地,河流等,這樣玩家在遇到地圖中的路障會停止前進,這樣會更考驗玩家的操作,同時也使游戲更具可玩性。list表具體實現(xiàn)如圖5.5所示。具體實現(xiàn)代碼如下:privatevoidreadAirWall()throwsExceptionpublicvoidwriteAirWall()throwsExceptionpublicvoidcreateSquare()throwsExceptionpublicvoiddrawCover(intid,intx,inty,Graphicsg)圖5.5路障實現(xiàn)list表圖5.7子彈功能的實現(xiàn)該游戲中有多種武器可供玩家使用,玩家可通過怪物掉落拾取或使用金幣在商店處購買武器。每一種武器都有獨特的子彈類型,每種子彈有自己的彈道、速度攻擊力,所以在子彈碰撞檢測中也會根據(jù)每種子彈的像素大小做出檢測。有部分子彈在擊中怪物后怪物會生成一個負面狀態(tài),如中毒、燃燒等。具體實現(xiàn)代碼如下:publicBulletbullet;ArrayList<Bullet>bullets=newArrayList<>();privateint[][]bulletListpublicBullet(intdir,intx,inty,intoldx,intoldy,intid,floatatk)publicintgetBulletID(){returnbulletID;}publicRectanglegetRect()publicvoiddraw(intid,Graphicsg)5.8道具功能實現(xiàn)道具功能分為消耗品道具和武器道具兩個部分,其中裝備分為頭部,身體,武器三個部分,可增加人物的血量攻擊力等屬性;恢復類道具可恢復人物的魔法值和生命值。具體實現(xiàn)代碼如下:privateint[][]itemListItem(intid,inttype,intnumber)publicintgetId()publicintgetType()publicvoidadjustNumber(inta)publicintgetNumber()publicvoiduseEffect(inti,Datadata)publicImagegetImage()publicStringgetName()publicStringgetInfo()5.9操作功能實現(xiàn)通過keyPressed(KeyEvente)和publicvoidkeyReleased(KeyEvente)實時獲取按鍵信息,并設定相應信息執(zhí)行相應的操作。具體操作方法如圖5.6所示,具體實現(xiàn)代碼如下:publicclassKeyListenerextendsKeyAdapterpublicvoidkeyPressed(KeyEvente)publicvoidkeyReleased(KeyEvente)if(code==123){if(gf.test){gf.test=false;try{gf.gameMap.writeAirWall();}catch(Exceptione1){e1.printStackTrace();}}elsegf.test=true;}圖5.6操作方法圖第6章系統(tǒng)測試軟件測試指的是使用測試工具,按照所示的測試計劃對各種軟件的性質和功能做出測試。同時,可以根據(jù)自己的需要來構造不同類型的工具。它可以研究并估計檢驗方案中各種可能存在的問題。在測試實際例完成后,需要對故障進一步追溯,以確保所開發(fā)出來的產(chǎn)品能夠滿足要求。軟件測試的功能是找出程序中的缺陷,完善的軟件測試會發(fā)現(xiàn)到目前為止還沒有發(fā)現(xiàn)的錯誤,所以軟件測試的工作就是開發(fā)有效的測試用例,找出軟件中隱藏的錯誤和缺陷。6.1測試方案程序質量測試的實現(xiàn)方式主要分為有使用白盒程序測試和使用黑盒程序測試兩種。白盒測試也稱為結構測試,是基于代碼的測試。從字面意義上講,白盒意味著可以看到裝有被測軟件的盒子,它可以清晰直接地掌握盒子內部的東西和工作原理。白盒方法屬于組路徑測試,它可以充分理解程序的邏輯結構,達到測試的目的。然而,它并不能有效地驗證規(guī)范,盡管每個路徑都經(jīng)過了合理的測試,但仍然有可能出現(xiàn)錯誤。對于一些大型的代碼模塊,黑盒測試優(yōu)于白盒測試,本項目試驗采用黑白試驗法相結合,以黑盒測試法為主要試驗方法。6.1.1游戲環(huán)境及開始測試本設計是基于Java語言,以Eclipse為平臺制作的一款簡易RPG類型的游戲,首先要測試該軟件是否能夠成功地運行和進入游戲界面。測試結果見表6.1。表6.1游戲環(huán)境及開始測試測試功能用例描述測試步驟預期結果實際結果類別環(huán)境模塊將代碼放入Eclipse中,查看運行情況,觀察是否報錯啟動Eclipse,運行程序代碼,看是否有報錯信息。完整的代碼可以在Eclipse中運行,在虛擬機中可以愉快地體驗該游戲。與預期結果一致環(huán)境測試主菜單開始按鍵測試用戶在主菜單鼠標點擊開始按鍵進入游戲運行程序點擊開始按鍵進入游戲第一關與預期結果一致功能測試主菜單退出按鍵測試用戶在主菜單鼠標點擊退出按鍵關閉游戲運行程序點擊退出按鍵游戲窗口關閉與預期結果一致功能測試6.1.2人物功能測試該游戲為角色扮演類型游戲,所以對當前人物控制和人物功能的測試是非常重要的。測試結果見表6.2表6.2人物功能測試測試功能用例描述測試步驟預期結果實際結果類別控制人物移動功能玩家通過上下左右四個按鍵控制人物的移動游戲中,通過上下左右按鍵來躲避敵人的攻擊玩家通過上下左右按鍵可實游戲中人物的移動與預期結果一致功能測試人物發(fā)射子彈功能玩家通過點擊子彈發(fā)射按鍵控制子彈的發(fā)射玩家點擊子彈發(fā)射按鍵來擊敗怪物玩家通過點擊子彈發(fā)射按鍵發(fā)射子彈擊敗敵人與預期結果一致功能測試人物使用道具功能玩家通過點擊使用物品按鍵使用當前物品玩家點擊使用物品按鍵,并使用血藥玩家恢復了一定的血量與預期結果一致功能測試人物切換道具功能玩家通過點擊切換物品按鍵切換當前物品玩家點擊切換道具鍵,切換成魔法藥,并使用玩家恢復了一定的藍量與預期結果一致功能測試人物信息面板的展示玩家點擊查看人物信息按鍵可查看人物當前武器和道具信息玩家點擊查看人物信息按鍵出現(xiàn)了人物信息面板與預期結果一致功能測試6.1.3怪物掉落功能測試玩家可通過擊敗怪物獲取一定的金幣或道具。測試結果見表6.3。表6.3怪物掉落功能測試測試功能用例描述測試步驟預期結果實際結果類別怪物掉落功能游戲中特定的怪物會掉落一定的裝備或者道具擊敗程序中特定的怪物,是否有物品掉落特定的怪物擊敗后掉落了所設定的物品與預期結果一致功能測試玩家可通過擊敗怪物獲取到的金幣在商店購買自己想要的道具。測試結果見表6.4。表6.4怪物掉落功能測試測試功能用例描述測試步驟預期結果實際結果類別商店購物功能玩家可以通過積攢金幣來購買武器或道具玩家攢夠金幣去商店購買武器或物品玩家消耗了金幣并且購買到了想要的武器與預期結果一致功能測試6.1.4地圖檢測功能測試在地圖中添加了河流樹木等素材,通過list表管理人物是否能通過相對應的地圖坐標,對本該有路障的坐標進行通過測試。玩家在沒有擊敗該關卡中所有怪物之前,通關的路徑上會有一堵空氣墻阻止玩家前進。測試結果見表6.5。表6.5地圖檢測功能測試測試功能用例描述測試步驟預期結果實際結果類別地圖顯示路障是否與實際寫入路障相符玩家可按照地圖顯示的路障前進或停止操控人物對地圖的沒一個角落進行移動玩家在遇到地圖顯示的路障時停
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職計算機(程序設計基礎)試題及答案
- 2026年談判能力(談判技巧)考題及答案
- 2025年大學特殊教育(特殊教育方法)試題及答案
- 2025年中職服飾配件(箱包設計基礎)試題及答案
- 2025年中職攝影(攝影基礎知識)試題及答案
- 2026年深圳單招運動訓練專業(yè)專項考試經(jīng)典題含答案籃球足球田徑
- 2026年湖北單招考試十大類專用高頻題含答案解析
- 2026年新疆單招職業(yè)適應性測試時事政治職業(yè)認知模擬題含答案
- 2026年黑龍江單招機電一體化技術經(jīng)典題集含答案
- 2026年湖南單招交通運輸類文化素質高頻題集含答案語數(shù)英合卷
- 一級建造師考試機電工程管理與實務試卷及答案(2025年)
- 2025年天津市直機關遴選公務員面試真題及解析
- 2026年濰坊護理職業(yè)學院單招職業(yè)傾向性考試必刷測試卷及答案1套
- 醫(yī)保政策學習課件
- 雨課堂學堂在線學堂云《科學研究方法與論文寫作(復大)》單元測試考核答案
- 2025浙江省自由貿(mào)易發(fā)展中心招聘工作人員5人(第二批)參考筆試試題及答案解析
- 老公情人簽約協(xié)議書
- 4、藍恒達QC小組活動基礎知識與實務培訓課件
- 小學六年級科學上冊2025年期末檢測卷(含答案)
- 現(xiàn)場清潔度培訓課件
- 豪華轉馬應急預案
評論
0/150
提交評論