畢業論文俄羅斯方塊游戲java_第1頁
畢業論文俄羅斯方塊游戲java_第2頁
畢業論文俄羅斯方塊游戲java_第3頁
畢業論文俄羅斯方塊游戲java_第4頁
畢業論文俄羅斯方塊游戲java_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、摘 要在現今電子信息高速發展的時代,電子游戲已經深入人們的日常生活,成為老少皆宜的娛樂方式。但是游戲設計結合了日新月異的技術,在一個產品中整合了復雜的設計、藝術、聲音和軟件,所以并不是人人皆知。直到今天,在中國從事游戲設計的人仍然很少,但是游戲行業的發展之快,遠超如家電、汽車等傳統行業,也正因為如此,游戲人才的教育、培養遠落后于產業的發展。俄羅斯方塊是個老幼皆宜的小游戲,它實現由四塊正方形的色塊組成,然后存儲在一個數組的四個元素中,計算機隨機產生不同七種類型的方塊,根據計算機時鐘控制它在一定的時間不停的產生,用戶根據鍵盤的四個方向鍵控制翻轉、向左、向右和向下操作,(控制鍵的實現是由鍵盤的方向鍵

2、的事件處理實現)。然后程序根據這七種方塊堆疊成各種不同的模型。論文描述了游戲的歷史,開發此游戲的環境,游戲開發的意義。遵循軟件工程的知識,從軟件問題定義開始,接著進行可行性研究、需求分析、概要設計、詳細設計,最后對軟件進行了測試,整個開發過程貫穿軟件工程的知識體系。此次設計在Microsoft Windows XP系統下,以Java為開發語言,在eclipse開發平臺上進行游戲的設計與實踐。關鍵詞:游戲設計;算法;數組;事件AbstractIn the era of high-speed development of electronic information, computer game

3、has enter peoples daily life, become an amusement adapt to old and young. But Game design is a combination of fast-moving technology, the complexity of integrating design、 art、audio and software into a single production, so this technology isnt known by everyone. up-to-date, there are few people wor

4、k at game design all the same, whereas, the development of game industry more faster than traditional industry as home appliances and automobile, by the reason of this situation, the education and training of person with ability of game design drop behind the development of game industry.The Russian

5、 square piece is a get-away drama with all proper old young , it carry out to be constitute by four pieces of colors of exact square piece, then save in one four chemical elements of the piece set, random creation dissimilarity of calculator seven the square piece of the category type, control it ac

6、cording to the calculator clock in certain time continuously creation, the customer is inside out according to four directions key control of the keyboard, to left, rightwards and get down the operation,.( the realization of the control key is to be carry out by the event handling of the direction k

7、ey of the keyboard)Then the procedure pileds according to these seven kinds of square pieces various different model.The thesis has described the game history , has developed this game environment, development significance of game. Knowledge abiding by a software engineering, definition begins from

8、software problem , proceed to carry out feasibility study , need analysis , essentials design , detailed design, the at last has carried out a testing on the software , entire exploitation process has run through the software engineering knowledge hierarchy.The computer game design and practice are

9、designed on eclipse developing platform with Java developing instrument, under Microsoft Windows XP system this time.Key Words:Game design;calculate way;several;event目 錄 TOC o 1-3 h z u HYPERLINK l _Toc229830108 摘 要 PAGEREF _Toc229830108 h I HYPERLINK l _Toc229830109 Abstract PAGEREF _Toc229830109 h

10、 II HYPERLINK l _Toc229830110 目 錄 PAGEREF _Toc229830110 h III HYPERLINK l _Toc229830111 引 言 PAGEREF _Toc229830111 h 1 HYPERLINK l _Toc229830112 1緒論 PAGEREF _Toc229830112 h 2 HYPERLINK l _Toc229830113 1.1 電子游戲及其分類 PAGEREF _Toc229830113 h 2 HYPERLINK l _Toc229830114 1.2 電子游戲發展現狀 PAGEREF _Toc229830114

11、h 2 HYPERLINK l _Toc229830115 1.2.1 電子游戲在國外的發展現狀 PAGEREF _Toc229830115 h 2 HYPERLINK l _Toc229830116 1.2.2 電子游戲在國內的發展現狀 PAGEREF _Toc229830116 h 3 HYPERLINK l _Toc229830117 2可行性研究 PAGEREF _Toc229830117 h 5 HYPERLINK l _Toc229830118 2.1 設計目的 PAGEREF _Toc229830118 h 5 HYPERLINK l _Toc229830119 2.2 軟件問題

12、定義 PAGEREF _Toc229830119 h 5 HYPERLINK l _Toc229830120 2.3 可行性分析 PAGEREF _Toc229830120 h 5 HYPERLINK l _Toc229830121 3需求分析 PAGEREF _Toc229830121 h 6 HYPERLINK l _Toc229830122 3.1 引言 PAGEREF _Toc229830122 h 6 HYPERLINK l _Toc229830123 3.2 游戲需求 PAGEREF _Toc229830123 h 6 HYPERLINK l _Toc229830124 3.3 軟

13、硬件需求 PAGEREF _Toc229830124 h 7 HYPERLINK l _Toc229830125 3.4 接口控制 PAGEREF _Toc229830125 h 7 HYPERLINK l _Toc229830126 3.5 方案論證 PAGEREF _Toc229830126 h 7 HYPERLINK l _Toc229830127 3.5.1 VB的優點 PAGEREF _Toc229830127 h 7 HYPERLINK l _Toc229830128 3.5.2 C+的優點 PAGEREF _Toc229830128 h 8 HYPERLINK l _Toc229

14、830129 3.5.3 Java的優點 PAGEREF _Toc229830129 h 8 HYPERLINK l _Toc229830130 3.5.4 方案的選擇 PAGEREF _Toc229830130 h 9 HYPERLINK l _Toc229830131 4 概要設計 PAGEREF _Toc229830131 h 10 HYPERLINK l _Toc229830132 41 游戲設計方案的確定 PAGEREF _Toc229830132 h 10 HYPERLINK l _Toc229830133 42 系統流程結構設計 PAGEREF _Toc229830133 h 1

15、1 HYPERLINK l _Toc229830134 43 各個功能模塊圖設計 PAGEREF _Toc229830134 h 11 HYPERLINK l _Toc229830135 4.3.1 模型層(Model)功能模塊圖設計 PAGEREF _Toc229830135 h 11 HYPERLINK l _Toc229830136 4.3.2 視圖層(View)功能模塊圖設計 PAGEREF _Toc229830136 h 12 HYPERLINK l _Toc229830137 4.3.3 控制層(Controller)功能模塊圖設計 PAGEREF _Toc229830137 h

16、12 HYPERLINK l _Toc229830138 5 詳細設計 PAGEREF _Toc229830138 h 13 HYPERLINK l _Toc229830139 模型層(Model)設計 PAGEREF _Toc229830139 h 13 HYPERLINK l _Toc229830140 5.1.1 圖形的產生 PAGEREF _Toc229830140 h 13 HYPERLINK l _Toc229830141 5.1.2 圖形的數據結構 PAGEREF _Toc229830141 h 13 HYPERLINK l _Toc229830142 5.1.4 圖形的變形 P

17、AGEREF _Toc229830142 h 14 HYPERLINK l _Toc229830143 5.1.5 存儲和表示障礙物 PAGEREF _Toc229830143 h 14 HYPERLINK l _Toc229830144 5.1.6 判斷滿行及消行 PAGEREF _Toc229830144 h 15 HYPERLINK l _Toc229830145 視圖層(View)設計 PAGEREF _Toc229830145 h 16 HYPERLINK l _Toc229830146 5.2.1 方塊的顯示 PAGEREF _Toc229830146 h 16 HYPERLINK

18、 l _Toc229830147 5.2.2 障礙物的顯示 PAGEREF _Toc229830147 h 17 HYPERLINK l _Toc229830148 5.3 控制層(Controller)設計 PAGEREF _Toc229830148 h 17 HYPERLINK l _Toc229830149 5.4 游戲演示 PAGEREF _Toc229830149 h 18 HYPERLINK l _Toc229830150 5.4.1 游戲界面顯示 PAGEREF _Toc229830150 h 18 HYPERLINK l _Toc229830151 5.4.2 開始和結束控制菜

19、單 PAGEREF _Toc229830151 h 18 HYPERLINK l _Toc229830152 5.4.3 分數和等級查看菜單 PAGEREF _Toc229830152 h 19 HYPERLINK l _Toc229830153 5.4.4 變換方塊菜單 PAGEREF _Toc229830153 h 19 HYPERLINK l _Toc229830154 5.4.5 幫助菜單 PAGEREF _Toc229830154 h 20 HYPERLINK l _Toc229830155 5系統測試 PAGEREF _Toc229830155 h 20 HYPERLINK l _

20、Toc229830156 5.1 游戲界面菜單選項的功能測試 PAGEREF _Toc229830156 h 20 HYPERLINK l _Toc229830157 5.2 按鍵事件的功能測試 PAGEREF _Toc229830157 h 21 HYPERLINK l _Toc229830158 方塊堆砌與消行測試 PAGEREF _Toc229830158 h 21 HYPERLINK l _Toc229830159 5.4 測試結果分析 PAGEREF _Toc229830159 h 21 HYPERLINK l _Toc229830160 結 論 PAGEREF _Toc229830

21、160 h 22 HYPERLINK l _Toc229830161 致 謝 PAGEREF _Toc229830161 h 23 HYPERLINK l _Toc229830162 參 考 文 獻 PAGEREF _Toc229830162 h 24引 言游戲是人們活動中一項非常重要的內容,有人認為如果哪一天人類對所有的游戲都失去興趣,恐怕世界的末日就要到了。電腦對游戲的貢獻有目共睹,現在摸過電腦的人很少有沒玩過電腦游戲的,喜歡游戲的人也很少有不玩電腦的。俄羅斯方塊是一款風靡全球的電視游戲機和掌上游戲機游戲,它曾經造成的轟動與造成的經濟價值可以說是游戲史上的一件大事。這款游戲最初是由蘇聯的游

22、戲制作人Alex Pajitnov制作的,它看似簡單但卻變化無窮,令人上癮。相信大多數用戶都還記得為它癡迷得茶不思飯不想的那個俄羅斯方塊時代。究其歷史,俄羅斯方塊最早還是出現在PC機上,而我國的用戶都是通過紅白機了解、喜歡上它的。現在聯眾又將重新掀起這股讓人沉迷的俄羅斯方塊風潮。對一般用戶來說,它的規則簡單,容易上手,且游戲過程變化無窮,而在聯眾俄羅斯方塊中,更有一些聯眾網絡游戲所獨有的魅力有單機作戰與兩人在線對戰兩種模式,用戶可任選一種進行游戲。網絡模式還增加了積分制,使用戶既能感受到游戲中的樂趣,也給用戶提供了一個展現自己高超技藝的場所。俄羅斯方塊游戲可以說是隨計算機的發展而發展,并不斷推

23、陳出新演變出各種類似游戲, 深受廣大玩家喜愛。這個游戲有的簡單, 有的復雜, 但其根本原理是一樣的都是對運動的方塊進行組合, 來訓練玩家的反應能力。談到游戲軟件, 大多數人都認為其神妙莫測, 高不可及。而一般游戲軟件也確實具有很高的技術難度, 隨著開發工具及軟件開發方法學的不斷發展, 動手開發游戲也不是十分困難的。俄羅斯方塊游戲是一種古老而又有趣的游戲, 游戲軟件不計其數, 網上就有好多關于實現的復雜算法和設計, 其難度讓一般初學者望而卻步。本文利用數組作為方塊的數據結構,提出一種用JAVA語言實現的簡易方法, 對初學者可仿此開發類似游戲, 并了解游戲軟件的設計與開發過程。1緒論 電子游戲及其

24、分類電子游戲,也就是運行在家用電腦、家用電子游戲機或是掌中寶游戲機及街機上的電子游戲程序。電子游戲是一種結合劇情故事、美術、音樂、動畫、程序等技術于一身的互動型娛樂軟件,涉及到多個行業。 從電子游戲的分類來看,有著多種分類方式。傳統的游戲分類是按照游戲類型,將其分為即時戰略游戲、第一人稱射擊游戲、角色扮演游戲、策略型游戲等類別。根據游戲運行平臺的不同,可將電子游戲分為游戲機游戲、單機版PC 游戲、互動電視游戲、在線游戲和 游戲。此外,韓國政府將電子游戲業分為家用游戲機游戲、單機版PC 游戲、網絡游戲和街機游戲四大類。考慮到中韓游戲業比較接近,論文采用韓國的分類標準。“網絡游戲”也就是人們一般所

25、指的“在線游戲”,是指通過互聯網進行的電腦游戲,通過人與人之間的互動達到交流、娛樂和休閑的目的。在互聯網(局域網)技術出現之前,電子游戲都可以歸于單機版游戲,即“人機對戰”游戲,或最多是雙人對戰游戲。而隨著互聯網技術的出現,通過連接游戲服務器,上百、上千、乃至上萬的游戲玩家同時連線娛樂成為了現實,這就大大增加了游戲的互動性、真實性,豐富了電子游戲的內涵。從網絡游戲的分類來看,目前業界還沒有一個比較統一規范的分類。隨著計算機設備和網絡技術的發展,電子游戲在全球得到了迅猛的發展,取得了巨大的成功,已成為當今世界上不可缺少的精神糧食。1.2 電子游戲發展現狀 電子游戲在國外的發展現狀電子游戲是最初產

26、生于美國,1971年,一個還在MIT就讀的學生設計了世界上第一個業務用游戲機,這個街機游戲的名字叫電腦空間。可以說時至今日,電子游戲仍然是外國的天下。美國至今仍是世界第一大游戲市場,它遵循的是以發行商為主的產業開發鏈模式,根據美國市場調查公司NPD Group調查統計,美國2004年游戲總銷售金額(包括家用、掌上型主機及軟件)為99億美元,占了全球游戲市場的45%。其中游戲軟件銷售的具體數字是:視頻游戲軟件的銷售額達52億美元(1.6億套),PC游戲軟件銷售額達11億美元(4500萬套),掌機游戲銷售額達10億美元(4230萬套)。2004年一共大約有2.48億套游戲售出。據估計,美國每個家庭

27、平均購買過2部游戲3。日本近20年來瘋狂賺電子游戲的錢。從上世紀60年代初的街機,到六七十年代之間的家用游戲機,再到八九十年代的掌上游戲機,日本經過30多年的耕耘,終于把電子游戲這棵“搖錢樹”,培育成第一時尚娛樂產業,壟斷全球業界長達10余年。對于日本來說,電玩業已是國家經濟的重要支柱之一,在GDP中占有1/5的舉足輕重地位。日本游戲業在最輝煌的1998年,曾經占領全球電子游戲市場硬件90%以上,軟件50以上。韓國號稱世界上網絡游戲產業最發達國家之一。迄今為止,國內網絡游戲市場有超過60%的產品來自韓國游戲軟件開發商,韓國網絡游戲使國內很多游戲運營公司在游戲營銷市場或股票資本市場上獲得了巨大的

28、成功。 韓國游戲市場的發展不是偶然,韓國政府不僅給游戲產業以正確的定位和引導,更是將其和本國經濟發展緊密地聯系到一起,做了很多市場培育方面的工作。韓國政府認識到,靠重型工業來支撐全國經濟的做法是片面的,于是將、娛樂產業視為新的經濟增長點,開始大力扶持。從那時起,科技含量極高而能源消耗極低的游戲制作及相關產業擔負起了“富國興邦”的重擔。由文化觀光部出面組建韓國游戲支援中心,向韓國游戲產業提供從資金到技術上的多方面支援;成立游戲投資聯盟,政府每年向游戲產業投入的資金多達億韓元,并為游戲企業提供長期的低息貸款;設立信息化基金和文化產業基金,為游戲產業服務;對指定的風險企業實行各種稅制優惠政策,減少甚

29、至免除游戲企業的稅務負擔;建設游戲產業基地以扶持中小游戲企業的發展;對從事游戲產業的高科技人才免除兩年的兵役。 在韓國,從制作到運營,一個網絡游戲公司起步門檻較低,主要得益于政府實行的援助計劃。此外,在有利的政策形勢下,韓國出現了眾多的游戲院校,一些原本不涉足此領域的大學也開設了游戲相關專業課程,以大力培養游戲專業人才,從而為游戲生產提供了基礎保障。 電子游戲在國內的發展現狀與電子游戲發達的國家相比,我國在電子游戲方面還存在比較大的差距。目前,我國游戲市場正處于發展階段,但市場上的游戲軟件主要來自日本、美國、韓國等地,但由本土游戲制作人開發創作的游戲正在高速增加,國產原創的游戲即將成為游戲的主

30、流。中國的游戲產業經過80年代初期臺灣廠商的探索至90年代,開始了自己的研發、發行的歷程,直至網絡游戲的風行,讓中國的網絡游戲開始有了飛速的發展。 1983年,智冠科技在中國臺灣成立,為全球第一家簽訂授權重制中文版產品代理銷售合約的公司,2000年智冠在臺灣股票上市, 2002年其控股的中華網龍在臺灣上市。1996年底,UBI SOFT上海分公司暨上海育碧電腦軟件成立。同年,全球游戲軟件領軍企業EA在中國上海成立辦事處。1997年,由尚洋公司制作的血獅正式上市。 1997年,北京新天地互動多媒體技術成立,該公司引進了古墓麗影III(TombRaider III)、盟軍敢死隊等著名歐美游戲,并在

31、1999年在中國率先掀起“游戲軟件價格革命”,全面推行50元的價格體系,從此正版游戲價格開始貼近大眾消費者。 1999年,業內估算中國電腦游戲市場(正版)約1.5億元人民幣。 2000年,大陸華彩軟件代理發行第一款中文MMORPG萬王之王正式推出,該游戲于1999年在臺灣發行,由臺灣雷爵資訊(Lager)開發。也在2000年,繼萬王之王、石器時代、網絡三國在臺灣上市之后,游戲桔子推出了天堂,游戲桔子成立于1995年,1999年以便利店在臺灣奠定了地位。天堂這款由韓國著名游戲公司Ncsoft研發的網絡游戲不但在本國大獲成功,也在臺灣再次奪冠。 2001年初,北京華義在中國大陸地區正式推出了石器時

32、代,華義國際股份于1993年在臺北成立,2001年在臺灣股票上市。石器時代成為大陸當時最流行的網絡游戲。2001年,天人互動軟件技術在北京成立。當年與SEGA結成PC游戲業務的戰略合作關系,發行了櫻花大戰文明無冬之夜等經典游戲,2002年,引進在歐美網絡游戲魔劍(Shadow Bane),這是首款在中國測試的歐美網絡游戲。 2001年5月,“聯眾世界”經過3年多的迅速成長,以同時在線17萬人、注冊用戶約1800萬的規模,成為當時世界用戶數量第一的在線游戲網站。2005年1月21日,中央電視臺報道:我國網絡游戲產業當年增加了50%,今后幾年都將以50%以上的速度增長;第一屆中國網絡游戲年會報道:

33、中國國內網絡游戲2004年規模達24.7億元,2009年規模將達到109.6億元。 2可行性研究2.1 設計目的通過本游戲的設計,綜合自己在校期間所學的理論知識,設計開發俄羅斯方塊游戲,使自己熟悉應用系統的開發過程,培養獨立思考能力,檢驗學習效果和動手能力,初步掌握軟件工程的系統理論,初步掌握MVC這種設計模式,進一步鞏固和加強自身對j2se基礎知識的理解,提高自己的編程水平,從而達到理論與實踐相結合的目的。2.2 軟件問題定義基本要求:本游戲開發的總體任務是實現游戲的可操作性,以及界面的美觀性。整個開發過程遵循軟件工程規范,采用JAVA GUI編程來實現界面以及事件的控制,用戶根據鍵盤的四個

34、方向鍵控制翻轉、向左、向右和向下操作,通過菜單欄中的相應菜單選項實現游戲的開始、結束、變換方塊、積分以及等級的功能。目標:通過本游戲的開發,主要實現游戲的可操作性以及美觀性,同時使自己對JAVA語言的了解更進一層,為將來的實際工作打下堅實的基礎。條件、假定和限制:由于知識以及能力的限制,本游戲所實現的功能不夠強大,可對本游戲進行改善,從而增強游戲的功能。可行性研究的方法:通過研究分析俄羅斯方塊所具備的能力及實現的方法、確定主體結構。利用現階段我所能達到的能力,以最簡潔、最容易的辦法,邊開發邊測試邊修改,實現一個初級游戲軟件。評價尺度:由于本軟件是一個初級產品,對其要求不是太苛刻,所以能夠達到俄

35、羅斯游戲的一般功能即可。2.3 可行性分析 技術可行性:開發本游戲的編程語言有多種,考慮到自身對語言的掌握程度,選擇JAVA語言進行游戲的開發,采用JAVA GUI編程來實現界面以及事件的控制。 經濟可行性:本游戲的開發旨在完成畢業設計,不注重直接的經濟效益和其后的發展方向,只在注重自身水平和能力的提高,對自身的經濟要求也不高,只要有一臺能運行相應JAVA程序的電腦便可,所以不用考慮到經濟問題。社會可行性:本游戲的開發主要為了完成畢業設計,開發的主體是個人,不存在法律上的侵權行為,也不會為社會造成影響,這方面是完全可行的。3需求分析3.1 引言對軟件需求分析就是通過調查研究,建立系統的數據模型

36、、功能模型、行為模型,用戶和開發人員在“系統必須做什么”這個問題上實現相互理解,達到共識,從而形成雙方認可的軟件產品的需求規格說明書。這樣有益于提高軟件開發過程中的能見度,便于對軟件開發過程中的控制與管理,便于采用工程方法開發軟件,提高軟件的質量,便于開發人員、維護人員、管理人員之間的交流、協作,并作為工作成果的原始依據,并且在向潛在用戶傳遞軟件功能、性能需求,使其能夠判斷該軟件是否與自己的需求相關。3.2 游戲需求 28種狀態的方塊隨機產生,自由下落,落下時可由玩家用上、下、左、右控制鍵控制翻轉和移動,以便以玩家所需要的形態和位置落下。如果落下時,方塊的方格能填滿某一行,則這一行可消去。消去

37、一行后,游戲可給玩家加分,若由存在空格的方塊填滿整個窗口,則游戲失敗。游戲功能需求如下: 游戲界面需求:設計良好的游戲界面可以讓玩家充分感受到游戲帶來的娛樂性,游戲的背景色是黑色,方塊用藍色顏色,在一定的區域內運動和變形,落下后的障礙物用黃色顯示,這樣看起來會有一定的美感。 游戲形狀需求:用數組作為存儲方塊28種狀態的數據結構,即長條形、Z字形、反Z形、田字形、7字形、反7形、T字型,各個方塊要能實現它的變形,可設為順時針或逆時針變形,一般為逆時針。 鍵盤處理事件需求:方塊下落時,可通過鍵盤方向鍵(上、下、左、右鍵)對該方塊進行向上(變形),向下(加速)、向左、向右移動。 鼠標處理事件需求:通

38、過點擊菜單欄中相應的菜單項,可以實現游戲的開始、結束,方塊形狀的變換,分數、等級的顯示,以及游戲幫助等功能。 顯示需求:當不同的方塊填滿一行時可以消行,剩余方塊向下移動并統計分數。當達到一定分數的時候,會增加相應的等級。3.3 軟硬件需求操作系統:Microsoft Windows XP Professional Service Pack 2內存:512M硬盤:80GCPU:賽揚2.8交互工具:鍵盤/鼠標顯示器:VGA顯示器JDK版本:jdk.02Eclipse版本:3.4 接口控制本游戲通過鍵盤進行操作,在Windows的操作系統下,利用鍵盤的上、下、左、右鍵對方塊進行移動變形,要使用鍵盤的

39、接口事件。3.5 方案論證學校現已開設的課程有C語言、C+,java,自己本身自學了Java,通過網上以及圖書館的資料,知道可以通過C,C+,VB,Delphi,Java實現俄羅斯方塊游戲的設計。下面簡單介紹下VB、C+、Java各自的優點: VB的優點全稱Visual Basic,它是以Basic語言作為其基本語言的一種可視化編程工具。在中國乃至全世界都能看到它的身影,它曾是在中國最為流行的編程工具,到現在還占 據著非常重要的地位,對于它的好壞大家都有一定的了解,VB作為一種較早出現的開發程序以其容易學習,開發效率較高,具有完善的幫助系統等優點曾影響了好 幾代編程人員,但是由于VB不具備跨平

40、臺這個特性,從而也決定了VB在未來的軟件開發中將會逐漸地退出其歷史舞臺;它對組件技術的支持是基于COM和 ActiveX,對于組件技術不斷完善發展的今天,它也顯出了它的落后性;同時VB在進行系統底層開發的時候也是相對復雜的,調用API函數需聲明,調用 不方便,不能進行DDK編程,不可能深入Ring0編程,不能嵌套匯編;而且面向對象的特性差;網絡功能和數據庫功能也沒有非常突出的表現,綜上所 述,VB作為一種可視化的開發工具由于其本身的局限性,導致了它在未來軟件開發中逐步被其他工具所代替。3. C+的優點C+是對C語言的擴充,擴充的絕大部分來自著名語言中的最佳特性:從SIMULA 67中吸取了類,

41、從ALGOL 68中吸取了運算符一名多用、引用和在分程序中任何地方說明變量,綜合了Ada的類屬和Clu的模塊特點,從BCPL中吸取異常處理,從BCPL中吸取了用/表示注釋。C+保持了C的緊湊、靈活、高效和易移植強的優點,它對數據抽象的支持主要在于類概念和機制,對面向對象風范的支持主要通過虛擬函數。C+既有數據抽象和面向對象能力,語言運行性能高多,加上C語言的普及,而從C至C+的過渡較為平滑,以及C+與C的兼容程度可使數據巨大的C程序能方便地在C+環境中重用。盡管C+當初的設計本意是幫助管理大型程序,但其用途并不僅限于此。C+的面向對象的特性可有效地用于實際的程序設計工作。C+常常用于設計編輯器

42、、數據庫、個人文件系統以及通訊程序等。而且,由于C+共享C的效率,所以用C+可以構成很多高性能的系統軟件。 Java的優點(1) 安全性 Java是一種安全的網絡編程語言,不支持指針類型,一切對內存的訪問都必須通過對象的實例來實現。這樣能夠防止他人使用欺騙手段訪問對象的私有成員,也能夠避免在指針操作中易產生的錯誤。此外,Java的安全性體現在多個層次上:在編譯層,有語法檢查;在解釋層,有字節碼校驗器,可進行代碼段格式測試和規則檢查、訪問權限和類型轉換合法性檢查、操作數堆棧的上溢和下溢檢測、代碼參數類型合法性檢查等;在平臺層上,通過配置策略,可設定訪問資源域,無須區分本地或遠程。(2) 可移植性

43、 Java具備有很好的移植性,這主要得益于它與平臺無關的特性。同時,Java的類庫中也實現了與平臺無關的接口,這使得這些類庫也能移植。同時,Java編譯器主要是由Java本身來實現的,Java的運行系統(解釋器)由標準C語言實現,因而整個Java系統都具有可移植性。 (3) 多線程機制 Java具有多線程機制,這使得應用程序能夠并行地執行。它的同步機制也保證了對共享數據的共享操作,而且線程具有優先級的機制,有助于分別使用不同線程完成特定行為,也提高了交互的實時響應能力。Java的多線程技術使網上實時交互實現很容易,從而為解決網上大數量的客戶訪問提供了技術基礎。(4) 跨平臺通常,在Window

44、s下編寫的程序是不能直接拿到UNIX上運行的,因為程序的執行最終必須轉換成為計算機硬件的機器指令來執行,專門為某種計算機硬件和操作系統編寫的程序是不能夠直接放到其他類型的計算機硬件上執行的,至少要做移植工作。要想讓程序能夠在不同的計算機上運行,就要求程序設計語言能夠跨越各種軟件和硬件平臺,而Java恰恰滿足了這一需求。Java編譯器能夠產生一種與計算機體系結構無關的字節指令,只要安裝了Java虛擬機,Java就可以在相應的處理機上執行。3.5.4 方案的選擇面向對象的程序設計吸取了結構化程序設計的先進思想,并把它們同幾個支持用戶用新方法進行程序設計的有力概念結合在一起。所有面向對象的程序設計語

45、言一般都包含三個概念:封裝、多態性和繼承性。這種方法要求語言必須具備抽象、封裝、繼承和多態性這幾個關鍵要素。面向對象的程序設計,是通過數據和代碼建立分塊的內存區域,以便提供對程序進行模塊化的一種程序設計方法,這些模塊可以被用作樣板,在需要時再建立其副本。C+和Java在面向對象這方面比VB要強,所以我排除了用VB做的可能性。但是C+為了與C語言兼容,其是包含了些面向過程的成分;Java除了C+中非面向過程的部分,其程序編寫過程就是設計、實現類,定義其屬性、行為的過程。還有Java特有的“沙箱”機制是其安全性的保障,同時它去除了C+中易造成的錯誤指針,增加了自動內存管理等措施,保證了Java程序

46、運行的可靠性。 所以經過再三比較了三種語言后,決定采用Java語言編寫俄羅斯方塊。4 概要設計41 游戲設計方案的確定 本游戲的設計采用MVC模式(Model -View -Controller),即把本游戲的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣本游戲的設計被分成三個層模型層、視圖層、控制層。MVC模型圖如下所示:42 系統流程結構設計觸發按鍵事件圖形工廠類圖形類障礙物類中央控制器處理按鍵事件處理邏輯顯示面板顯示生產43 各個功能模塊圖設計 模型層(Model)功能模塊圖設計圖形工廠圖形障礙物生產圖形下落產生障礙物4.3.2 視圖層(View)

47、功能模塊圖設計游戲面板GamePanel方塊的顯示障礙物的顯示4.3.3 控制層(Controller)功能模塊圖設計 中央控制器Controller類圖形工廠生產圖形顯示面板顯示圖形和障礙物處理按鍵和鼠標事件5 詳細設計5.1模型層(Model)設計 圖形的產生 通過圖形工廠類ShapeFactory的getShape(ShapeListener listener)方法隨機產生方塊的某種狀態,這里運用了工廠設計模式,這種設計模式是為了實現高內聚低耦合而存在的,這種設計模式的通俗解釋就是:你想要一個產品,你需要讓工廠給你生產一個,你要告訴工廠你要生產什么產品,就把你需要生產的這個產品當做參數傳

48、給工廠類的生產產品的方法,然后根據你傳進來的產品,而決定工廠人生產什么產品,產生出來產品后,最后要返回您要的這個東西。7654321隨機產生一個數隨機數一字形Z字形反Z形7字形反7形倒T形田字型 圖形的數據結構 定義一個4x4方陣,共16個小格。用“0”和“1”來表示每個方格是繪制還是空白,由此可以組合出多種圖形,如圖所示:其中圖一表示為0,0,0,0, 1,1,1,1 , 0,0,0,0, 0,0,0,0其中圖二表示為0,0,0,0, 0,1,1,0 , 0,1,1,0, 0,0,0,0其中圖三表示為0,0,0,0, 0,1,0,0 , 0,1,1,1, 0,0,0,0其中圖四表示為0,0,

49、0,0, 0,1,0,1 , 0,1,1,0, 0,0,1,0方塊的旋轉是通過繪制4個方向的方塊,在不同旋轉角度顯示不同方向的方塊來完成的。所以程序要控制方塊的旋轉方向,只要控制顯示哪副圖就可以了。本游戲是用一個三維數組int shapes = new int;作為存儲方塊的數據結構來保存方塊的28種狀態的。 圖形的移動圖形類Shape保存了自己的位置信息,用left表示圖形到左邊界的距離,top表示圖形到上邊界的距離,圖形移動就是改變left和top的值。向上移動:top減1,向下移動:top加1,向左移動:left減1,向右移動:left加1。圖形的移動分為圖形的自動下落以及通過按鍵事件實

50、現圖形的左移、右移以及加速下移。通過多線程ShapeDriver類來實現圖形的自動下移,由于游戲中方塊的動態性,每個方塊有一定的生命周期,所以選用線程來實現方塊。一個方塊用一個線程類對象實現,該類繼承與Thread類,當一個方塊出現時也就表示一個線程對象產生并開始運行。通過對按鍵事件的響應,實現圖形的左移、右移以及加速下移。 圖形的變形通過int type = new Random().nextInt(shapes.length); shape.setBody(shapestype);shape.setStatus(0);實現初始圖形的初始化,通過status = (status + 1) %

51、 body.length;實現圖形的變形功能。 存儲和表示障礙物用一個和顯示區域的面板大小相對應的二維數組保存障礙物的位置信息,如果對應的位置是障礙物,則這個數組中相應的元素就為1,否則就為0。如何把圖形變成障礙物呢?只要把屬于圖形的格子對應的位置都變成障礙物即可。代碼如下:public boolean isMember(int x, int y, boolean rotate) int tempStatus = status;if(rotate) tempStatus = (status + 1) % body.length;return bodytempStatusy*4 + x = 1;

52、public void accept(Shape shape) System.out.println(Grounds accept);for(int x=0; x4; x+) for(int y=0; y4; y+) if(shape.isMember(x, y, false) if(shape.getLeft() + x)Global.WIDTH & (shape.getTop() + y)=0; y-) boolean full = true;for(int x=0; x0; y-) for(int x=0; xGlobal.WIDTH; x+) zawxy = zawxy-1;for(i

53、nt x=0; xGlobal.WIDTH; x+) zawx0 = 0;deleteFullLine();利用循環語句從屏幕最底行依次向上對有方塊的每一行進行判斷,判斷某一行中是否有空白,如果沒有空白的話,則將當前的行號傳遞給deleteLine(int lineNum)方法,由該方法實現消除當前行,并將上面的方塊依次下移一行,最后再重新調用deleteFullLine()方法進行查找,直到所有行都檢查一遍結束。5.2視圖層(View)設計 方塊的顯示通過視圖層的GamePanel類的paint(Graphics g)方法調用Shape類的drawMe(Graphics g)方法,從而實現方

54、塊的繪制,代碼如下:public void drawMe(Graphics g) g.setColor(Color.BLUE);for(int x=0; x4; x+) for(int y=0; y4; y+)if(getFlagByPoint(x, y) g.setColor(new Shape().shapeColor);g.fill3DRect(left + x)*Global.CELL_SIZE, (top + y)*Global.CELL_SIZE, Global.CELL_SIZE, Global.CELL_SIZE, true); 障礙物的顯示 通過視圖層的GamePanel類的

55、paint(Graphics g)方法調用Ground的drawMe(Graphics g) 方法,從而實現障礙物的繪制,代碼如下:public void drawMe(Graphics g) for(int x=0; xGlobal.WIDTH; x+) for(int y=0; yGlobal.HEIGHT; y+) if(zawxy = 1) g.fill3DRect(x*Global.CELL_SIZE, y*Global.CELL_SIZE, Global.CELL_SIZE, Global.CELL_SIZE, true);5.3 控制層(Controller)設計控制層主要是實現

56、圖形工廠生產圖形,圖形按鍵事件的處理,方塊、障礙物顯示的控制,圖形自動下落和障礙物生成的控制。通過控制層這個大管家最終實現此俄羅斯方塊的按鍵事件的處理以及各種邏輯的處理。5.4 游戲演示 游戲界面顯示 開始和結束控制菜單 分數和等級查看菜單 變換方塊菜單 幫助菜單5系統測試5.1 游戲界面菜單選項的功能測試(1) “控制”菜單測試點擊“游戲”“開始”輸出:游戲開始結果:正常點擊“游戲”“結束”輸出:彈出游戲結束提示框結果:正常(2) “查看”菜單測試點擊“查看”“分數”輸出:在游戲面板中間跳出分數顯示框結果:正常點擊“查看”“級別”輸出:在游戲面板中間跳出級別顯示框結果:正常(3) “變換”菜單測試點擊“變換”“改變方塊”輸出:在游戲面板中顯示隨機產生的某種方塊結果:正常5.2 按鍵事件的功能測試 (1) 方塊移動測試 游戲過程中,點擊“左、右、下”方向鍵輸出:方塊正常移動,不會移出邊界結果:正常 (2) 方塊反轉測試 游戲過程中,點擊向上方向鍵輸出:方塊無邊界和障礙物阻擋的情況下可反轉結果:正常(1) 當方塊下落到最底面或與障礙物接觸時輸出:方塊成功堆砌在底部結果:正常 (2) 當出現滿行現象時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論