版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)設計[論文]</b></p><p> 題目:JAVA的俄羅斯方塊界面設計與實現(xiàn)</p><p><b> 目 錄</b></p><p><b> 摘 要4</b></p><p> Abstract5</p>
2、<p><b> 1緒論6</b></p><p><b> 1.1開發(fā)背景6</b></p><p> 1.2 俄羅斯方塊的開發(fā)意義7</p><p><b> 2 可行性研究8</b></p><p> 2.1 設計目的9</p>
3、<p> 2.2 軟件問題定義9</p><p> 2.3 可行性分析........................................................................................9 </p><p><b>
4、 3 需求分析9</b></p><p><b> 3.1 引言9</b></p><p> 3.2 方案論證10</p><p> 4 游戲的開發(fā)與編譯12</p><p> 4.1 編譯工具簡介12</p><p> 4.2 硬件及軟件開發(fā)平臺12</p
5、><p> 4.3 功能設計12</p><p> 4.4 系統(tǒng)功能模塊13</p><p> 4.5 功能流程圖......................................................................................18</p><p> 4.6 詳細設計.....
6、.....................................................................................18</p><p><b> 5 游戲演示21</b></p><p> 5.1 開始游戲21</p><p> 5.2 系統(tǒng)測試.................
7、.........................................................................24</p><p> 5.3 按鍵時間功能測試..........................................................................24</p><p><b> 6
8、結論25</b></p><p> 6.1問題....................................................................................................25 </p><p> 6.2解決方法...........................................
9、................................................25</p><p><b> 7 參考文獻26</b></p><p> 基于JAVA的俄羅斯方塊</p><p><b> 摘 要</b></p><p> 在現(xiàn)今電子信息高速發(fā)展的時代,
10、電子游戲已經(jīng)深入人們的日常生活,成為老少皆宜的娛樂方式。但是游戲設計結合了日新月異的技術,在一個產(chǎn)品中整合了復雜的設計、藝術、聲音和軟件,所以并不是人人皆知。直到今天,在中國從事游戲設計的人仍然很少,但是游戲行業(yè)的發(fā)展之快,遠超如家電、汽車等傳統(tǒng)行業(yè),也正因為如此,游戲人才的教育、培養(yǎng)遠落后于產(chǎn)業(yè)的發(fā)展。 俄羅斯方塊是個老幼皆宜的小游戲,它實現(xiàn)由四塊正方形的色塊組成,然后存儲在一個數(shù)組的四個元素中,計算機隨機產(chǎn)生不同七種類型的方塊,根據(jù)
11、計算機時鐘控制它在一定的時間不停的產(chǎn)生,用戶根據(jù)鍵盤的四個方向鍵控制翻轉、向左、向右和向下操作,(控制鍵的實現(xiàn)是由鍵盤的方向鍵的事件處理實現(xiàn))。然后程序根據(jù)這七種方塊堆疊成各種不同的模型。 論文描述了游戲的歷史,開發(fā)此游戲的環(huán)境,游戲開發(fā)的意義。遵循軟件工程的知識,從軟件問題定義開始,接著進行可行性研究、需求分析、概要設計、詳細設計,最后對軟件進行了測試,整個開發(fā)過程貫穿軟件工程的知識體系。 此次設計在Microsoft Windows
12、 XP系統(tǒng)下,以Java為開發(fā)</p><p> 關鍵詞:游戲設計:算法,數(shù)組,事件</p><p> Based on Linux Read-Write control of EERROM</p><p><b> Abstract</b></p><p> In the rapid development o
13、f the electronic information era, computer game has penetrated into people's daily life, become a family-friendly entertainment. But with the technology change rapidly in game design, sophisticated design, art, audio
14、 and software integration in a product, so not all the world knows. Until today, in the game design in China are still rare, but the game industry is the development of fast, far more than the home electric, automobile a
15、nd other traditional industries, but a</p><p> Key words: ARRAY INCIDENT ALGORITHM</p><p><b> 引 言</b></p><p> 游戲是人們活動中一項非常重要的內容,有人認為如果哪一天人類對所有的游戲都失去興趣,恐怕世界的末日就要
16、到了。電腦對游戲的貢獻有目共睹,現(xiàn)在摸過電腦的人很少有沒玩過電腦游戲的,喜歡游戲的人也很少有不玩電腦的。</p><p> 俄羅斯方塊是一款風靡全球的電視游戲機和掌上游戲機游戲,它曾經(jīng)造成的轟動與造成的經(jīng)濟價值可以說是游戲史上的一件大事。這款游戲最初是由蘇聯(lián)的游戲制作人Alex Pajitnov制作的,它看似簡單但卻變化無窮,令人上癮。相信大多數(shù)用戶都還記得為它癡迷得茶不思飯不想的那個俄羅斯方塊時代。究其歷史,
17、俄羅斯方塊最早還是出現(xiàn)在PC機上,而我國的用戶都是通過紅白機了解、喜歡上它的?,F(xiàn)在聯(lián)眾又將重新掀起這股讓人沉迷的俄羅斯方塊風潮。對一般用戶來說,它的規(guī)則簡單,容易上手,且游戲過程變化無窮,而在"聯(lián)眾俄羅斯方塊"中,更有一些聯(lián)眾網(wǎng)絡游戲所獨有的魅力――有單機作戰(zhàn)與兩人在線對戰(zhàn)兩種模式,用戶可任選一種進行游戲。網(wǎng)絡模式還增加了積分制,使用戶既能感受到游戲中的樂趣,也給用戶提供了一個展現(xiàn)自己高超技藝的場所。</p&g
18、t;<p> 俄羅斯方塊游戲可以說是隨計算機的發(fā)展而發(fā)展,并不斷推陳出新演變出各種類似游戲, 深受廣大玩家喜愛。這個游戲有的簡單, 有的復雜, 但其根本原理是一樣的都是對運動的方塊進行組合, 來訓練玩家的反應能力。談到游戲軟件, 大多數(shù)人都認為其神妙莫測, 高不可及。而一般游戲軟件也確實具有很高的技術難度, 隨著開發(fā)工具及軟件開發(fā)方法學的不斷發(fā)展, 動手開發(fā)游戲也不是十分困難的。俄羅斯方塊游戲是一種古老而又有趣的游戲,
19、游戲軟件不計其數(shù), 網(wǎng)上就有好多關于實現(xiàn)的復雜算法和設計, 其難度讓一般初學者望而卻步。本文利用數(shù)組作為方塊的數(shù)據(jù)結構,提出一種用JAVA語言實現(xiàn)的簡易方法, 對初學者可仿此開發(fā)類似游戲, 并了解游戲軟件的設計與開發(fā)過程。</p><p><b> 1.緒論</b></p><p> 1.1 電子游戲及其分類</p><p> 電子游戲
20、,也就是運行在家用電腦、家用電子游戲機或是掌中寶游戲機及街機上的電子游戲程序。電子游戲是一種結合劇情故事、美術、音樂、動畫、程序等技術于一身的互動型娛樂軟件,涉及到多個行業(yè)。 </p><p> 從電子游戲的分類來看,有著多種分類方式。傳統(tǒng)的游戲分類是按照游戲類型,將其分為即時戰(zhàn)略游戲、第一人稱射擊游戲、角色扮演游戲、策略型游戲等類別。根據(jù)游戲運行平臺的不同,可將電子游戲分為游戲機游戲、單機版PC 游戲、互動電
21、視游戲、在線游戲和手機游戲。此外,韓國政府將電子游戲業(yè)分為家用游戲機游戲、單機版PC 游戲、網(wǎng)絡游戲和街機游戲四大類??紤]到中韓游戲業(yè)比較接近,論文采用韓國的分類標準?!熬W(wǎng)絡游戲”也就是人們一般所指的“在線游戲”,是指通過互聯(lián)網(wǎng)進行的電腦游戲,通過人與人之間的互動達到交流、娛樂和休閑的目的。在互聯(lián)網(wǎng)(局域網(wǎng))技術出現(xiàn)之前,電子游戲都可以歸于單機版游戲,即“人機對戰(zhàn)”游戲,或最多是雙人對戰(zhàn)游戲。而隨著互聯(lián)網(wǎng)技術的出現(xiàn),通過連接游戲服務器,
22、上百、上千、乃至上萬的游戲玩家同時連線娛樂成為了現(xiàn)實,這就大大增加了游戲的互動性、真實性,豐富了電子游戲的內涵。從網(wǎng)絡游戲的分類來看,目前業(yè)界還沒有一個比較統(tǒng)一規(guī)范的分類。隨著計算機設備和網(wǎng)絡技術的發(fā)展,電子游戲在全球得到了迅猛的發(fā)展,取得了巨大的成功,已成為當今世界上不可缺少的精神糧食。</p><p> 1.2 電子游戲發(fā)展現(xiàn)狀</p><p> 1.2.1 電子游戲在國外的發(fā)展現(xiàn)
23、狀</p><p> 電子游戲是最初產(chǎn)生于美國,1971年,一個還在MIT就讀的學生設計了世界上第一個業(yè)務用游戲機,這個街機游戲的名字叫《電腦空間》??梢哉f時至今日,電子游戲仍然是外國的天下。</p><p> 美國至今仍是世界第一大游戲市場,它遵循的是以發(fā)行商為主的產(chǎn)業(yè)開發(fā)鏈模式,根據(jù)美國市場調查公司NPD Group調查統(tǒng)計,美國2004年游戲總銷售金額(包括家用、掌上型主機及軟件
24、)為99億美元,占了全球游戲市場的45%。其中游戲軟件銷售的具體數(shù)字是:視頻游戲軟件的銷售額達52億美元(1.6億套),PC游戲軟件銷售額達11億美元(4500萬套),掌機游戲銷售額達10億美元(4230萬套)。2004年一共大約有2.48億套游戲售出。據(jù)估計,美國每個家庭平均購買過2部游戲[3]。</p><p> 日本近20年來瘋狂賺電子游戲的錢。從上世紀60年代初的街機,到六七十年代之間的家用游戲機,再到
25、八九十年代的掌上游戲機,日本經(jīng)過30多年的耕耘,終于把電子游戲這棵“搖錢樹”,培育成第一時尚娛樂產(chǎn)業(yè),壟斷全球業(yè)界長達10余年。對于日本來說,電玩業(yè)已是國家經(jīng)濟的重要支柱之一,在GDP中占有1/5的舉足輕重地位。日本游戲業(yè)在最輝煌的1998年,曾經(jīng)占領全球電子游戲市場硬件90%以上,軟件50%以上。</p><p> 韓國號稱世界上網(wǎng)絡游戲產(chǎn)業(yè)最發(fā)達國家之一。迄今為止,國內網(wǎng)絡游戲市場有超過60%的產(chǎn)品來自韓國
26、游戲軟件開發(fā)商,韓國網(wǎng)絡游戲使國內很多游戲運營公司在游戲營銷市場或股票資本市場上獲得了巨大的成功。 韓國游戲市場的發(fā)展不是偶然,韓國政府不僅給游戲產(chǎn)業(yè)以正確的定位和引導,更是將其和本國經(jīng)濟發(fā)展緊密地聯(lián)系到一起,做了很多市場培育方面的工作。韓國政府認識到,靠重型工業(yè)來支撐全國經(jīng)濟的做法是片面的,于是將IT、娛樂產(chǎn)業(yè)視為新的經(jīng)濟增長點,開始大力扶持。從那時起,科技含量極高而能源消耗極低的游戲制作及相關產(chǎn)業(yè)擔負起了“富國興邦”的重擔。由文化觀
27、光部出面組建韓國游戲支援中心,向韓國游戲產(chǎn)業(yè)提供從資金到技術上的多方面支援;成立游戲投資聯(lián)盟,政府每年向游戲產(chǎn)業(yè)投入的資金多達500億韓元,并為游戲企業(yè)提供長期的低息貸款;設立信息化基金和文化產(chǎn)業(yè)基金,為游戲產(chǎn)業(yè)服務;對指定的風險企業(yè)實行各種稅制優(yōu)惠政策,減少甚至免除游戲企業(yè)的稅務負擔;建設游戲產(chǎn)業(yè)基地以扶持中小游戲企業(yè)的發(fā)展;對從事游戲產(chǎn)業(yè)的高科技人才免除兩年的兵役。 在韓國,從制作到運營,一個網(wǎng)絡游戲公司起步門檻較低,主要得益于政府
28、實行的援助計劃。此外,在有</p><p> 1.2.2 電子游戲在國內的發(fā)展現(xiàn)狀</p><p> 與電子游戲發(fā)達的國家相比,我國在電子游戲方面還存在比較大的差距。目前,我國游戲市場正處于發(fā)展階段,但市場上的游戲軟件主要來自日本、美國、韓國等地,但由本土游戲制作人開發(fā)創(chuàng)作的游戲正在高速增加,國產(chǎn)原創(chuàng)的游戲即將成為游戲的主流。</p><p> 中國的游戲產(chǎn)業(yè)
29、經(jīng)過80年代初期臺灣廠商的探索至90年代,開始了自己的研發(fā)、發(fā)行的歷程,直至網(wǎng)絡游戲的風行,讓中國的網(wǎng)絡游戲開始有了飛速的發(fā)展。 1983年,智冠科技有限公司在中國臺灣成立,為全球第一家簽訂授權重制中文版產(chǎn)品代理銷售合約的公司,2000年智冠在臺灣股票上市, 2002年其控股的中華網(wǎng)龍在臺灣上市。</p><p> 1996年底,UBI SOFT上海分公司暨上海育碧電腦軟件有限公司成立。同年,全球游戲軟件領軍企
30、業(yè)EA在中國上海成立辦事處。1997年,由尚洋公司制作的《血獅》正式上市。 1997年,北京新天地互動多媒體技術有限公司成立,該公司引進了《古墓麗影III》(TombRaider III)、《盟軍敢死隊》等著名歐美游戲,并在1999年在中國率先掀起“游戲軟件價格革命”,全面推行50元的價格體系,從此正版游戲價格開始貼近大眾消費者。 1999年,業(yè)內估算中國電腦游戲市場(正版)約1.5億元人民幣。 2000年,大陸華彩軟件代理發(fā)行第一款中
31、文MMORPG《萬王之王》正式推出,該游戲于1999年在臺灣發(fā)行,由臺灣雷爵資訊(Lager)開發(fā)。也在2000年,繼《萬王之王》、《石器時代》、《網(wǎng)絡三國》在臺灣上市之后,游戲桔子推出了《天堂》,游戲桔子成立于1995年,1999年以《便利店》在臺灣奠定了地位?!短焯谩愤@款由韓國著名游戲公司Ncsoft研發(fā)的網(wǎng)絡游戲不但在本國大獲成功,也在臺灣再次奪冠。 2001年初,北京華義在中國大陸地區(qū)正式推出了《石器時代》,華義國際股份有限公司
32、于1993年在臺北成立,</p><p> 2005年1月21日,中央電視臺報道:我國網(wǎng)絡游戲產(chǎn)業(yè)當年增加了50%,今后幾年都將以50%以上的速度增長;第一屆中國網(wǎng)絡游戲年會報道:中國國內網(wǎng)絡游戲2004年規(guī)模達24.7億元,2009年規(guī)模將達到109.6億元。</p><p><b> 2.可行性研究</b></p><p><b&
33、gt; 2.1 設計目的</b></p><p> 通過本游戲的設計,綜合自己在校期間所學的理論知識,設計開發(fā)俄羅斯方塊游戲,使自己熟悉應用系統(tǒng)的開發(fā)過程,培養(yǎng)獨立思考能力,檢驗學習效果和動手能力,初步掌握軟件工程的系統(tǒng)理論,初步掌握MVC這種設計模式,進一步鞏固和加強自身對j2se基礎知識的理解,提高自己的編程水平,從而達到理論與實踐相結合的目的。</p><p> 2
34、.2 軟件問題定義</p><p> 基本要求:本游戲開發(fā)的總體任務是實現(xiàn)游戲的可操作性,以及界面的美觀性。整個開發(fā)過程遵循軟件工程規(guī)范,采用JAVA GUI編程來實現(xiàn)界面以及事件的控制,用戶根據(jù)鍵盤的四個方向鍵控制翻轉、向左、向右和向下操作,通過菜單欄中的相應菜單選項實現(xiàn)游戲的開始、結束、變換方塊、積分以及等級的功能。</p><p> 目標:通過本游戲的開發(fā),主要實現(xiàn)游戲的可操作性
35、以及美觀性,同時使自己對JAVA語言的了解更進一層,為將來的實際工作打下堅實的基礎。</p><p> 條件、假定和限制:由于知識以及能力的限制,本游戲所實現(xiàn)的功能不夠強大,可對本游戲進行改善,從而增強游戲的功能。</p><p> 可行性研究的方法:通過研究分析俄羅斯方塊所具備的能力及實現(xiàn)的方法、確定主體結構。利用現(xiàn)階段我所能達到的能力,以最簡潔、最容易的辦法,邊開發(fā)邊測試邊修改,實
36、現(xiàn)一個初級游戲軟件。</p><p> 評價尺度:由于本軟件是一個初級產(chǎn)品,對其要求不是太苛刻,所以能夠達到俄羅斯游戲的一般功能即可。</p><p><b> 2.3 可行性分析</b></p><p> 技術可行性:開發(fā)本游戲的編程語言有多種,考慮到自身對語言的掌握程度,選擇JAVA語言進行游戲的開發(fā),采用JAVA GUI編程來實現(xiàn)界
37、面以及事件的控制。</p><p> 經(jīng)濟可行性:本游戲的開發(fā)旨在完成畢業(yè)設計,不注重直接的經(jīng)濟效益和其后的發(fā)展方向,只在注重自身水平和能力的提高,對自身的經(jīng)濟要求也不高,只要有一臺能運行相應JAVA程序的電腦便可,所以不用考慮到經(jīng)濟問題。</p><p> 社會可行性:本游戲的開發(fā)主要為了完成畢業(yè)設計,開發(fā)的主體是個人,不存在法律上的侵權行為,也不會為社會造成影響,這方面是完全可行的
38、。</p><p><b> 3.需求分析</b></p><p><b> 3.1 引言</b></p><p> 對軟件需求分析就是通過調查研究,建立系統(tǒng)的數(shù)據(jù)模型、功能模型、行為模型,用戶和開發(fā)人員在“系統(tǒng)必須做什么”這個問題上實現(xiàn)相互理解,達到共識,從而形成雙方認可的軟件產(chǎn)品的需求規(guī)格說明書。這樣有益于提高軟
39、件開發(fā)過程中的能見度,便于對軟件開發(fā)過程中的控制與管理,便于采用工程方法開發(fā)軟件,提高軟件的質量,便于開發(fā)人員、維護人員、管理人員之間的交流、協(xié)作,并作為工作成果的原始依據(jù),并且在向潛在用戶傳遞軟件功能、性能需求,使其能夠判斷該軟件是否與自己的需求相關。</p><p><b> 3.2 方案論證</b></p><p> 學校現(xiàn)已開設的課程有C語言、C++,ja
40、va,自己本身自學了Java,通過網(wǎng)上以及圖書館的資料,知道可以通過C,C++,VB,Delphi,Java實現(xiàn)俄羅斯方塊游戲的設計。下面簡單介紹下VB、C++、Java各自的優(yōu)點:</p><p> 3.3.1 VB的優(yōu)點</p><p> 全稱Visual Basic,它是以Basic語言作為其基本語言的一種可視化編程工具。在中國乃至全世界都能看到它的身影,它曾是在中國最為流行的編
41、程工具,到現(xiàn)在還占 據(jù)著非常重要的地位,對于它的好壞大家都有一定的了解,VB作為一種較早出現(xiàn)的開發(fā)程序以其容易學習,開發(fā)效率較高,具有完善的幫助系統(tǒng)等優(yōu)點曾影響了好 幾代編程人員,但是由于VB不具備跨平臺這個特性,從而也決定了VB在未來的軟件開發(fā)中將會逐漸地退出其歷史舞臺;它對組件技術的支持是基于COM和 ActiveX,對于組件技術不斷完善發(fā)展的今天,它也顯出了它的落后性;同時VB在進行系統(tǒng)底層開發(fā)的時候也是相對復雜的,調用API函數(shù)
42、需聲明,調用 不方便,不能進行DDK編程,不可能深入Ring0編程,不能嵌套匯編;而且面向對象的特性差;網(wǎng)絡功能和數(shù)據(jù)庫功能也沒有非常突出的表現(xiàn),綜上所 述,VB作為一種可視化的開發(fā)工具由于其本身的局限性,導致了它在未來軟件開發(fā)中逐步被其他工具所代替。</p><p> 3.3.2 C++的優(yōu)點</p><p> C++是對C語言的擴充,擴充的絕大部分來自著名語言中的最佳特性:從SIM
43、ULA 67中吸取了類,從ALGOL 68中吸取了運算符一名多用、引用和在分程序中任何地方說明變量,綜合了Ada的類屬和Clu的模塊特點,從BCPL中吸取異常處理,從BCPL中吸取了用//表示注釋。</p><p> C++保持了C的緊湊、靈活、高效和易移植強的優(yōu)點,它對數(shù)據(jù)抽象的支持主要在于類概念和機制,對面向對象風范的支持主要通過虛擬函數(shù)。C++既有數(shù)據(jù)抽象和面向對象能力,語言運行性能高多,加上C語言的普及
44、,而從C至C++的過渡較為平滑,以及C++與C的兼容程度可使數(shù)據(jù)巨大的C程序能方便地在C++環(huán)境中重用。</p><p> 盡管C++當初的設計本意是幫助管理大型程序,但其用途并不僅限于此。C++的面向對象的特性可有效地用于實際的程序設計工作。C++常常用于設計編輯器、數(shù)據(jù)庫、個人文件系統(tǒng)以及通訊程序等。而且,由于C++共享C的效率,所以用C++可以構成很多高性能的系統(tǒng)軟件。</p><p&
45、gt; 3.3.3 Java的優(yōu)點</p><p><b> (1) 安全性 </b></p><p> Java是一種安全的網(wǎng)絡編程語言,不支持指針類型,一切對內存的訪問都必須通過對象的實例來實現(xiàn)。這樣能夠防止他人使用欺騙手段訪問對象的私有成員,也能夠避免在指針操作中易產(chǎn)生的錯誤。</p><p> 此外,Java的安全性體現(xiàn)在多個層
46、次上:在編譯層,有語法檢查;在解釋層,有字節(jié)碼校驗器,可進行代碼段格式測試和規(guī)則檢查、訪問權限和類型轉換合法性檢查、操作數(shù)堆棧的上溢和下溢檢測、代碼參數(shù)類型合法性檢查等;在平臺層上,通過配置策略,可設定訪問資源域,無須區(qū)分本地或遠程。</p><p> (2) 可移植性 </p><p> Java具備有很好的移植性,這主要得益于它與平臺無關的特性。同時,Java的類庫中也實現(xiàn)了與平
47、臺無關的接口,這使得這些類庫也能移植。同時,Java編譯器主要是由Java本身來實現(xiàn)的,Java的運行系統(tǒng)(解釋器)由標準C語言實現(xiàn),因而整個Java系統(tǒng)都具有可移植性。 </p><p> (3) 多線程機制 </p><p> Java具有多線程機制,這使得應用程序能夠并行地執(zhí)行。它的同步機制也保證了對共享數(shù)據(jù)的共享操作,而且線程具有優(yōu)先級的機制,有助于分別使用不同線程完成特定行
48、為,也提高了交互的實時響應能力。Java的多線程技術使網(wǎng)上實時交互實現(xiàn)很容易,從而為解決網(wǎng)上大數(shù)量的客戶訪問提供了技術基礎。</p><p><b> (4) 跨平臺</b></p><p> 通常,在Windows下編寫的程序是不能直接拿到UNIX上運行的,因為程序的執(zhí)行最終必須轉換成為計算機硬件的機器指令來執(zhí)行,專門為某種計算機硬件和操作系統(tǒng)編寫的程序是不能
49、夠直接放到其他類型的計算機硬件上執(zhí)行的,至少要做移植工作。要想讓程序能夠在不同的計算機上運行,就要求程序設計語言能夠跨越各種軟件和硬件平臺,而Java恰恰滿足了這一需求。Java編譯器能夠產(chǎn)生一種與計算機體系結構無關的字節(jié)指令,只要安裝了Java虛擬機,Java就可以在相應的處理機上執(zhí)行。</p><p> 3.3.4 方案的選擇</p><p> 面向對象的程序設計吸取了結構化程序設
50、計的先進思想,并把它們同幾個支持用戶用新方法進行程序設計的有力概念結合在一起。</p><p> 所有面向對象的程序設計語言一般都包含三個概念:封裝、多態(tài)性和繼承性。</p><p> 這種方法要求語言必須具備抽象、封裝、繼承和多態(tài)性這幾個關鍵要素。</p><p> 面向對象的程序設計,是通過數(shù)據(jù)和代碼建立分塊的內存區(qū)域,以便提供對程序進行模塊化的一種程序設
51、計方法,這些模塊可以被用作樣板,在需要時再建立其副本。</p><p> C++和Java在面向對象這方面比VB要強,所以我排除了用VB做的可能性。但是C++為了與C語言兼容,其是包含了些面向過程的成分;Java除了C++中非面向過程的部分,其程序編寫過程就是設計、實現(xiàn)類,定義其屬性、行為的過程。還有Java特有的“沙箱”機制是其安全性的保障,同時它去除了C++中易造成的錯誤指針,增加了自動內存管理等措施,保證
52、了Java程序運行的可靠性。</p><p> 所以經(jīng)過再三比較了三種語言后,決定采用Java語言編寫俄羅斯方塊。</p><p><b> 4游戲的開發(fā)與編譯</b></p><p> 4.1 編譯工具簡介</p><p> Eclipse 是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是
53、一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。幸運的是,Eclipse 附帶了一個標準的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。</p><p> 4.2 硬件以及軟件開發(fā)平臺</p><p> CPU:Intel core2 T5870</p><p><b> 內存:2G</b><
54、;/p><p><b> 硬盤:250G</b></p><p> 操作系統(tǒng):Microsoft Windows 7</p><p> JDK版本:jdk1.5.0_09</p><p> Eclipse版本:eclipse-SDK-3.6.1-win32</p><p><b>
55、 4.3 功能設計</b></p><p> 本項目是為了實現(xiàn)俄羅斯方塊的基本功能而設計的,</p><p> 基本能夠達到俄羅斯方</p><p> 塊的各種游戲性。項目需求分析如下:</p><p> 1)由方塊組成的不同的隨機圖形會從區(qū)域上方開始緩慢落下。</p><p> 2)玩家可以做的
56、操作有:以90度為單位旋轉方每一格塊。以格子為單位左右移動方塊,讓方塊加速落下。</p><p> 3)方塊移到區(qū)域最下方或是著地到其他方塊上無法移動時,</p><p> 就會固定在該處,而新的隨機圖形會出現(xiàn)在區(qū)域上方開始落下。</p><p> 4)當區(qū)域中某一列橫向格子全部由方塊填滿,則該列會自動消除并成為玩家的得</p><p>
57、;<b> 分。</b></p><p> 當固定的方塊堆到區(qū)域最上方,則游戲結束。</p><p> 4.4 系統(tǒng)功能系統(tǒng)模塊</p><p><b> 具體模塊劃分算法:</b></p><p> 1,主要板設計,主面板為container 其面積為600:*480,其下添加子面板ga
58、meCrc,ControlSrc,并且采用Gridlayout的布局方式,如下圖:</p><p> 代碼如下:setSize(600,480); </p><p> setLayout(new GridLayout(1,2)); </p><p> gameScr = new GameCanvas(); </p><p> game
59、Scr.addKeyListener(gameScr); </p><p> timer = new MyTimer(gameScr); </p><p> timer.setDaemon(true); </p><p> timer.start(); </p><p> timer.suspend(); </p>&l
60、t;p> add(gameScr); </p><p> Panel rightScr = new Panel(); </p><p> rightScr.setLayout(new GridLayout(2,1,0,30)); </p><p> rightScr.setSize(120,500); </p><p> ad
61、d(rightScr); </p><p> gameSrc面板中包含15行和10列的小方塊,用于顯示內容 如圖</p><p> ControlSrc中有5個功能模塊 和2行顯示信息的模塊</p><p><b> 代碼如下:</b></p><p> //定義按鈕Level UP </p>&l
62、t;p> Button level_up_b = new Button("提高級數(shù)"); </p><p> level_up_b.setSize(new Dimension(50,200)); </p><p> level_up_b.addActionListener(new Command(Command.button_levelup,gameScr)
63、); </p><p> //定義按鈕Level Down </p><p> Button level_down_b =new Button("降低級數(shù)"); </p><p> level_down_b.setSize(new Dimension(50,200)); </p><p> level_down_b
64、.addActionListener(new Command(Command.button_leveldown,gameScr)); </p><p> //定義按鈕Level Pause </p><p> Button pause_b =new Button("游戲暫停"); </p><p> pause_b.setSize(new
65、Dimension(50,200)); </p><p> pause_b.addActionListener(new Command(Command.button_pause,gameScr)); </p><p> //定義按鈕Quit </p><p> Button quit_b = new Button("退出游戲"); <
66、/p><p> quit_b.setSize(new Dimension(50,200)); </p><p> quit_b.addActionListener(new Command(Command.button_quit,gameScr)); </p><p> controlScr.add(play_b); </p><p> c
67、ontrolScr.add(level_up_b); </p><p> controlScr.add(level_down_b); </p><p> controlScr.add(pause_b); </p><p> controlScr.add(quit_b); </p><p> setVisible(true); <
68、/p><p> gameScr.requestFocus(); </p><p><b> } </b></p><p><b> } </b></p><p><b> 4.5 功能流程圖</b></p><p><b> 4.6詳細設
69、計</b></p><p> 1.首先要隨機產(chǎn)生一個圖形</p><p><b> 2.</b></p><p><b> 圖形數(shù)據(jù)結構:</b></p><p> 定義一個4x4方陣,共16個小格。用“0”和“1”來表示每個方格是繪</p><p>
70、制還是空白,由此可以組合出多種圖形,如圖所示: </p><p> 其中圖一表示為{0,0,0,0, 1,1,1,1 , 0,0,0,0, 0,0,0,0}</p><p> 其中圖二表示為{0,0,0,0, 0,1,1,0 , 0,1,1,0, 0,0,0,0}</p><p> 其中圖三表示為{0,0,0,0, 0,1,0,0 , 0,1,1,1, 0,0
71、,0,0}</p><p> 其中圖四表示為{0,0,0,0, 0,1,0,1 , 0,1,1,0, 0,0,1,0}</p><p> 方塊的旋轉是通過繪制4個方向的方塊,在不同旋轉角度顯示不同方向的方塊來完成的。所以程序要控制方塊的旋轉方向,只要控制顯示哪副圖就可以了。</p><p> 本游戲是用一個三維數(shù)組int[][][] shapes = new
72、int[][][];作為存儲方塊的數(shù)據(jù)結構來保存方塊的28種狀態(tài)的。代碼如下:</p><p> public final static int[][] STYLES = {// 共28種狀態(tài)</p><p> { 0x0f00, 0x4444, 0x0f00, 0x4444 }, // 長條型的四種狀態(tài)</p><p> { 0x04e0, 0x0464,
73、0x00e4, 0x04c4 }, // 'T'型的四種狀態(tài)</p><p> { 0x4620, 0x6c00, 0x4620, 0x6c00 }, // 反'Z'型的四種狀態(tài)</p><p> { 0x2640, 0xc600, 0x2640, 0xc600 }, // 'Z'型的四種狀態(tài)</p><p>
74、{ 0x6220, 0x1700, 0x2230, 0x0740 }, // '7'型的四種狀態(tài)</p><p> { 0x6440, 0x0e20, 0x44c0, 0x8e00 }, // 反'7'型的四種狀態(tài)</p><p> { 0x0660, 0x0660, 0x0660, 0x0660 }, // 方塊的四種狀態(tài)</p><
75、;p><b> };</b></p><p><b> 圖形的移動:</b></p><p> 圖形類Shape保存了自己的位置信息,用left表示圖形到左邊界的距離,top表示圖形到上邊界的距離,圖形移動就是改變left和top的值。向上移動:top減1,向下移動:top加1,向左移動:left減1,向右移動:left加1。<
76、/p><p> 圖形的移動分為圖形的自動下落以及通過按鍵事件實現(xiàn)圖形的左移、右移以及加速下移。通過多線程ShapeDriver類來實現(xiàn)圖形的自動下移,由于游戲中方塊的動態(tài)性,每個方塊有一定的生命周期,所以選用線程來實現(xiàn)方塊。一個方塊用一個線程類對象實現(xiàn),該類繼承與Thread類,當一個方塊出現(xiàn)時也就表示一個線程對象產(chǎn)生并開始運行。通過對按鍵事件的響應,實現(xiàn)圖形的左移、右移以及加速下移。</p><
77、;p><b> 圖形的變形</b></p><p> 通過int type =newRandom().nextInt(shapes.length);shape.setBody(shapes[type]);</p><p> shape.setStatus(0);實現(xiàn)初始圖形的初始化,通過status = (status + 1) % body.length
78、;實現(xiàn)圖形的變形功能。</p><p><b> 判斷滿行及消行</b></p><p> 如果某一行沒有空白,則這一行就是滿行。滿的那行上面所有的行整體下移一行就是消除這個滿行。代碼如下:void deleteFullLine(){ </p><p> int full_line_num = 0; </p><p&g
79、t; int k = 0; </p><p> for (int i=0;i<rowNum;i++){ </p><p> boolean isfull = true; </p><p> L1:for(int j=0;j<columnNum;j++) </p><p> if(scrArr[i][j] == 0){ &
80、lt;/p><p><b> k++; </b></p><p> isfull = false; </p><p> break L1; </p><p><b> } </b></p><p> if(isfull) full_line_num++; </p&
81、gt;<p> if(k!=0 && k-1!=i && !isfull) </p><p> for(int j = 0; j < columnNum; j++){ </p><p> if (scrArr[i][j] == 0) </p><p> drawUnit(k-1,j,0); </p&g
82、t;<p><b> else </b></p><p> drawUnit(k-1,j,2); </p><p> scrArr[k-1][j] = scrArr[i][j]; </p><p><b> } </b></p><p><b> } </b&
83、gt;</p><p> for(int i = k-1 ;i < rowNum; i++){ </p><p> for(int j = 0; j < columnNum; j++){ </p><p> drawUnit(i,j,0); </p><p> scrArr[i][j]=0; </p><
84、;p><b> } </b></p><p><b> } </b></p><p> ERS_Block.score += full_line_num; </p><p> ERS_Block.scoreField.setText(""+ERS_Block.score); </p&
85、gt;<p><b> } </b></p><p><b> 5.游戲演示</b></p><p><b> 5.1開始界面</b></p><p> 5.1.1 點擊開始</p><p> 5.1.2 按鍵的應用: 點提高等級速度加快</p&g
86、t;<p><b> 5.2 系統(tǒng)測試</b></p><p> 1.點擊“開始游戲” 按鈕</p><p><b> 效果:游戲開始</b></p><p><b> 結果:正常</b></p><p> 2.點擊“提高級數(shù)” 按鈕</p>
87、<p><b> 效果:下落速度加快</b></p><p><b> 結果:正常</b></p><p> 3.點擊“降低級數(shù)” 按鈕</p><p><b> 效果:下落速度降低</b></p><p><b> 結果:正常</b&g
88、t;</p><p> 4.點擊“游戲暫?!?按鈕</p><p><b> 效果:暫停</b></p><p><b> 結果:正常</b></p><p> 5.點擊“退出游戲” 按鈕</p><p><b> 效果:游戲退出</b><
89、;/p><p><b> 結果:正常</b></p><p> 5.3 按鍵事件的功能測試</p><p><b> 1.方塊移動測試</b></p><p> 游戲過程中,點擊“左、右、下”方向鍵</p><p> 輸出:方塊正常移動,不會移出邊界</p>
90、<p><b> 結果:正常</b></p><p><b> 2.方塊反轉測試</b></p><p> 游戲過程中,點擊向上方向鍵</p><p> 輸出:方塊無邊界和障礙物阻擋的情況下可反轉</p><p><b> 結果:正常</b></p
91、><p> 3. 當方塊下落到最底面或與障礙物接觸時</p><p> 輸出:方塊成功堆砌在底部</p><p><b> 結果:正常</b></p><p> 4.當出現(xiàn)滿行現(xiàn)象時</p><p> 輸出:所有滿行被消除,方塊依次下移</p><p><b&g
92、t; 結果:正常</b></p><p><b> 結論</b></p><p><b> 6.1問題</b></p><p> 寫程序的時候,由于對有些Java知識不懂,所以有些想要表達的意思無法用Java代碼準確的表達出來,老是出錯或者無法寫下去;</p><p> ?一
93、開始,自己準備的參考資料不足,無法在遇到問題時有效的利用參考資料解決,遇到不懂的問題和不會用程序語言表達的問題時,只能留在那里,無法解決,結果問題最后越積越多,導致我無法再把程序寫下去;</p><p> ?一開始,對于老師布置的作業(yè)題目,我不太懂,無法進行有效而且清晰的分析,自然也無法繼續(xù)下去寫程序了,耽誤了較多的時間;</p><p> ?對于要寫流程圖,一開始我并不懂是什么意
94、思,也不知道怎么去寫。</p><p><b> 6.2解決方法?</b></p><p> 對于那些不懂的Java知識和不會寫的程序,我通過向同學尋求幫助和利用參考資料書,最終都解決了;</p><p> ?對于自己參考資料不足的缺點,我在下課后,去了圖書館借閱有關方面的Java參考資料書,并且向同學借閱了他們所擁有的資料書,然后又
95、利用自己的電腦上網(wǎng)查找了一些有關方面的參考知識,終于在最后解決了資料不足的缺點;</p><p> ?對于不懂的題目,我也通過向多個同學進行詢問,最終弄懂了老師布置的題目所要求的內容;</p><p> ?至于流程圖,在我向同學詢問過,并且上網(wǎng)進行了一番查找和咨詢后,也總算弄懂了流程圖的含義,并努力寫了出來。</p><p><b> 參考書目&
96、lt;/b></p><p> [美]克羅夫特著,彭暉譯.《Java游戲高級編程》.清華大學出版社.2005.</p><p> 《精通Java——JDK、數(shù)據(jù)庫系統(tǒng)開發(fā)、Web開發(fā)》</p><p> 《Java進階教程》</p><p> 《零起點Java應用編程》</p><p> 《Java程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設計(論文)java的俄羅斯方塊界面設計與實現(xiàn)
- 畢業(yè)設計 java實現(xiàn)俄羅斯方塊
- 畢業(yè)設計---俄羅斯方塊游戲java
- 俄羅斯方塊的java實現(xiàn)
- 基于java的俄羅斯方塊的設計與實現(xiàn)
- 基于java的俄羅斯方塊的設計與實現(xiàn)
- 基于java的俄羅斯方塊設計與實現(xiàn)sc
- 基于java的俄羅斯方塊的設計與實現(xiàn)
- 基于java的俄羅斯方塊設計和實現(xiàn)-
- 俄羅斯方塊游戲畢業(yè)設計
- java俄羅斯方塊課程設計
- 基于java的俄羅斯方塊游戲的設計與實現(xiàn)
- 畢業(yè)論文-java俄羅斯方塊
- java俄羅斯方塊畢業(yè)論文
- 畢業(yè)論文----java俄羅斯方塊
- 畢業(yè)設計----基于arm的俄羅斯方塊游戲設計與實現(xiàn)
- 基于java的俄羅斯方塊
- 基于java的俄羅斯方塊游戲設計與實現(xiàn)【文獻綜述】
- java課程設計--俄羅斯方塊游戲
- java課程設計---俄羅斯方塊游戲
評論
0/150
提交評論