版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> **學(xué)院</b></p><p> 本科畢業(yè)論文(設(shè)計)</p><p> 院(系)級班: ***** </p><p> 專 業(yè): 計算機科學(xué)與技術(shù) </p><p> 題 目: ******)
2、 </p><p> 指導(dǎo)教師: *** </p><p> 導(dǎo)師職稱: 講師 </p><p> 學(xué) 號: ***** </p><p> 姓 名: **** &
3、lt;/p><p> 同 組 人: </p><p><b> 宜賓學(xué)院</b></p><p> ____年 月 日</p><p><b> 摘 要</b></p><p> 電子游戲起源于西方,90
4、年代中期刮起了一股電腦游戲旋風(fēng),90年代后期,中國游戲研發(fā)能力逐步提高,到如今,隨著電子信息技術(shù)高速發(fā)展和它具有互動性與模擬性等特征,使得電子游戲漸漸深入人們的日常生活之中,成為了各年齡段都喜愛的一種娛樂方式。</p><p> 然而隨著網(wǎng)絡(luò)游戲的迅速發(fā)展,單擊游戲一直走低,單擊游戲發(fā)展令人堪憂,其實單擊游戲與網(wǎng)絡(luò)游戲市場并不存在沖突。</p><p> 海底兩萬里是一款小型的射擊類單
5、擊游戲,本游戲設(shè)計在與傳統(tǒng)的射擊類游戲有著一定的改進,結(jié)合了STG與RPG類游戲的特點,組合成一款伴隨著游戲故事情節(jié)發(fā)展的射擊類游戲,本游戲一共分為了三關(guān),每關(guān)由boss的生命值控制是否進入下一關(guān),人物的移動控制由鍵盤的W、S、A、D鍵控制。</p><p> 本文闡述了選擇該題的背景,游戲的發(fā)展現(xiàn)狀及分類,游戲開發(fā)的意義。整個游戲的開發(fā)貫穿軟件工程的知識體系,從游戲的概述開始,接著可行性分析、需求分析、總體設(shè)
6、計、詳細(xì)設(shè)計、對游戲進行軟件測試,最后對全文進行總結(jié),和對未來游戲的展望。</p><p> 此款游戲設(shè)計是在Microsoft Windows 7操作系統(tǒng)下,以Java為開發(fā)語言,在eclipse開發(fā)平臺上進行開發(fā)的。</p><p> 關(guān)鍵詞:java,電子游戲,游戲平臺、STG、單機游戲</p><p><b> Abstract</b&
7、gt;</p><p> Electronic game originated in the West, the mid-1990s, has whipped up a whirlwind of the surge of the computer game, the late 1990s, the Chinese game development capabilities gradually increase,
8、 now, with the characteristics of the rapid development of interactive and simulation of electronic and information technology.video games gradually to the people's daily lives, has become a favorite of all ages a fu
9、n way.</p><p> However, with the rapid development of online games, click games have been lower, click on the game development is worrying, in fact there was no conflict-click games and online games market.
10、</p><p> Haideliangmoli is a small shooting-click game, this game design with a traditional shooter with certain improvements, combined with the advantages of STG with an RPG type of game, into a accompanie
11、d by the firing of the game story developmentgames, the game is divided into a total of three tests, each off by the boss of the value of life control to the next level, the characters move the control by the keyboard, W
12、, S, A, D, key control.</p><p> This paper describes the background, select the title game development and classification of the meaning of game development. The entire game development throughout the softw
13、are engineering body of knowledge, from an overview of the game, then the requirements analysis, conceptual design, detailed design, game software testing, and finally to summarize, with the outlook for the future games.
14、</p><p> The game is designed in Microsoft Windows 7 operating system, the Java development language, eclipse development platform for development.</p><p> Key words: java, games, gaming platf
15、orm, stand-alone game</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> AbstractII</p><p><b> 第1章 緒 論5</b></p><p>
16、; 1.1 選題背景及意義5</p><p> 1.2 電子游戲的發(fā)展現(xiàn)狀5</p><p> 1.2.1 國外電子游戲的發(fā)展現(xiàn)狀5</p><p> 1.2.2 國內(nèi)電子游戲的發(fā)展現(xiàn)狀6</p><p> 1.3 電子游戲的分類7</p><p> 第2章 游戲開發(fā)8</p>&
17、lt;p> 2.1 海底兩萬里游戲概述8</p><p> 2.1.1 游戲故事背景8</p><p> 2.1.2 游戲功能布局8</p><p> 2.1.3 游戲說明8</p><p> 2.1.4 游戲開發(fā)工具說明8</p><p> 2.2 海底兩萬里游戲可行性研究9</p
18、><p> 2.2.1 設(shè)計目的9</p><p> 2.2.2 軟件問題定義9</p><p> 2.2.3 可行性分析9</p><p> 2.3 海底兩萬里游戲需求分析9</p><p> 2.3.1 市場需求9</p><p> 2.3.2 用戶需求10</p&
19、gt;<p> 2.3.3 功能需求10</p><p> 2.3.4 軟硬件需求10</p><p> 2.4 海底兩萬里游戲總體設(shè)計10</p><p> 2.4.1 總體功能設(shè)計10</p><p> 2.4.2 開始界面設(shè)計11</p><p> 2.4.3 開始對話界面設(shè)計
20、11</p><p> 2.4.4 第一關(guān)設(shè)計11</p><p> 2.4.5 第二關(guān)設(shè)計12</p><p> 2.4.6 第三關(guān)設(shè)計12</p><p> 2.4.7 游戲勝利界面12</p><p> 2.5 海底兩萬里游戲詳細(xì)設(shè)計12</p><p> 2.5.
21、1 窗體的繪制12</p><p> 2.5.2 整個框架的實現(xiàn)14</p><p> 2.5.3 各個功能詳細(xì)設(shè)計16</p><p> 2.5.4 狀態(tài)模塊設(shè)計19</p><p> 2.5.5 小怪模塊詳細(xì)設(shè)計19</p><p> 2.5.6 發(fā)射子彈模塊詳細(xì)設(shè)計22</p>
22、<p> 2.5.7 爆炸效果模塊詳細(xì)設(shè)計25</p><p> 2.5.8 音樂加載模塊詳細(xì)設(shè)計27</p><p> 2.5.9 對話模塊詳細(xì)設(shè)計27</p><p> 2.5.10 道具模塊詳細(xì)設(shè)計28</p><p> 第3章 系統(tǒng)實現(xiàn)30</p><p> 3.1 系統(tǒng)框架
23、30</p><p> 3.1.1 把將工程打包成jar文件30</p><p> 3.1.2 游戲測試31</p><p><b> 結(jié) 論32</b></p><p><b> 致 謝33</b></p><p><b> 參考文獻(xiàn)34&
24、lt;/b></p><p><b> 緒 論</b></p><p><b> 選題背景及意義</b></p><p> 游戲已經(jīng)是人們休閑娛樂中不可缺少的一種方式,在隨著社會的快速發(fā)展,人們的生活節(jié)奏也越來越快,某一時刻,停下來,玩玩小游戲,放松放松心情是很多人們喜歡的娛樂方式,如果有一天沒有人們在玩游戲了
25、,那么可能世界末日就要到了,所以,游戲是現(xiàn)在以及未來人們都離不開的一種娛樂方式。</p><p> 隨著網(wǎng)絡(luò)游戲在中國的蓬勃發(fā)展,單機游戲在中國市場表現(xiàn)一直走低。但是單機游戲并不是所謂的食之無味棄之可惜的雞肋。單機游戲還是有很大的市場,他們之間并不產(chǎn)生沖突。單機游戲重劇情、玩家在體驗的時候關(guān)注過程,不需要專門的服務(wù)器便可以正常運轉(zhuǎn)游戲,模式多為人機對戰(zhàn);而網(wǎng)絡(luò)游戲又稱“在線游戲”,玩家在體驗的時候關(guān)注結(jié)果。網(wǎng)絡(luò)
26、游戲具備長期性,很多時候因為朋友等因素,需要大家約好一起游戲,在時間上相對被動。而單機游戲時間完全由自己掌控,重在突破與劇情。通過“2011年4月中國游戲市場不同平臺游戲關(guān)注比例分布”得出,電腦單機游戲占總的63.9%,這充分說明了單機游戲還是占據(jù)了大部分市場。試想在沒有聯(lián)網(wǎng)的狀態(tài)下,我們想玩游戲,是我們的單機游戲吧,而且相對應(yīng)網(wǎng)絡(luò)游戲,我們不需要等待其他的游戲玩家,也不需要長時間游戲,時間完全自己掌控,所以網(wǎng)絡(luò)游戲與單機游戲并不沖突,
27、單機游戲應(yīng)該是網(wǎng)絡(luò)游戲的補充,而且完全可以進行市場重疊,這是它存在的市場價值。</p><p> 射擊游戲是指開槍或者開炮的游戲,包括桌面射擊游戲、第一人稱射擊游戲和第三人稱射擊游戲。最早玩的“開坦克”、“雷電”是射擊類游戲的經(jīng)典之作,當(dāng)時引起了人們的瘋狂追捧。根據(jù)“2011年4月中國游戲市場不同類型游戲關(guān)注比例分布”,分析得出角色扮演和第一人稱射擊游戲分別占23.8%、11.0%,表面射擊類游戲在眾多游戲中是
28、比較受人們喜愛的。</p><p> 海底兩萬里是一款小型的單機游戲,適合休閑娛樂。本游戲是模仿了射擊類游戲經(jīng)典之作“雷電”進行設(shè)計的,在雷電基礎(chǔ)之上增加了故事情節(jié),及對話功能,提高游戲的趣味性。本游戲的開發(fā)意義主要是能提高人們對單擊游戲的喜愛,能提供在忙碌的人們休閑的時候娛樂一下。</p><p><b> 電子游戲的發(fā)展現(xiàn)狀</b></p>&l
29、t;p> 電子游戲,又稱電玩游戲,是指人通過電子設(shè)備,如電腦、游戲機等,進行游戲的一種娛樂方式。電子游戲包括:電腦游戲、電視游戲、街機游戲、便攜游戲。具有互動性、模擬性等特征。</p><p> 國外電子游戲的發(fā)展現(xiàn)狀</p><p> 電子游戲?qū)S脵C產(chǎn)生于70年代初,起源于美國。1971年NolanBushnell設(shè)計出了世界上第一個業(yè)務(wù)用游戲機《電腦空間》(Computer
30、Space)。次年,TedDabney成立了Atari公司成為了電子游戲的始祖。開啟了電子游戲發(fā)展道路,使得電子游戲開始作為一種娛樂手段。</p><p> 至今,美國仍是世界第一大游戲市場。美國游戲業(yè)所建立的是以開發(fā)商為核心的商業(yè)鏈條。根據(jù)美國市場調(diào)查公司NPD Group調(diào)查統(tǒng)計,美國2004年游戲總銷售金額(包括家用、掌上型主機及軟件)為99億美元,占了全球游戲市場的45%。其中游戲軟件銷售的具體數(shù)字是:
31、視頻游戲軟件的銷售額達(dá)52億美元(1.6億套),PC游戲軟件銷售額達(dá)11億美元(4500萬套),掌機游戲銷售額達(dá)10億美元(4230萬套)。2004年一共大約有2.48億套游戲售出。據(jù)估計,美國每個家庭平均購買過2部游戲[3]。</p><p> 日本近20年來瘋狂賺電子游戲的錢。從上世紀(jì)60年代初的街機,到六七十年代之間的家用游戲機,再到八九十年代的掌上游戲機,日本經(jīng)過30多年的耕耘,終于把電子游戲這棵“搖錢
32、樹”,培育成第一時尚娛樂產(chǎn)業(yè),壟斷全球業(yè)界長達(dá)10余年。對于日本來說,電玩業(yè)已是國家經(jīng)濟的重要支柱之一,在GDP中占有1/5的舉足輕重地位。日本游戲業(yè)在最輝煌的1998年,曾經(jīng)占領(lǐng)全球電子游戲市場硬件90%以上,軟件50%以上。</p><p> 韓國號稱世界上網(wǎng)絡(luò)游戲產(chǎn)業(yè)最發(fā)達(dá)國家之一。迄今為止,國內(nèi)網(wǎng)絡(luò)游戲市場有超過60%的產(chǎn)品來自韓國游戲軟件開發(fā)商,韓國網(wǎng)絡(luò)游戲使國內(nèi)很多游戲運營公司在游戲營銷市場或股票資
33、本市場上獲得了巨大的成功。 韓國游戲市場的發(fā)展不是偶然,韓國政府不僅給游戲產(chǎn)業(yè)以正確的定位和引導(dǎo),更是將其和本國經(jīng)濟發(fā)展緊密地聯(lián)系到一起,做了很多市場培育方面的工作。韓國政府認(rèn)識到,靠重型工業(yè)來支撐全國經(jīng)濟的做法是片面的,于是將IT、娛樂產(chǎn)業(yè)視為新的經(jīng)濟增長點,開始大力扶持。從那時起,科技含量極高而能源消耗極低的游戲制作及相關(guān)產(chǎn)業(yè)擔(dān)負(fù)起了“富國興邦”的重?fù)?dān)。由文化觀光部出面組建韓國游戲支援中心,向韓國游戲產(chǎn)業(yè)提供從資金到技術(shù)上的多方面支
34、援;成立游戲投資聯(lián)盟,政府每年向游戲產(chǎn)業(yè)投入的資金多達(dá)500億韓元,并為游戲企業(yè)提供長期的低息貸款;設(shè)立信息化基金和文化產(chǎn)業(yè)基金,為游戲產(chǎn)業(yè)服務(wù);對指定的風(fēng)險企業(yè)實行各種稅制優(yōu)惠政策,減少甚至免除游戲企業(yè)的稅務(wù)負(fù)擔(dān);建設(shè)游戲產(chǎn)業(yè)基地以扶持中小游戲企業(yè)的發(fā)展;對從事游戲產(chǎn)業(yè)的高科技人才免除兩年的兵役。 在韓國,從制作到運營,一個網(wǎng)絡(luò)游戲公司起步門檻較低,主要得益于政府實行的援助計劃。此外,在有</p><p>
35、國內(nèi)電子游戲的發(fā)展現(xiàn)狀</p><p> 電子游戲發(fā)達(dá)的國家相比,我國在電子游戲方面還存在比較大的差距。目前,我國游戲市場正處于發(fā)展階段,但市場上的游戲軟件主要來自日本、美國、韓國等地,但由本土游戲制作人開發(fā)創(chuàng)作的游戲正在高速增加,國產(chǎn)原創(chuàng)的游戲即將成為游戲的主流。</p><p> 中國的游戲產(chǎn)業(yè)經(jīng)過80年代初期臺灣廠商的探索至90年代,開始了自己的研發(fā)、發(fā)行的歷程,直至網(wǎng)絡(luò)游戲的風(fēng)
36、行,讓中國的網(wǎng)絡(luò)游戲開始有了飛速的發(fā)展。 1983年,智冠科技有限公司在中國臺灣成立,為全球第一家簽訂授權(quán)重制中文版產(chǎn)品代理銷售合約的公司,2000年智冠在臺灣股票上市, 2002年其控股的中華網(wǎng)龍在臺灣上市。</p><p> 1996年底,UBI SOFT上海分公司暨上海育碧電腦軟件有限公司成立。同年,全球游戲軟件領(lǐng)軍企業(yè)EA在中國上海成立辦事處。1997年,由尚洋公司制作的《血獅》正式上市。 1997年,
37、北京新天地互動多媒體技術(shù)有限公司成立,該公司引進了《古墓麗影III》(TombRaider III)、《盟軍敢死隊》等著名歐美游戲,并在1999年在中國率先掀起“游戲軟件價格革命”,全面推行50元的價格體系,從此正版游戲價格開始貼近大眾消費者。 1999年,業(yè)內(nèi)估算中國電腦游戲市場(正版)約1.5億元人民幣。 2000年,大陸華彩軟件代理發(fā)行第一款中文MMORPG《萬王之王》正式推出,該游戲于1999年在臺灣發(fā)行,由臺灣雷爵資訊(Lag
38、er)開發(fā)。也在2000年,繼《萬王之王》、《石器時代》、《網(wǎng)絡(luò)三國》在臺灣上市之后,游戲桔子推出了《天堂》,游戲桔子成立于1995年,1999年以《便利店》在臺灣奠定了地位?!短焯谩愤@款由韓國著名游戲公司Ncsoft研發(fā)的網(wǎng)絡(luò)游戲不但在本國大獲成功,也在臺灣再次奪冠。 2001年初,北京華義在中國大陸地區(qū)正式推出了《石器時代》,華義國際股份有限公司于1993年在臺北成立,</p><p> 2005年1月21
39、日,中央電視臺報道:我國網(wǎng)絡(luò)游戲產(chǎn)業(yè)當(dāng)年增加了50%,今后幾年都將以50%以上的速度增長;第一屆中國網(wǎng)絡(luò)游戲年會報道:中國國內(nèi)網(wǎng)絡(luò)游戲2004年規(guī)模達(dá)24.7億元,2009年規(guī)模將達(dá)到109.6億元。</p><p><b> 電子游戲的分類</b></p><p> 現(xiàn)階段電子游戲樣式多種多樣,有著多種分類方式。根據(jù)運行不同平臺分類,電子游戲分為網(wǎng)絡(luò)游戲與單機游
40、戲。根據(jù)不同類型游戲分為,角色扮演游戲RPG、動作游戲ACT、冒險游戲AVG、策略游戲SLG、即時戰(zhàn)略游戲RTS、格斗游戲FTG、射擊類游戲STG、第一人稱視覺射擊類游戲FPS、益智類游戲PZL。游戲的分類沒有一個統(tǒng)一的規(guī)范,本文中,對于有些的分類主要是以上兩種分類來討論與運用。</p><p><b> 游戲開發(fā)</b></p><p><b> 海底
41、兩萬里游戲概述</b></p><p><b> 游戲故事背景</b></p><p> 本游戲的故事情節(jié)由本人編排的,純屬虛構(gòu)。主要講述了這樣的一個故事:在很久以前,王子(殘雪)和朵兒公主相愛,但是在另外的一片海域住著一條惡龍(亞瑟),在一次王子與公主約會的時候,惡龍搶走了公主并逼著公主與之成親,這時王子就踏上了海底兩萬里的艱辛路程,去營救自己心愛的
42、公主,在此路程中受到了重重阻礙,但是在其中也得到了一些朋友的幫助,最終營救公主成功,過上了幸福的生活?!昂5變扇f里”主要以這個故事為背景。</p><p><b> 游戲功能布局</b></p><p> 海底兩萬里是一款STG射擊類游戲,由玩家控制人物(主要是飛機)完成任務(wù)過關(guān)的游戲,游戲一共設(shè)置三關(guān),只有通過一關(guān)才能進入下一關(guān)。本游戲有如下功能:</p&
43、gt;<p> 1、在游戲開始界面,顯示公主被劫持對話,按enter鍵進入游戲。</p><p> 2、闖關(guān)、共三關(guān)(如果失敗,跳入游戲失敗界面)在每關(guān)打死小怪的個數(shù)到達(dá)一定數(shù)目就會出現(xiàn)boss,在boss出現(xiàn)之后會有一些列的對話。每關(guān)只有打敗boss之后才能進入下一關(guān)。</p><p> 3、游戲結(jié)束且營救成功,顯示對話框,公主成功被營救,并且公主嫁給了勇士,永遠(yuǎn)幸福
44、,快樂的生活著。</p><p> 4、增強游戲功能,比如超級子彈、游戲幫助、游戲暫停、靜音、調(diào)節(jié)聲音大小等功能。</p><p><b> 游戲說明</b></p><p> 幫助說明:移動人物采用鍵盤監(jiān)聽事件,由W、S、A、D控制上、下、左、右移動。F1鍵控制是否查看幫助,J、K鍵控制發(fā)射子彈與超級子彈,ENTER鍵控制游戲的開始。&
45、lt;/p><p><b> 游戲開發(fā)工具說明</b></p><p><b> Java語言</b></p><p> 本游運用java語言進行編程,Java最初被命名為Oak,是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言,是由Sun Microsystems公司于1995年5月推出的。Java 技術(shù)具有卓越的
46、通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于個人PC、數(shù)據(jù)中心、游戲控制臺、 之中。所以java對于一個游戲來說意味著是非常成熟的語言,而且java作為平臺,極大的方便了游戲腳本的使用。</p><p><b> JDK 1.6</b></p><p> JDK(Java Development Kit)是Sun Microsystems針對Java開發(fā)的產(chǎn)品。
47、JDK 是整個Java的核心,包括了Java運行環(huán)境,Java工具和Java基礎(chǔ)的類庫。沒有JDK的話,無法安裝或者運行java程序。</p><p><b> Eclipse</b></p><p> Eclipse 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。它主要由Eclipse
48、項目、Eclipse工具項目和Eclipse技術(shù)項目三個項目組成,具體包括四個部分組成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java開發(fā)、CDT支持C開發(fā)、PDE用來支持插件開發(fā),Eclipse Platform則是一個開放的可擴展IDE,提供了一個通用的開發(fā)平臺。</p><p> 海底兩萬里游戲可行性研究</p><p><b> 設(shè)計目
49、的</b></p><p> 為了鞏固和加深自己所學(xué)知識,能進入一步理解J2ME,運用所學(xué)軟件工程知識體系,設(shè)計游戲開發(fā)思路,運用java語言進行編程,能提高自己對java語言更進一步理解,從而達(dá)到理論與實際向結(jié)合。</p><p><b> 軟件問題定義</b></p><p> 基本要求:本游戲開發(fā)主要是實現(xiàn)了游戲界面美觀
50、性、可操作性、和趣味性。本游戲遵循軟件工程開發(fā)過程,運用JAVA GUI編程來實現(xiàn)界面及事件的控制。用戶根據(jù)鍵盤上的W、S、A、D四建分別控制人物的上、下、左、右移動,通過J、K發(fā)射子彈,運用一個變量控制進入各種狀態(tài)。</p><p> 限制:由于本人所學(xué)知識不是很完善,整個游戲結(jié)構(gòu)比較簡單,功能不是很強大,希望能在以后的學(xué)習(xí)中,能增加游戲的功能,把游戲做成網(wǎng)絡(luò)和3D的。</p><p>
51、; 可行性研究方法:通過研究電子游戲的歷史、了解電子游戲的發(fā)展?fàn)顟B(tài)和目前射擊類游戲的發(fā)展現(xiàn)狀,確定了本游戲的主題及游戲類型,利用自己所學(xué)知識,參考以前開發(fā)人員設(shè)計思路,設(shè)計出了一款比較小型的海底兩萬里游戲。</p><p> 評價尺度:本游戲是一款小型游戲,對軟件及編程人員要求不高,能達(dá)到射擊游戲的基本要求,能實現(xiàn)通過要求等即可。</p><p><b> 可行性分析<
52、;/b></p><p> 技術(shù)可行性:游戲開發(fā)有很多種編程語言,但是介于各種語言的優(yōu)缺點,最終選擇了java語言進行游戲開發(fā),采用JAVA GUI編程來實現(xiàn)界面及事件的控制。</p><p> 經(jīng)濟可行性:本游戲是一款小游戲,能在人們休閑娛樂的時候玩一下,不存在經(jīng)濟問題,源代碼開發(fā),只要能運行程序即可。</p><p> 社會可行性:本游戲的開發(fā)主要用
53、于畢業(yè)設(shè)計,對社會不會造成影響。</p><p> 海底兩萬里游戲需求分析</p><p><b> 市場需求</b></p><p> 隨著社會的發(fā)展,網(wǎng)絡(luò)逐漸成為我們生活中必不可少的工具,隨著網(wǎng)絡(luò)技術(shù)的普及,使得在游戲的發(fā)展歷程中,網(wǎng)絡(luò)游戲風(fēng)靡全球,在網(wǎng)絡(luò)游戲盛行的年代,我們的單機游戲存在危機,但是單機游戲和網(wǎng)絡(luò)游戲是不產(chǎn)生沖突的,有
54、著各自的市場,是相互相乘的。</p><p><b> 用戶需求</b></p><p> 隨著社會的進步,人們的生活水平逐漸提高,在物質(zhì)生活水平滿足之后,更多的是追求精神上和娛樂上的追求?,F(xiàn)在的社會追求的是快節(jié)奏的生活,人們都是在一個高壓狀態(tài)上,如能在快節(jié)奏的生活上,偶爾來一段小游戲,放松一下自己的思想,也不需等自己的朋友一起,能單獨的享受其中的樂趣,是多么的悠
55、閑,快活的一件事。所以,開發(fā)的這款小游戲,是適合人們在休閑娛樂的時候,打一盤游戲放松一下心情。</p><p><b> 功能需求</b></p><p> 此款游戲,打破了傳統(tǒng)STG( Shooting Game:射擊類游戲,指純的飛機射擊),由玩家控制各種飛行物(主要是飛機)完成任務(wù)或過關(guān)的游戲。在傳統(tǒng)的STG游戲上,增加了一個游戲的整個故事環(huán)節(jié),更加的賦予感
56、情色彩,增加了人物對話功能,能實現(xiàn)選擇道具、裝備等功能,總之,此款游戲是綜合了STG、RPG游戲的優(yōu)點,附有人性化的設(shè)計。</p><p><b> 軟硬件需求</b></p><p> 操作系統(tǒng):Microsoft Windows 7</p><p><b> 內(nèi)存:2G</b></p><p&
57、gt;<b> 硬盤:320G</b></p><p> CPU:Intel Core 2 Duo T6670</p><p> 交互工具:鍵盤/鼠標(biāo)</p><p> 顯示器:LED顯示器</p><p> JDK版本:jdk1.6.0.02</p><p> Eclipse版本:e
58、clipse-SDK-3.4-win32</p><p> 海底兩萬里游戲總體設(shè)計</p><p><b> 總體功能設(shè)計</b></p><p> 該游戲是闖關(guān)游戲,一共分為三關(guān),只有通過了前一關(guān)才能進入下一關(guān),每關(guān)由boss的生命值HP進行判斷是否進入下一關(guān),當(dāng)?shù)谌P(guān)的boss生命值HP=0時,游戲勝利,當(dāng)主人公生命值HP=0時,游戲
59、失敗。如圖:</p><p><b> 開始界面設(shè)計</b></p><p> 在開始界面,顯示“海底兩萬里”游戲名字,啟動音樂線程,用閃爍的字體提示“按Enter鍵,進入游戲”。可以按F1進行查看游戲幫助。</p><p><b> 開始對話界面設(shè)計</b></p><p> 在進入游戲
60、的時候,顯示王子與惡龍的談話內(nèi)容,在顯示完之后提示“按Enter鍵,開始游戲”,此時,惡龍和公主消失在屏幕上,等待著王子去營救公主,海底兩萬里的艱辛路程就開始了?;蛘邽榱吮苊庹勗拑?nèi)容太繁瑣,可以直接選擇“按Enter鍵,可以直接跳過對話”。</p><p><b> 第一關(guān)設(shè)計</b></p><p> 1、左上角顯示“按F1查看幫助、殘雪的HP用矩形條框來顯示,
61、超級子彈數(shù)目、打死小怪的數(shù)目”。</p><p> 2、在屏幕中上顯示“第幾關(guān)”,得分?jǐn)?shù)。</p><p> 3、在boss出現(xiàn)后,在最右邊顯示“boss的HP”。</p><p> 4、小怪是隨機產(chǎn)生的rd.nextInt(20)>=19。</p><p> 5、小怪也能發(fā)射子彈。如果主人公殘雪被擊中,相應(yīng)的生命值要減少。&l
62、t;/p><p> 6、在打死一定的小怪時,出現(xiàn)相應(yīng)的道具。比如打死20個小怪時出現(xiàn)一個“加血”道具。出現(xiàn)一個“加血”道具后,相應(yīng)的怒氣也積累,當(dāng)怒氣積累到了一定的數(shù)量時出現(xiàn)“加超級子彈”的道具。而“無敵狀態(tài)”的道具隨機產(chǎn)生,這時當(dāng)主人公吃到這個道具時,保持10秒的無敵狀態(tài)。</p><p> 7、主人公用J鍵發(fā)射子彈,打死小怪時產(chǎn)生爆炸效果,當(dāng)小怪或boss射中主人公時也會產(chǎn)生不同的爆炸
63、效果。</p><p> 8、當(dāng)主人公殘雪的HP=0時,游戲結(jié)束,顯示游戲結(jié)束界面,提示“按Enter鍵,重新開始游戲”。此時游戲界面調(diào)至“游戲開始界面”可以重新開始游戲。</p><p> 9、當(dāng)打死小怪的數(shù)量達(dá)到一定數(shù)量時,出現(xiàn)boss,此時屏幕清屏,出現(xiàn)情景對話,主人公與東海三太子的對話內(nèi)容,此時兩者都可以相互動,但是都不能向?qū)Ψ桨l(fā)射子彈。如果不想看對話內(nèi)容可以按Enter鍵跳過
64、。</p><p> 10、當(dāng)對話結(jié)束時,由主人公對戰(zhàn)三太子,此時三太子發(fā)射的子彈十分有威力,三太子的生命值是固定的,當(dāng)生命值為零的時候,為通過第一關(guān)。</p><p><b> 第二關(guān)設(shè)計</b></p><p> 1、當(dāng)通過第一關(guān)時,可以用得到的分?jǐn)?shù),換裝備。</p><p> 2、進入第二關(guān)時,與第一關(guān)屏幕
65、上顯示的都差不多。</p><p> 3、與第一關(guān)相比,小怪的種類增加,一共兩種小怪,每種小怪自己會隨機的發(fā)射子彈,增加了通關(guān)的難度。</p><p> 4、道具的出現(xiàn)還是按原來的規(guī)則。 </p><p> 5、當(dāng)積分到達(dá)一定分?jǐn)?shù)時,增加一個“加子彈威力”道具出現(xiàn)。</p><p> 6、還是與第一關(guān)一樣,當(dāng)打死小怪?jǐn)?shù)目到規(guī)定數(shù)目時,
66、出現(xiàn)boss,其后與第一關(guān)7、8、9、10項介紹一樣。</p><p><b> 第三關(guān)設(shè)計</b></p><p> 1、在第一關(guān)與第二關(guān)的基礎(chǔ)上,增加了一些新功能。</p><p> 2、第三關(guān),又增加了一種小怪,一共隨機出現(xiàn)的小怪有三種。</p><p> 3、終極boss的出現(xiàn),生命值加長,增加游戲過關(guān)的
67、難度。</p><p><b> 游戲勝利界面</b></p><p> 1、當(dāng)勝利通過三關(guān),打敗了終極boss后,出現(xiàn)游戲勝利界面。</p><p> 2、展示主人公救得公主,過上了快樂幸福的生活。</p><p> 3、屏幕上的字,一個一個的顯示出來。</p><p> 海底兩萬里游
68、戲詳細(xì)設(shè)計</p><p><b> 窗體的繪制</b></p><p> 新建一個java項目,取名game29。在src源文件下創(chuàng)建com.zuxia包。步驟如下:</p><p> 1、創(chuàng)建一個Tool類,用來定義窗體的大小,和定義方法用來獲取圖片,具體代碼如下:</p><p> package com.
69、zuxia; 包文件</p><p> import java.awt.Image;</p><p> import java.awt.Toolkit;</p><p> public class Tool {</p><p> public static final int WIDTH = 900; //窗體
70、的長度</p><p> public static final int HEIGHT = 600;//窗體的寬度</p><p><b> /**</b></p><p> * 定義靜態(tài)方法,用來獲取圖片</p><p><b> */</b></p><p>
71、static Toolkit tool = Toolkit.getDefaultToolkit();</p><p> public static Image getImage(String imgURL) {</p><p> return tool.getImage( GameStart.class.getClassLoader().getResource(</p>
72、<p> "images/" + imgURL));</p><p><b> }</b></p><p><b> }</b></p><p> 2、創(chuàng)建一個GameStart類,繼承Frame類。</p><p> public class GameSta
73、rt extends Frame {}。</p><p> 3、創(chuàng)建工具箱的一個對象</p><p> Tool tools = new Tool();</p><p> 4、定義一個方法,來設(shè)置窗體的屬性</p><p> public void init() {</p><p><b> //
74、設(shè)置標(biāo)題</b></p><p> this.setTitle("海底兩萬里");</p><p><b> // 設(shè)置窗體大小</b></p><p> this.setSize(tools.WIDTH, tools.HEIGHT);</p><p><b> // 設(shè)
75、置窗體居中</b></p><p> this.setLocationRelativeTo(null);</p><p> // 禁用最大化按鈕</p><p> this.setResizable(false);</p><p><b> // 設(shè)置窗體顯示</b></p><p
76、> this.setVisible(true);</p><p><b> // 設(shè)置窗體監(jiān)聽</b></p><p> this.addWindowListener(new WindowAdapter() {</p><p> public void windowClosing(WindowEvent e) { // 用戶關(guān)閉窗
77、體時,執(zhí)行此方法</p><p> System.exit(0);</p><p><b> }</b></p><p><b> });</b></p><p><b> }</b></p><p><b> 整個框架的實現(xiàn)<
78、/b></p><p> 在制作出窗體了,我們?nèi)绾螌崿F(xiàn)圖片的顯示和音樂的啟動呢?整個框架的達(dá)成根據(jù)如下步驟:</p><p> 在窗體上繪制背景圖片</p><p><b> 開始背景圖片繪制</b></p><p> 重新定義paint()方法</p><p> public v
79、oid paint(Graphics g) {</p><p> g.drawImage(tools.getImage("begin.jpg"), 0, 0, tools.WIDTH,</p><p> tools.HEIGHT, null);</p><p><b> }</b></p><p&g
80、t;<b> 每關(guān)背景圖片繪制</b></p><p> 顯示背景圖片流程如下圖:</p><p> 定義drawBackGround方法,實現(xiàn)背景圖片的繪制</p><p> public void drawBackGround(Graphics g) {</p><p> String bgString =
81、 "背景1.jpg"; // 定義變量bgString用來存儲每關(guān)背景圖片,默認(rèn)第一關(guān)。</p><p> if (tollgate == 2) {</p><p> bgString = "背景2_副本.jpg";}</p><p> else if (tollgate == 3) {</p><p
82、> bgString = "背景31.jpg";}</p><p><b> }</b></p><p> 讓圖片動起來,達(dá)到動態(tài)效果</p><p> bjpoint = 0 定義一個int型變量控制背景圖片的顯示橫坐標(biāo)</p><p> Image bj = t
83、ools.getImage(bgString);</p><p> 創(chuàng)建兩個圖片對象,用來獲取當(dāng)前背景圖</p><p> Image bj2 = tools.getImage(bgString);</p><p> g.drawImage(bj, -bjpoint, 0, tools.WIDTH, tools.HEIGHT, null);</p>
84、<p> g.drawImage(bj2, tools.WIDTH - bjpoint, 0, tools.WIDTH, tools.HEIGHT,</p><p><b> null);</b></p><p> bjpoint += 5; 坐標(biāo)以5的速度自加,實現(xiàn)圖片的動態(tài)</p><p>
85、if (bjpoint >= tools.WIDTH) {</p><p> bjpoint = 0;</p><p><b> }</b></p><p><b> 解決屏幕閃爍問題</b></p><p> class GameThread extends Thread {
86、 定義多線程,用來刷屏</p><p> public void run() {</p><p> while (true) {</p><p> repaint();</p><p><b> move();</b></p><p><b> try {</b
87、></p><p> Thread.sleep(50);</p><p> } catch (InterruptedException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }
88、</b></p><p><b> }</b></p><p> public void update(Graphics g) { 重寫update()方法</p><p> Image bufferImg = this.createImage(tools.WIDTH, tools.HEIGHT);</p
89、><p> // 獲取虛擬畫布上面的一直筆</p><p> Graphics bufferg = bufferImg.getGraphics();</p><p> // 傳遞虛擬的畫筆,在虛擬窗體上繪制圖形</p><p> paint(bufferg);</p><p> // 最后將虛擬的畫布,一次性的繪
90、制在窗體上</p><p> g.drawImage(bufferImg, 0, 0, null);</p><p><b> }</b></p><p><b> 人物的繪制與控制</b></p><p> 主人公殘雪的控制由鍵盤的W、A、S、D鍵分別控制上、左、下、右四個方向的移動。J、
91、K鍵分別用來發(fā)射子彈和超級子彈。(設(shè)置鍵盤的監(jiān)聽事件)</p><p><b> 音樂的加載</b></p><p> 創(chuàng)建一個播放音樂類PlaySound,定義播放音樂的方法與屬性。</p><p> 當(dāng)執(zhí)行游戲時,開始播放背景音樂。</p><p> 創(chuàng)建線程GameThread gt = new GameT
92、hread();</p><p> 創(chuàng)建音樂播放對象,啟動線程PlaySound ps = new PlaySound("BGM_0001.mp3", true);</p><p><b> 各個功能詳細(xì)設(shè)計</b></p><p><b> 游戲開始功能</b></p><p
93、> 由鍵盤監(jiān)聽事件,當(dāng)按下Enter鍵時,開始游戲,進入對話界面,顯示對話結(jié)束后,還需按Enter鍵開始游戲,如需跳過按Enter鍵,直接進入游戲第一關(guān)。設(shè)計流程如下圖:</p><p><b> 產(chǎn)生效果如圖:</b></p><p> 這是游戲開始的對話界面</p><p><b> 相關(guān)代碼:</b>&
94、lt;/p><p> GameFrame.this.enter_count += 1;</p><p> if (((GameFrame.this.enter_count == 3) && (GameFrame.this.state == 3)) || ((GameFrame.this.enter_count == 3) && (GameFrame.this
95、.state == 4)))</p><p><b> {</b></p><p> GameFrame.this.clearup();</p><p><b> }</b></p><p> if (GameFrame.this.enter_count == 1)</p>&
96、lt;p><b> {</b></p><p> GameFrame.this.state = 1;</p><p><b> return;</b></p><p> }if (GameFrame.this.enter_count != 2)</p><p><b> r
97、eturn;</b></p><p> GameFrame.this.state = 2;</p><p><b> break;</b></p><p><b> 幫助功能實現(xiàn)</b></p><p> 當(dāng)進入游戲時,玩家如果不明白如何操作游戲,可以按F1進入游戲幫助界面,按E
98、SC鍵退出幫助界面。</p><p><b> 部分代碼如下:</b></p><p> case VK_F1:</p><p> GameFrame.this.state = 5;</p><p> if (this.state == 5)</p><p><b> {<
99、;/b></p><p> g.drawImage(Tools.getImage("help.png"), 0, 0, 900, 600, null); 顯示幫助</p><p><b> }</b></p><p><b> 暫停功能實現(xiàn)</b></p><p&g
100、t; 當(dāng)需要暫停游戲時,有Space鍵控制。</p><p><b> 代碼如下:</b></p><p> case VK_SPACE:</p><p> if (!GameFrame.this.isPause.booleanValue())</p><p><b> {</b><
101、/p><p> GameFrame.this.game_thread.stop();</p><p> GameFrame.this.isPause = Boolean.valueOf(true);</p><p><b> return;</b></p><p><b> }</b></
102、p><p> GameFrame.this.game_thread=newGameFrame.GameThread(GameFrame.this);</p><p> GameFrame.this.game_thread.start();</p><p> GameFrame.this.isPause = Boolean.valueOf(false);</p
103、><p><b> break;</b></p><p><b> 靜音功能實現(xiàn)</b></p><p><b> 矩形框顯示HP功能</b></p><p><b> 閃爍字實習(xí)功能</b></p><p><b>
104、 狀態(tài)模塊設(shè)計</b></p><p> 游戲設(shè)計是個復(fù)雜繁瑣的事情,所以,把游戲分為了幾種狀態(tài),這樣能快速的讓讀者明白其中的設(shè)計原理。</p><p> 游戲一共設(shè)計了5中狀態(tài),用state表示,分別表示如下:</p><p><b> 小怪模塊詳細(xì)設(shè)計</b></p><p> 游戲一共分為三關(guān)
105、,每一關(guān)小怪的出現(xiàn)順序、出現(xiàn)的總類、出現(xiàn)的數(shù)量都不一樣,比如第一關(guān)出現(xiàn)一種小怪,第二關(guān)出現(xiàn)兩種小怪,第三關(guān)出現(xiàn)三種小怪。現(xiàn)就針對整個游戲的小怪模塊做一個詳細(xì)說明。</p><p><b> 小怪的出現(xiàn)控制設(shè)計</b></p><p> 小怪的出現(xiàn)流程設(shè)計,如盒圖:</p><p> 盒圖顯示是以“關(guān)數(shù)”控制小怪的出現(xiàn),定義了三個方法,其中
106、顯示小怪的這些方法語句重復(fù)運用,造成了數(shù)據(jù)的冗余。為了讓數(shù)據(jù)清晰明了,減少數(shù)據(jù)的冗余,只需定義一個方法,用“關(guān)數(shù)”控制每關(guān)需要出現(xiàn)的小怪。如下盒圖:</p><p><b> 詳細(xì)設(shè)計步驟</b></p><p> (1)、因為游戲中的人物比如說小怪、主人公、boss等都具有一定相同的特征及屬性,所以創(chuàng)建一個Monster類,來定義人物的一些屬性及方法。</
107、p><p> (2)、定義小怪顯示方法</p><p> public void paintMonster(Graphics g){};</p><p> ?。?)、控制小怪出現(xiàn)的數(shù)量</p><p> Random rd = new Random();// 定義一個隨機數(shù)</p><p> this.rd.nex
108、tInt(100) >= 97 - this.tollgate //用關(guān)數(shù)控制顯示數(shù)量的多少,關(guān)數(shù)越大,顯示的小怪越多。</p><p> 每關(guān)小怪出現(xiàn)的效果圖</p><p> 只有一種小怪出現(xiàn),并且小怪本身也能發(fā)射子彈。</p><p> 第二關(guān)出現(xiàn)兩種小怪。</p><p> 第三關(guān)出現(xiàn)三種小怪,增加游戲的難度。</
109、p><p> 發(fā)射子彈模塊詳細(xì)設(shè)計</p><p> 在本游戲中,每個人物都涉及到了子彈的發(fā)射,比如:主人公的子彈發(fā)射是由玩家控制,而小怪和boss的子彈發(fā)射是隨機控制的。但是每個人物的子彈發(fā)射都有一些相同的屬性,我們把它歸結(jié)為一類,創(chuàng)建一個Bullet類。</p><p> public class Bullet {} 定義子彈的屬性和方法</
110、p><p> 1、子彈的移動方法設(shè)計:</p><p> 2、子彈射擊功能設(shè)計:</p><p> 如圖所示:好的子彈是玩家發(fā)射的,用來射擊敵人boss和小怪,壞的子彈是敵人發(fā)射的用來殺主人公。如果子彈生命結(jié)束及生命是死的,則清除裝在子彈集合列表中的數(shù)量,從此消失。</p><p><b> 3、子彈生命設(shè)計</b>
111、</p><p><b> 4、超級子彈</b></p><p> 當(dāng)主人公吃到了加超級子彈道具時,保存一個超級子彈在集合中。玩家按K鍵能發(fā)射超級子彈,超級子彈向八個方向發(fā)射,威力無窮。詳細(xì)設(shè)計步驟如下:</p><p> ?。?)、設(shè)置一個集合用來存儲超級子彈數(shù)量</p><p> 默認(rèn) int super_bu
112、llet = 0;</p><p> ?。?)、設(shè)置鍵盤監(jiān)聽事件,如果按下K鍵,并且super_bullet!=0時啟動爆炸效果聲音線程。new MusicThread("Explode.mp3", false).start()</p><p> ?。?)、創(chuàng)建八個子彈對象,分別向著八個方向發(fā)射</p><p> (4)、每按一次K鍵,存儲在s
113、uper_bullet中的數(shù)量少1。</p><p><b> 超級子彈發(fā)射時</b></p><p><b> 超級子彈發(fā)射后</b></p><p> 爆炸效果模塊詳細(xì)設(shè)計</p><p> 在游戲中,當(dāng)主人公殘雪擊中了小怪或者boss時,出現(xiàn)碰撞爆炸效果,而當(dāng)小怪和boss發(fā)射的子彈時
114、也將發(fā)射碰撞爆炸效果。</p><p><b> 定義爆炸類</b></p><p> public class Boom</p><p><b> {</b></p><p> public int x;</p><p> public int y;</p&
115、gt;<p> public Image[] boomimage = { Tools.getImage("bao001.png"), Tools.getImage("bao002.png"), Tools.getImage("bao003.png"), Tools.getImage("bao004.png") };</p>&l
116、t;p> public boolean isLive = true; public int index = 0;</p><p> public Boom(int x, int y) { this.x = x; this.y = y; new MusicThread("Beam.mp3", false); }</p><p> public void dra
117、wBoom(Graphics g)</p><p><b> {</b></p><p> if (this.index < this.boomimage.length)</p><p><b> {</b></p><p> g.drawImage(this.boomimage[th
118、is.index], this.x, this.y, null);</p><p><b> }</b></p><p><b> else {</b></p><p> this.isLive = false;</p><p><b> }</b></p>
119、<p> this.index += 1;</p><p><b> }</b></p><p><b> }</b></p><p><b> 繪制爆炸方法定義</b></p><p> public void paintBoom(Graphics g
120、)</p><p><b> {</b></p><p> for (int i = 0; i < this.boom_list.size(); ++i)</p><p><b> {</b></p><p> Boom boom = (Boom)this.boom_list.get(
121、i);</p><p> if (boom.isLive)</p><p><b> {</b></p><p> boom.drawBoom(g);</p><p><b> }</b></p><p><b> else</b></p
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機畢業(yè)論文范文畢業(yè)論文計算機專業(yè)
- 計算機畢業(yè)論文
- 計算機畢業(yè)論文
- 成教計算機畢業(yè)論文
- 計算機 photoshop畢業(yè)論文
- 計算機專業(yè)畢業(yè)論文
- 畢業(yè)論文---計算機專業(yè)
- 畢業(yè)論文??朴嬎銠C
- 計算機學(xué)院畢業(yè)論文
- 計算機自考畢業(yè)論文
- 計算機專業(yè)畢業(yè)論文
- 計算機犯罪畢業(yè)論文
- 中專計算機畢業(yè)論文
- 計算機畢業(yè)論文.doc
- 畢業(yè)論文-專科(計算機)
- 計算機畢業(yè)論文.doc
- 計算機故障與處理-計算機專業(yè)畢業(yè)論文
- 計算機專業(yè)畢業(yè)論文 計算機網(wǎng)站優(yōu)化
- 計算機畢業(yè)論文 計算機組裝與維護
- 計算機日常維護畢業(yè)論文
評論
0/150
提交評論