畢業(yè)設計--多人分組對戰(zhàn)俄羅斯方塊的研究與實現(含外文翻譯)_第1頁
已閱讀1頁,還剩57頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科生畢業(yè)設計</b></p><p>  學 院: 計算機科學與技術 </p><p>  專 業(yè): 計算機科學與技術 </p><p>  設計題目: 多人分組對戰(zhàn)俄羅斯方塊的研究與實現 </p&g

2、t;<p>  專 題: </p><p>  指導教師: 職 稱: 講師 </p><p>  2008 年 6 月 徐州</p><p><b>  畢業(yè)設計任務書</b></p>

3、<p>  任務下達日期: 2008 年 1 月 15 日</p><p>  畢業(yè)設計日期: 2008 年 2 月 25 日至 2008 年 6 月 20 日</p><p>  畢業(yè)設計題目: 多人分組對戰(zhàn)俄羅斯方塊的研究與實現</p><p><b>  畢業(yè)設計專題題目:</b></p><p

4、>  畢業(yè)設計主要內容和要求:</p><p>  軟件系統應提供一個方便實用的用戶界面。</p><p><b>  實現多人網絡對戰(zhàn)。</b></p><p>  根據消層情況獲得道具,并能夠使用道具進行攻擊。</p><p><b>  可以進行分組對戰(zhàn)</b></p>&

5、lt;p>  認真工作,依照任務進度表按時完成任務</p><p>  6. 論文要闡述系統開發(fā)所用到的理論,介紹整個軟件開發(fā)的過程。</p><p>  7. 進行系統需求分析,系統分析,系統設計。</p><p>  8. 介紹開發(fā)過程中用到的關鍵技術以及遇到的困難和解決的方法。</p><p>  9. 論文要求內容規(guī)范。

6、</p><p>  畢業(yè)設計要求采用的技術有:一種程序開發(fā)語言及相關開發(fā)工具,Scoket編程技術,軟件工程知識。</p><p>  院長簽字: 指導教師簽字:</p><p><b>  摘 要</b></p><p>  俄羅斯方塊游戲是一種比較經典的游戲,研究它具有一定的價

7、值和意義。但目前的俄羅斯方塊多以單機版為主,游戲交互性弱、可玩性差,存在很大的弊端。利用網絡通信技術、圖形界面、多媒體等技術可以支持多人分組對戰(zhàn),提高游戲的可玩性,彌補傳統俄羅斯方塊的不足。</p><p>  本文在分析研究傳統俄羅斯方塊的基礎上,借助C/S軟件模型,將CSocket套接字技術移植到俄羅斯方塊中實現了多人分組對戰(zhàn)模式。將傳統的人機對戰(zhàn)變成人與人對戰(zhàn),增強了游戲的交互性。利用GDI圖形界面繪制技術

8、和多媒體技術使游戲畫面變得更加生動,并且動態(tài)顯示各游戲玩家的游戲進展情況,改善了玩家的視覺、聽覺感受。游戲中的各個玩家通過自定義消息來進行交互,他們可以組隊進行游戲,可分為自由人、藍隊、橙隊和紅隊。各玩家之間除了可以相互聊天外,還可以相互攻擊和援助。</p><p>  實驗表明,經過擴展后的俄羅斯方塊游戲畫面更加活潑,游戲方式更加靈活,游戲的交互性更強,游戲可玩性大大提高。</p><p&g

9、t;  關鍵詞:多人分組對戰(zhàn)俄羅斯方塊;CSocket技術;GDI圖形繪制;多媒體技術 </p><p><b>  ABSTRACT</b></p><p>  Tetris game is a classic game .It is valuable to research. But current games are mainly single plane ve

10、rsion, lack of interaction, and can not be played easily. By using network communication technology, graphical interface, multimedia and other technology, the game introduced in this paper can support group antagonizing,

11、 be more easily played and make up the shortcomings of traditional versions.</p><p>  Based on the analysis of traditional versions, CSocket is transplanted to the game to achieve groups antagonizing mode, w

12、hich changes the traditional man-machine model into man-man model and enhance the interaction in the game. GDI and multimedia technologies make the game more lively, display the progress of every player dynamically and i

13、mprove the visual and auditory experience. The various players interact by customizing the information in the game. They can team up for the game. There are fr</p><p>  The experiments show that the expansio

14、n can make the game more lively, make it more flexible in playing the game, make the game more interactive and enable the game to be played more easily.</p><p>  Keywords: Tetris of more groups antagonizing;

15、 CSocket; GDI graphics rendering; Multimedia technology</p><p><b>  目 錄</b></p><p><b>  1 緒論1</b></p><p>  1.1 俄羅斯方塊游戲簡介1</p><p>  1.2 多人分組

16、對戰(zhàn)俄羅斯方塊與傳統俄羅斯方塊的異同2</p><p>  1.3 本論文的主要內容與組織結構3</p><p>  2 多人分組對戰(zhàn)俄羅斯方塊的分析與設計4</p><p>  2.1 多人分組對戰(zhàn)俄羅斯方塊的設計原理4</p><p>  2.2 需求分析8</p><p>  2.2.1 數據流圖9&

17、lt;/p><p>  2.2.2 數據字典11</p><p>  2.3 概要設計12</p><p>  2.3.1 功能定義12</p><p>  2.3.2 游戲框架設計14</p><p>  2.3.3 技術、風險預測15</p><p><b>  3 詳細設計

18、17</b></p><p>  3.1 系統組成及功能描述17</p><p>  3.2 系統登錄模塊設計17</p><p>  3.3 游戲算法實現模塊19</p><p>  3.4 網絡通信模塊23</p><p>  3.5 游戲界面繪制模塊25</p><p&

19、gt;  3.5.1 游戲初始界面25</p><p>  3.5.2 游戲準備界面27</p><p>  3.5.3 游戲開始界面28</p><p>  3.5.4 游戲結束界面32</p><p>  4 多人分組對戰(zhàn)俄羅斯方塊的實現36</p><p>  4.1 多人分組對戰(zhàn)俄羅斯方塊的實現原理

20、36</p><p>  4.2 多人分組對戰(zhàn)俄羅斯方塊核心功能實現37</p><p>  5 系統測試與維護40</p><p>  5.1 軟件測試概述40</p><p>  5.2 多人分組對戰(zhàn)俄羅斯方塊測試40</p><p>  5.2.1 登錄階段測試40</p><p&g

21、t;  5.2.2 游戲開始前的準備階段測試41</p><p>  5.2.3 游戲進行階段測試42</p><p>  5.2.4 游戲結束階段測試42</p><p><b>  結論43</b></p><p><b>  參考文獻44</b></p><p&g

22、t;<b>  英文原文45</b></p><p><b>  中文譯文50</b></p><p><b>  致 謝53</b></p><p><b>  1 緒論</b></p><p>  1.1 俄羅斯方塊游戲簡介 </p>

23、;<p>  “俄羅斯方塊”由莫斯科科學學院程序員Alexei Pajitnov所設計。1985年6月工作于莫斯科科學計算機中心的阿列克謝·帕基特諾夫在玩過一個拼圖游戲之后受到啟發(fā),從而制作了一個以Electronica 60(一種計算機)為平臺的俄羅斯方塊的游戲。后來經瓦丁·格拉西莫夫(Vadim Gerasimov)移植到PC上,并且在莫斯科的電腦界傳播。實際上,在游戲發(fā)明后的數年間,“俄羅斯方塊”

24、成了無數場專利官司和法律糾紛的目標,而許多公司也不遺余力地上陣廝殺,想要將游戲的創(chuàng)意據為己有。一個最初的版本是Spectrum Holobyte為IBM兼容機開發(fā)的游戲。1988年,“俄羅斯方塊”在街機上也變得非常流行,這都要歸功于Atari,因為他們發(fā)布了一個能讓兩名玩家同時游戲的版本。 </p><p>  還是在1988年,Tengen為任天堂娛樂系統發(fā)布了“俄羅斯方塊”的一個優(yōu)秀版本,但它很快便從貨架上撤

25、掉了,因為任天堂指控該公司侵犯版權。后來,任天堂把那個版本的“俄羅斯方塊”換成了自己的版本,可是新版本卻缺乏Tengen版的雙人對打模式和出色的音樂。到了1989年,任天堂著手將一個移動版本的“俄羅斯方塊”與當時嶄新的GBA系統捆綁出售。GBA后來成為有史以來銷售成績最佳的游戲系統,對此,“俄羅斯方塊”作出了不小的貢獻。 這次產權爭奪,幾家歡喜,幾家哀愁,幾家公司倒閉,幾家公司賺錢,其中的是是非非,一言難盡。</p>

26、<p>  目前“俄羅斯方塊”游戲已經有了很大的發(fā)展。國內從以前的掌上游戲移</p><p>  植到了電腦、手機等平臺。游戲的畫面、功能都有了很大的提高。例如有名的QQ游戲中的“火拼俄羅斯方塊”、邊鋒游戲大廳中的“俄羅斯方塊”等。國外“俄羅斯方塊游戲”也有很大發(fā)展。電腦上、手機上、PSP上、各種網站上都有它的身影。“俄羅斯方塊”游戲從誕生到現在已經幾十年了,它一直伴隨著我們,一直在不斷的成長。沒有人

27、認為它會消失,將來它也會不斷的發(fā)展下去。隨著高科技電子產品的不斷涌現,“俄羅斯方塊”將以他們?yōu)檩d體繼續(xù)隨時間洪流傳播到世界的每一個角落?!岸砹_斯方塊”不僅會擴大傳播介質,同時自身的功能的多樣化、界面的美化、操作的簡化、特效、魔法等技術都會在將來得到很大的發(fā)展。例如可以將游戲地圖變成各種各樣的形狀而不再是單一的矩形地圖;還可以改變游戲時運動方塊的形狀;也可以增加鍵盤鼠標事件并以特殊的功能去響應這樣的事件(例如連續(xù)點擊鼠標時可以使運動方塊發(fā)

28、射子彈等)。</p><p>  “俄羅斯方塊游戲”早在十幾年前它就風靡全球,成為大家津津樂道的話題。從掌上游戲機到PC機,從單調的黑白畫面到絢麗多彩的QQ游戲畫面?!岸砹_斯方塊”始終跟隨著人們一起發(fā)展、進步。許多游戲轟轟烈烈的誕生沒多久就悄然而去,然而“俄羅斯方塊”卻長久不衰,仿佛它已經成為了我們的一部分,將永遠伴隨著我們去開辟未來,帶給我們更多的歡笑?!岸砹_斯方塊”是一款集休閑、娛樂、益智于一體的游戲,適合各

29、種人群。它的實現方法簡單,但靈活多變,通過研究“俄羅斯方塊”,在原來的技術上演變出更多、更新的版本也是一件很有意義的事情。同時,由于“俄羅斯方塊”的廣泛傳播也帶來了很大的商業(yè)價值。怎樣開發(fā)出更新、更吸引人的“俄羅斯方塊”游戲也成為許多游戲公司的首要任務。</p><p>  1.2 多人分組對戰(zhàn)俄羅斯方塊與傳統俄羅斯方塊的異同</p><p>  多人分組對戰(zhàn)俄羅斯方塊是傳統單機版俄羅斯方

30、塊的擴展,因此,它們具有許多相似之處。同時,多人分組對戰(zhàn)俄羅斯方塊游戲的設計原理又有了很大的改變,游戲方式也不再相同,它們也有許多不同的地方。</p><p><b>  (1) 相同點:</b></p><p>  1) 游戲算法相同:多人分組對戰(zhàn)俄羅斯方塊與傳統俄羅斯方塊主要的相同點在游戲算法上。經過長時間的發(fā)展,俄羅斯方塊游戲的算法已經發(fā)展成熟,因此本文并沒有作

31、多大的改變。游戲算法主要由運動方塊的隨機產生、方塊下移、左移、右移、直接下落、變換、方塊觸界檢測、消層等多個模塊組成。它們的實現原理基本相同。</p><p>  2) 游戲邏輯相同:游戲從運動方塊的產生、消層到游戲結束,整過流程是相同的。</p><p><b>  (2) 異同點:</b></p><p>  1) 設計模式不同:傳統俄羅斯

32、方塊游戲多是單機版,只能供一個人游玩;而多人分組對戰(zhàn)俄羅斯方塊是基于C/S的設計模式,支持網絡互聯,可以多人游玩。</p><p>  2) 對戰(zhàn)模式不同:傳統俄羅斯方塊游戲是人機對戰(zhàn),缺乏交互性;而多人分組對戰(zhàn)俄羅斯方塊是多人分組對站。即最多六個玩家可以以自由人、澄隊、藍隊、紅隊四種身份進行游戲。</p><p>  3) 游戲交互程度不同:傳統俄羅斯方塊主要是人機交互,形式比較單調,且

33、交互較少;而多人分組對戰(zhàn)俄羅斯方塊游戲主要是人與人的交互,且交互形式多樣,比較靈活。例如玩家之間可以相互聊天等。</p><p>  4) 游戲的趣味性不同:傳統俄羅斯方塊游戲游戲方式較單一,趣味性較低;而多人分組對戰(zhàn)俄羅斯方塊中每個玩家都可以看見其他玩家的游戲進行情況,對手較多,且還有敵友之分,游戲中可以獲得道具,并使用道具對敵方進行攻擊,對盟友或自己進行援助,再加上游戲音效。使游戲玩家始終感覺到他不是一個人在

34、游戲,而是身處一個團隊中共同游戲,這樣使游戲趣味性大大增加。</p><p>  5) 游戲結束方式不同:傳統俄羅斯方塊游戲沒有游戲勝負之分,以方塊到達游戲區(qū)域頂端為游戲結束,以游戲消層數量來計算游戲得分;而多人分組對戰(zhàn)俄羅斯方塊以方塊到達游戲區(qū)域頂端作為本游戲玩家游戲結束的標志,但并不作為游戲勝負的依據。游戲以最終存活下來的一個分組作為游戲的勝利方,其他玩家作為游戲失敗方。且游戲得分不以消層數量為計算依據,而是

35、以游戲名次來計算。并且游戲結束后會將游戲結果寫入數據庫,并重新顯示玩家的游戲基礎信息。</p><p>  總之,多人分組對戰(zhàn)俄羅斯方塊游戲和傳統俄羅斯方塊游戲相比有了很大的進步,提高了游戲方式的多樣化,增加了游戲的趣味性,使游戲具有了更大的可玩性。</p><p>  1.3 本論文的主要內容與組織結構</p><p>  本文主要介紹了利用CSocket、GDI

36、、多媒體技術對傳統俄羅斯方塊進行擴展,形成多人分組對戰(zhàn)俄羅斯方塊的具體原理和方法。</p><p>  全文主要分為五部分。第一章為緒論,簡單介紹了俄羅斯方塊的起源及發(fā)展歷程,比較了傳統俄羅斯方塊與多人分組對戰(zhàn)俄羅斯方塊的異同,明確了研究俄羅斯方塊的意義和方向。指出了本文所要做的工作。第二章介紹了多人分組對戰(zhàn)俄羅斯方塊的設計原理,包括實現需要的技術介紹。在對設計原理進行分析的基礎上,初步設計了多人分組對戰(zhàn)俄羅斯方

37、塊游戲系統需求分析、功能定義、游戲框架等,并對系統開發(fā)中需要的技術和可能承擔的風險進行預測。第三章是全文最主要的部分,主要介紹了多人分組對戰(zhàn)俄羅斯方塊游戲的實現過程。本章分為五個小節(jié),第一小節(jié)是對整個系統功能的概述,其余四小節(jié)分別從四個模塊對游戲的實現進行了分析介紹。全章以模塊化分析的方式系統的闡明了該系統的組成及實現過程。第四章、第五章是在系統各功能設計已經完成的基礎上,對游戲系統的集成和測試。介紹了游戲的工作流程和游戲運行階段的維護

38、。最后,總結了本次畢業(yè)設計的主要內容和成果。</p><p>  全文從俄羅斯方塊的歷史介紹到多人分組對戰(zhàn)俄羅斯方塊的實現闡述,從游戲系統的功能設計到系統集成測試,由淺入深,循序漸進的闡明了整個系統的設計原理和實現過程。</p><p>  2 多人分組對戰(zhàn)俄羅斯方塊的分析與設計</p><p>  2.1 多人分組對戰(zhàn)俄羅斯方塊的設計原理</p>&

39、lt;p>  多人對戰(zhàn)俄羅斯方塊游戲的設計是單機版俄羅斯方塊游戲設計的擴展,在原來的基礎上加入網絡互聯,使原來的人機交互模式變成了人人交互模式。也就是說俄羅斯方塊游戲本身的算法沒有多大的變化,只是在其中融入了一些新的技術和新的游戲理念。如圖形界面、多媒體、多人分組等設計思想。</p><p>  多人分組對戰(zhàn)俄羅斯方塊游戲與單機版俄羅斯方塊游戲有很大的區(qū)別,它們的模型如圖2-1所示。</p>

40、<p>  圖2-1 單機版俄羅斯方塊游戲模型圖</p><p>  而多人分組對戰(zhàn)俄羅斯方塊游戲模型如圖2-2所示。</p><p>  圖2-2 多人分組對戰(zhàn)俄羅斯方塊游戲模型圖</p><p>  從圖2-1、2-2中可以看出兩種游戲模型有較大的差異,多人對戰(zhàn)俄羅斯方塊更加多樣化。單機版俄羅斯方塊游戲注重人機交互,而對人對戰(zhàn)俄羅斯方塊游戲注重人與人的

41、交互。</p><p>  多人分組對戰(zhàn)俄羅斯方塊游戲仍然設計為C/S模型【3】。服務器端主要功能是接受客戶端的連接,接收并處理客戶端發(fā)來的消息,將處理結果反饋給各客戶端??蛻舳耸怯螒虻闹飨到y,玩家首先通過登錄系統進入游戲界面,通過各種操作完成游戲開始前的準備工作。當所有玩家都準備就緒后進入游戲,此時玩家操作鍵盤來完成游戲。</p><p>  游戲游玩的原理如圖2-3所示。</p&

42、gt;<p>  圖2-3 多人分組對戰(zhàn)俄羅斯方塊游戲原理圖</p><p>  游玩游戲需要經歷以下步驟:</p><p>  (1) 在游戲服務器已經建立的情況下,運行客戶端進入游戲登錄直系統。輸入服務器地址、用戶帳號、用戶密碼,進入系統認證狀態(tài)。登錄模塊從數據庫中提取用戶信息(ID、昵稱、密碼、等級、積分、登錄標志等)進行驗證【2】。驗證通過則進入游戲主系統,否則返回初

43、始登錄界面。</p><p>  需要技術:ADO遠程連接數據庫、身份驗證【1】。</p><p>  實現原理:在SQL2000上裝上SP4的補丁,利用成熟的ADO數據庫連接技術,封裝ADO連接類,實現數據庫的連接;封裝CUser類實現數據庫中userinfo數據表的讀寫,根據玩家輸入信息從數據庫讀取相應內容完成身份認證。</p><p>  (2) 通過身份認證

44、后,進入游戲主系統,游戲根據玩家輸入的服務器地址連接到服務器。連接成功則初始化游戲界面,進入游戲準備狀態(tài),否則返回到游戲登錄初始界面或退出游戲。</p><p>  需要技術:CSocket套接字技術【9】。</p><p>  實現原理:套接字(socket)是一種網絡編程接口,它是對通信端點的一種抽象,提供了一個發(fā)送和接收數據的機制。套接字技術最先應用于unix系統,后來移植到wind

45、ows系統,有了Winsock API。經過對Winsock API的低層封裝產生了CAsyncSocket類,經過高層次的封裝產生了CSocket類。 CSocket進行通信的過程很簡單。服務器首先啟動,通過調用socket函數建立一個套接口,然后調用bind函數將該套接口和本地網絡地址聯系在一起,再調用listen函數使套接口做好偵聽的準備,并規(guī)定它的請求隊列的長度,之后就調用accept函數來接收連接??蛻舳嗽诮⑻捉涌谥缶涂烧{

46、用connect函數來發(fā)送和接收數據。最后,待數據傳送結束后,雙方調用close函數關閉套接口【7】。</p><p>  它的原理如圖2-4所示。</p><p>  圖2-4 Winsock通信原理圖</p><p>  CSocket通信技術類似,通過編寫ServerSocket類,并重載了OnAccept()函數實現服務器套接口的監(jiān)聽。編寫ClientSoc

47、ket類,并重載OnReceive()實現客戶端數據的接收【6】。</p><p>  (3) 服務器連接成功后,將顯示游戲的初始界面。初始界面將根據玩家在數據庫保存的游戲基礎信息來顯示。同時登錄成功時,客戶端將向服務器發(fā)送新玩家進入游戲的消息,而服務起得到這個消息后經過處理,再將處理結果發(fā)給其他的游戲玩家,這樣其他的游戲玩家就能看見有游戲玩家進入游戲。此后,玩家可以操作游戲界面元素完成游戲開始前的準備。例如玩家

48、可以選擇分組、發(fā)送聊天、點擊開始按鈕準備就緒等。同樣,這些事件都將以消息的方式發(fā)送給服務器,服務器經過處理后,將結果發(fā)往目標玩家,目標玩家就會了解到自己的游戲情況。</p><p>  需要技術:GDI繪圖技術【5】、多緩沖繪圖技術、自定義消息。</p><p>  實現方法:GDI繪圖是Windows系統下較成熟的窗口繪圖技術。GDI處理來自Windows應用程序的圖形函數調用,然后把這

49、些調用傳遞給合適的設備驅動程序,有設備驅動程序來執(zhí)行與硬件相關的函數,并產生最后的輸出結果。GDI可以看作是一個應用程序與輸出設備之間的中介,一方面。GDI向應用程序提供了一個設備無關的編程環(huán)境,另一方面,它又以設備相關的格式和具體的設備打交道;多緩沖技術是以犧牲內存為代價來消除屏幕的閃爍。單緩沖只有一個內存DC,繪制完成后將該DC輸出到屏幕。而多緩沖有多個內存DC和多幅位圖【4】,首先將所有的繪制操作在內存中完成后,再將最終的位圖繪制

50、到屏幕。CSocket提供了Send()和Receive()函數用于數據的發(fā)送和接收。本游戲系統發(fā)送的消息較多,且消息各不相同。因此定義了消息格式,將各種消息的格式統一起來。</p><p>  例如:新玩家進入游戲的消息:“infotype: INTO&group: CYA&”</p><p>  改變分組信息的消息:“infotype: GROU&group:

51、RED&”</p><p>  玩家退出游戲的消息:“infotype: QUIT&”</p><p>  玩家聊天的消息:“infotype: INFO&data: 我進來了?!?lt;/p><p>  這樣的消息還有很多。以上的技術主要通過封裝CGame類來實現。</p><p>  (4) 當所有進入游戲的游戲玩家都

52、準備就緒之后,就開始游戲。游戲中玩家通過左右鍵、向下鍵來移動運動方塊,向上鍵來變換方塊,空格鍵使方塊直接下落。并且根據玩家的操作不同播發(fā)不同的音樂。游戲中消層時可以獲得該層的道具,并通過1——6的數字鍵來使用道具,以達到相互攻擊和援助的目的。</p><p>  需要技術:GDI繪圖技術、自定義消息、MCI多媒體技術【8】、道具技術。</p><p>  實現方法:MCI(Media Co

53、ntrol Interface,媒體控制接口)向Windows程序提供了在高層次上控制媒體設備接口的能力。程序不必關心具體設備,就可以對激光唱機(CD)、視盤機、波形音頻設備、視頻播放設備和MIDI設備等媒體設備進行控制。對于程序員來說,可以把MCI理解為設備面板上的一排按鍵,通過選擇不同的按鍵(發(fā)送不同的MCI命令)可以讓設備完成各種功能,而不必關心設備內部實現。比如,對于play【11】,視盤機和CD機有不同的反應(一個是播放視頻,

54、一個播放音頻),而對用戶來說卻只需要按同一按鈕。通過調用MCI的函數來實現音樂的播放;道具技術主要是利用隨機加入的方式,玩家每消掉一層方塊時就會產生隨機數量的道具方塊。玩家使用道具時,游戲主要根據接收的消息,利用繪圖技術實現道具的功能。這些都在CGame類【21】中實現。</p><p>  (5) 當只剩下一個分組每有結束游戲的時候,游戲結束,且該分組取得了游戲的勝利。游戲進入結束清理、還原工作【17】。如計算

55、各玩家的游戲得分,并將得分寫入數據庫,同時更新玩家界面顯示的游戲基礎信息;繪制游戲結束界面等。</p><p>  需要技術:半透明窗體、半透明繪圖技術【12】、MCI技術、自定義消息【14】。</p><p>  實現方法:半透明繪制技術主要是將原圖像素點顏色值與現圖對應像素點顏色值進行邏輯異或運算形成新值來實現。</p><p>  (6) 一局游戲結束后,玩家

56、還可以繼續(xù)進行游戲,只要加入游戲的人數不少于兩人。</p><p>  多人分組對戰(zhàn)俄羅斯方塊游戲設計原理較簡單,但里面的各種事件的處理較煩瑣,且涉及到的編程技術、技巧較多,稍不注意就可能出錯。且作為游戲,系統運行的穩(wěn)定性、異常處理、健壯性等也很重要。</p><p>  2.2 需求分析 </p><p>  俄羅斯方塊是我們耳熟能詳的一款休閑益智小游戲,老

57、少皆宜。在各大網站和對戰(zhàn)平臺,以及掌機上都能見到它的身影。在它給廣大愛好者帶來歡樂的同時,也創(chuàng)造了巨大的商業(yè)價值。開發(fā)出一款的好的俄羅斯方塊游戲具有極大的意義。同時俄羅斯方塊游戲產生較早,設計較簡單,各方面的技術已經很成熟,要將現有的新技術加入到其中也是一件很容易的事情。從各方面來看開發(fā)一款別開生面的俄羅斯方塊游戲都是一個不錯的選擇。</p><p>  然而,多人對戰(zhàn)俄羅斯方塊游戲是一種有別于傳統俄羅斯方塊的游

58、戲。傳統的俄羅斯方塊游戲多在掌機或街機上,只能由一個人游玩。游戲缺少玩家的交互,不免游戲單調。而多人分組對戰(zhàn)俄羅斯方塊游戲在原來的基礎上加入了網絡互聯,可以支持多人分組對戰(zhàn)。增加了游戲玩家的交互,這是一種全新的設計理念。因此也使程序設計的難度大大增加。</p><p>  因此多人分組對戰(zhàn)俄羅斯方塊游戲應具有下面的功能:</p><p>  能夠遠程連接數據庫為用戶提供登錄驗證及玩家游戲信

59、息保存的功能。</p><p>  正確的俄羅斯方塊游戲算法,使玩家能夠暢快的游玩游戲。</p><p>  實現網絡互聯,可以支持多人對戰(zhàn),且多個玩家可以分組對戰(zhàn)。</p><p>  玩家可以獲得游戲道具,利用道具對對手進行攻擊,對自己或盟友進行援助。</p><p>  每個玩家都可以通過自己的游戲界面清楚的了解到其他玩家的游戲情況。&

60、lt;/p><p>  完善的記分系統,能通過分組情況、游戲名次等信息計算出每個玩家的游戲得分,并將得分情況寫入數據庫。</p><p>  游戲玩家中可以相互聊天,以此來增加游戲的交互性和趣味性。</p><p>  游戲要具有友好的人機界面,如動畫光標、音效等。</p><p>  游戲應具有較強的健壯性,確保游戲正常運行。</p>

61、;<p>  多人分組對戰(zhàn)俄羅斯方塊游戲的數據流程和遵循一般的C/S軟件模型。游戲分為服務器和客戶端兩個軟件。服務器主要用于接收從客戶端發(fā)來的消息,并對消息進行判斷,根據消息類型作出相應的處理,將處理結果發(fā)送給目標客戶端。而客戶端的功能主要是顯示游戲界面,獲取玩家的操作信息,根據玩家的操作作出相應的處理,并將結果以消息的形式發(fā)送給服務器,使自己的游戲情況讓其他玩家了解。</p><p>  2.2.

62、1 數據流圖</p><p>  進入游戲時首先要進行登錄認證,游戲以ADO數據庫連接技術,遠程連接到SQL2000數據庫。由于本系統不是管理系統,只需要記錄游戲玩家的游戲信息,所以數據庫中只建立了一張userinfo數據表【11】。該表記錄了玩家?guī)ぬ?、密碼、昵稱、游戲等級、游戲積分、玩家性別等信息。該表主要用于玩家登錄時從中提取帳號、密碼等進行驗證;當游戲結束時將游戲得分寫入數據表中。</p>&

63、lt;p>  數據庫頂層數據流如圖2-5所示。</p><p>  圖2-5 數據庫頂層數據流圖</p><p>  一層數據流如圖2-6所示。</p><p>  圖2-6 數據一層數據流圖</p><p>  二層數據流如圖2-7、圖2-8所示。</p><p>  圖2-7 登錄子系統二層數據流圖</

64、p><p>  圖2-8 游戲初始化模塊二層數據流圖</p><p>  圖2-9 游戲處理模塊二層數據流圖</p><p>  2.2.2 數據字典</p><p><b>  表2-1 玩家信息</b></p><p><b>  表2-2 登錄信息</b></p>

65、;<p>  表2-3 游戲基礎信息 </p><p>  表2-4 游戲初始化信息</p><p>  表2-5 游戲處理信息</p><p>  表2-6 游戲結束信息</p><p><b>  2.3 概要設計</b></p><p>  2.3.1 功能定義 <

66、;/p><p>  多人對戰(zhàn)俄羅斯方塊游戲主要以網絡通信為基礎實現人與人的交互。它主要包含以下幾大功能模塊:</p><p>  (1) 系統登錄模塊</p><p>  該模塊主要提供玩家進入游戲時的認證功能。首先建立SQL2000數據庫,利用ADO遠程連接技術實現與數據庫的連接。讀取數據庫中的數據與用戶輸入數據進行比較,如果正確就進入游戲主系統,否則將返回到登錄界面

67、。</p><p>  層次圖如圖2-9所示。</p><p>  圖2-10 登錄系統層次圖</p><p>  (2) 俄羅斯算法模塊</p><p>  該模塊主要實現俄羅斯方塊游戲的控制。其中它又包括運動方塊的隨機產生、方塊下移、左移、右移、直接下落、變換、方塊觸界檢測、消層等多個模塊。運動方塊隨機產生主要是在一個運動方塊到底后,通過

68、Rand()方法產生下一個將要出現的方塊形狀【13】。下移、左移、右移、直接下落模塊主要是將運動方塊向下移動一格、向左移動一格、向右移動一格、直接落到游戲池底。變換模塊主要是將當前運動方塊劣時針方向旋轉90度【15】。方塊觸界檢測模塊主要完成運動方塊是否運動到了游戲池的底部、左邊界、右邊界的判斷。消層模塊主要是當運動方塊運動到了游戲池的底部后,檢測游戲池中的每一行,發(fā)現有滿行的層就消掉,并將該層上面的方塊逐層下移一行【19】。</

69、p><p>  模塊層次圖如圖2-10所示。</p><p>  圖2-11 俄羅斯方塊算法實現層次圖</p><p>  (3) 網絡通信模塊</p><p>  網絡通信模塊主要完成服務器的建立、客戶端的連接以及各玩家的相互通信功能。它又分為服務器和客戶端兩個模塊。服務器完成網絡俄羅斯方塊服務器的建立,并等待客戶端的連接。同時接收客戶端發(fā)送過

70、來的消息,并對接收的消息進行處理,將處理結果發(fā)送給目標客戶端??蛻舳四K完成對指定服務器的連接,連接成功后,將玩家的游戲操作信息發(fā)送給服務器,通過服務器將這些消息傳達給其他的玩家【16】。</p><p>  模塊層次圖如圖2-11所示。</p><p>  圖2-12 網絡通信層次圖</p><p>  (4) 游戲界面繪制模塊</p><p&

71、gt;  該模塊是游戲實現的核心模塊,它本身并不實現一些游戲控制的功能。但是,它是其他模塊功能的體現。其他模塊都要受它的調用,從而形成一個游戲系統。該模塊的子模塊較多,例如初始界面繪制模塊、游戲開始前的準備界面繪制模塊、游戲準備就緒界面繪制模塊、游戲開始界面繪制模塊(其中又包括主游戲區(qū)域繪制、從游戲區(qū)域繪制等)、游戲結束繪制模塊等。該主模塊及其它的子模塊主要完成界面在不同事件響應下游戲界面的繪制和音樂的播放功能【18】。</p&g

72、t;<p>  模塊層次圖如圖2-12所示。</p><p>  圖2-13 界面繪制模塊層次圖</p><p>  以上是游戲功能實現的主要模塊,它們經過相互調用控制,協作分工最終完成了本游戲系統的設計。</p><p>  本系統采用Visual C++6.0開發(fā)環(huán)境,C++為開發(fā)語言,MFC為開發(fā)庫,SQL Server2000+SP4補丁為數據

73、庫進行開發(fā)【25】。</p><p>  2.3.2 游戲框架設計 </p><p>  本游戲系統采用C/S軟件開發(fā)模型,主要包括登錄認證、游戲算法、網絡通信、界面繪制四大模塊【21】。</p><p>  系統層次圖如圖2-13所示。</p><p>  圖2-14 多人分組對戰(zhàn)俄羅斯方塊游戲層次圖</p><

74、p>  本系統采用C/S軟件模型、單線程、阻塞式網絡通信的設計方式。服務器系統只有一個界面。系統調用網絡通信模塊中的服務器端模塊完成服務器的建立,并等待連接。當連接成功客戶端發(fā)送消息過來,系統調用消息處理模塊處理消息得到結果。最后調用消息收發(fā)模塊將消息發(fā)送出去??蛻舳讼到y主要由兩個界面組成。一個登錄界面和一個游戲主界面。登錄界面調用登錄認證模塊,完成身份認證。認證成功后進入游戲主界面。主界面首先調用網絡通信模塊完成與服務器的連接,

75、并向服務器發(fā)送相應的消息。連接成功后,系統調用界面繪制模塊中的初始界面繪制模塊完成初始界面的繪制。游戲開始前,系統調用游戲準備階段界面繪制模塊繪制界面。游戲開始后將在調用游戲算法模塊控制游戲的同時調用游戲開始界面繪制模塊顯示游戲進度。游戲結束后,系統調用游戲記分模塊計算各玩家的最終得分,并調用游戲結束界面繪制模塊完成游戲結果畫面的繪制。</p><p>  2.3.3 技術、風險預測 </p>

76、<p>  俄羅斯方塊游戲雖然很早就被發(fā)明了,經過長時間的發(fā)展各種技術相對較成熟。俄羅斯方塊的游戲算法也基本定型。但是,本系統為多人對戰(zhàn)俄羅斯方塊游戲,和傳統的俄羅斯方塊有很大的不同,在原來的基礎上加入了很多新的技術 新的實現方法。然而,要將一些新的技術融入到俄羅斯方塊游戲中并非一件容易的事情。同時,由于本人知識水平有限,對很多技術沒有掌握或不熟悉,這就使開發(fā)本游戲存在一定的風險,從而導致系統開發(fā)的失敗或不完整。&

77、lt;/p><p>  本系統設計為四大模塊:系統登錄模塊、游戲算法模塊、網絡通信模塊、界面繪制模塊。在四個模塊中都用到了相應的開發(fā)技術,也具有一定的開發(fā)風險。</p><p>  (1) 系統登錄模塊:</p><p>  技術:ADO遠程連接SQL2000技術。</p><p>  風險:實現登錄信息的安全性較困難。</p>&

78、lt;p>  (2) 游戲算法模塊:</p><p>  技術:數組等基礎知識的操作。</p><p>  風險:怎樣設計合理的游戲邏輯、怎樣設計各個子模塊、各個子模塊應該怎樣協調工作使游戲正確、怎樣進行觸界檢測等。</p><p>  (3) 網絡通信模塊:</p><p>  技術:CSocket套接字技術、自定義消息技術</

79、p><p>  風險:怎樣實現消息收發(fā)的正確性、怎樣將接收的信息正確發(fā)送給邏輯目的玩家、怎樣實現不同信息的發(fā)送、信息收發(fā)出現異常怎么辦等。</p><p>  (4) 界面繪制模塊:</p><p>  技術:GDI繪圖技術、多緩沖繪圖技術、半透明繪圖技術、MCI多媒體技術、動畫光標技術。</p><p>  風險:怎樣根據服務器發(fā)送的消息繪制界

80、面、怎樣將自己界面的繪制結果發(fā)送給其他玩家、怎樣實現游戲動畫特效、怎樣實現多次繪圖屏幕不閃爍等。</p><p><b>  3 詳細設計</b></p><p>  3.1 系統組成及功能描述</p><p>  本游戲系統是在單機版俄羅斯方塊游戲的基礎上擴展而來的多人分組對戰(zhàn)俄羅斯方塊游戲。它改變了傳統俄羅斯方塊人機對戰(zhàn)的游戲模式,實現了多

81、人對打的模式。</p><p>  本系統的主要功能是:多人一起加入游戲進行對抗賽,至少兩人,最多六人。玩家可以自由選擇分組,可以分為自由人、澄色、藍色、紅色四種身份。開始對戰(zhàn)后,各分組可以以獲得的道具相互攻擊,最后存活下來的一組游戲玩家成為最終勝利者,他們將平分其他失敗玩家扣除的分數。游戲中玩家之間可以相互聊天等以此來達到游戲娛樂的目的。</p><p>  本系統的組成:本系統為C/S

82、軟件模型,主要由登錄模塊、游戲算法模塊、網絡通信模塊、界面繪制模塊四部分組成。其中每個模塊又包括各個小模塊。</p><p>  3.2 系統登錄模塊設計</p><p>  系統登錄模塊包括一個登錄界面用于接受玩家的輸入信息。包括:服務器IP地址、用戶帳號、用戶密碼。界面設計如圖3-1所示。</p><p>  圖3-1 登錄模塊界面設計圖</p>

83、<p>  登錄界面由一個對話框組成。玩家必須在用戶帳號、用戶密碼和服務地址對應編輯框中輸入完整的登錄信息才能進行登錄驗證,否則將提示錯誤信息。進入登錄系統前,必須運行SQL Server 2000數據庫,且保證數據庫中的數據表正確無誤。</p><p>  該模塊需要的數據表如表3-1所示。</p><p>  表3-1 玩家信息表</p><p>  

84、account :用戶帳號;password :用戶密碼;byname :昵稱;grade :游戲等級;integral :游戲積分;sex :用戶性別;flag :該用戶是否已經登錄,為0表示還沒有登錄,為1表示已經登錄。</p><p>  當玩家完成登錄信息的輸入后,點擊登錄按鈕時,系統將調用ADOConn類遠程連接到SQL Server2000數據庫,此處采用ADO數據庫連接技術實現。如果連接成功將調用C

85、Users類根據玩家輸入的用戶帳號去讀取password 字段和flag字段。如果讀取成功,說明該用戶帳號存在,否則說明帳號有誤。帳號正確時,首先檢查flag字段是否為0。若flag為0,則說明該用戶還沒有登錄游戲,接著將讀取的password 與用戶輸入的用戶密碼進行比較,相等則登錄成功,并將flag字段值更新為1寫入數據庫。不相等則登錄失敗,重新輸入登錄信息。若flag不為0,說明該用戶已經登錄,不能多次登錄,將提示信息錯誤。返回登

86、錄初始狀態(tài),要求重新輸入登錄信息。若用戶登錄成功,系統將讀取byname 、grade 、integral 字段的信息并保存起來以便進入游戲主模塊時繪制該玩家的游戲基礎信息。到此,登錄模塊所做的工作就完成了。</p><p>  該模塊的詳細流程圖如圖3-2所示。</p><p>  圖3-2 登錄模塊詳細流程圖</p><p>  3.3 游戲算法實現模塊<

87、/p><p>  算法實現模塊主要描述俄羅斯方塊游戲的實現原理。它包括運動方塊的隨機產生、方塊下移、左移、右移、直接下落、變換、方塊觸界檢測、消層等多個模塊。</p><p>  方塊隨機產生主要由GenerateDiamond()函數實現。本系統游戲區(qū)域由一個21*12的矩陣diamondsA[21][12]組成【22】。隨機方塊由一個4*4的矩陣cubeX[4][4]保存。在下一個方塊產生

88、前須將保存上一個方塊信息的cubeX[4][4]清零。然后,用Rand()函數隨機產生一個0到8之間的數字,每一個數字都對應著一個不同形狀的方塊。同時隨機產生方塊的顏色(1到7,每個數字代表一種顏色)。隨機的數字產生后,方塊的形狀也就固定了。就用隨機產生的顏色值(1到7)填充cubeX[4][4]相應的元素。這樣cubeX[4][4]就保存了下一個方塊的形狀、顏色等信息。接著將cubeX[4][4]矩陣隨機旋轉,并將旋轉后的方塊移動到c

89、ubeX[4][4]矩陣的最上方,這樣下一個方塊就產生了。最后初始化該方塊將第一次出現在游戲區(qū)域中的位置為游戲區(qū)域矩陣的第一行中間。同時擦除下一個待出現方塊提示區(qū)域原來的方塊,并將該方塊繪制上去。到此,下一個待出現的運動方塊就產生了。</p><p>  算法實現流程圖如圖3-3所示。</p><p>  圖3-3 方塊隨機產生接口流程圖</p><p>  方塊下

90、移、左移、右移、直接下落主要由Move()函數來實現。左移和右移時,函數首先調用MeetBorder()函數進行邊界檢測,如果已經到了左邊界或右邊界,就退出。否則就將游戲區(qū)域當前顯示的運動方塊擦除,然后將該運動方塊的位置向左或向右移動一格,最后在新的位置上重新畫出運動方塊,同時播放音效。下移時,函數首先調用MeetBorder()函數進行邊界檢測,檢測是否已經到了下邊界,如果到了下邊界,則調用LineDelete()進行消層,調用Pro

91、pPaint()記錄獲得的道具,調用PropExplainPaint()繪制獲得的道具。如果沒有到下邊界,則退出。然后將游戲區(qū)域當前顯示的運動方塊擦除,將該運動方塊的位置向下移動一格,最后在新的位置上重新畫出運動方塊,同時播放音效。直接下落時,函數首先擦除游戲區(qū)域當前顯示的運動方塊,然后進行循環(huán)進行邊界檢測,沒有到達下邊界就將運動方塊的當前位置向下移動一格,直到到達下邊界為止。最后在新的位置畫出運動方塊,進行消層、記錄獲得的道具、畫出道

92、具。</p><p>  算法實現流程圖如圖3-4所示。</p><p>  圖3-4 Move函數實現流程圖</p><p>  方塊變換的實現見上圖,首先擦除游戲區(qū)域當前的運動方塊,然后調用MeetBorder()進行變換,MeetBorder()調用Rotatable()判斷能否變換。如果能變換,MeetBorder()中將當前運動方塊逆時針旋轉90度角形成新

93、的方塊。最后將新的方塊繪制到游戲區(qū)域運動方塊原來的位置上。如果不能變換,則Move()函數中將剛才擦除的運動方塊重新繪制上去。</p><p>  方塊觸界檢測主要判斷當前運動方塊是否到達了左邊界、右邊界、下邊界,同時兼有變換方塊的功能。函數首先將保存運動方塊信息的cubeX[4][4]矩陣的值移植到表示游戲區(qū)域的diamondsA[21][12]矩陣的相應位置。如果方塊左移,則將cubeX[4][4]矩陣在di

94、amondsA[21][12]中左移一格,然后檢查cubeX[4][4]中所有值不為0的元素與diamondsA[21][12]中重合的元素的值是否為0,只要有一個不為0,則表示已經到了左邊界或被其他方塊擋住了,不能左移。若都為0,說明可以向左移。就將方塊向左移一格,并在新的位置繪制出運動方塊。向右移、向下移、變換的情況同理【27】。</p><p>  算法實現流程圖如圖3-5所示。</p>&l

95、t;p>  圖3-5 觸界檢測實現流程圖</p><p>  消層功能主要由LineDelete()函數實現。該函數實現的原理是:逐行遍歷diamondsA[21][12]矩陣,發(fā)現某一行為滿行就將該行消去。并逐一檢查該行的每一個元素,若發(fā)現為道具方塊,則將該道具加入道具數組中。然后將該行上面的行依次往下移一行,第一行元素的值變?yōu)槿恪2⒆兓蟮膁iamondsA[21][12]矩陣繪制到游戲區(qū)域。重復上

96、面的操作,直到檢查到diamondsA[21][12]的最后一行。完成后,將獲得的道具繪制到道具區(qū)域,并將記錄消層數量的變量的值增加相應的值。隨機產生下一個方塊,最后檢查方塊是否已經到了游戲區(qū)域頂部。若是則將EndFlag置1,表示游戲結束【26】。</p><p>  算法實現流程圖如圖3-6所示。</p><p>  圖3-6 消層實現流程圖</p><p> 

97、 到此,俄羅斯方塊游戲的算法實現模塊就完成了,游戲系統將通過對上面各個功能模塊的調用實現游戲的運行。</p><p>  3.4 網絡通信模塊</p><p>  網絡通信模塊是各個獨立游戲實體連接的紐帶。它的主要作用是將每個游戲玩家連接起來,幫助他們傳遞信息,實現人與人之間的交互。從而提高游戲的趣味性、交互性、可玩性。具體的說網絡通信模塊主要包括服務器和客戶端兩個模塊。服務器模塊用于建立

98、服務器為客戶端提供服務,接收客戶端的連接,處理并轉發(fā)消息??蛻舳四K主要用于將客戶端連接到服務器,并將玩家的操作情況以消息的形式發(fā)送給服務器處理,最后接收服務器發(fā)送來的消息并處理。</p><p>  服務器建立:服務器端封裝CSocket類分別生成了CClientSocket類和CServerSocket類,并在CServerSocket類中重載了OnAccept消息,在CClientSocket類中重載了On

99、Receive消息。服務器的建立遵循CSocket編程的一般步驟,首先創(chuàng)建監(jiān)聽套接字,調用Listen()監(jiān)聽客戶端的連接【24】。有客戶端請求連接時,調用Accept()接受客戶端的連接。連接成功后,就可以調用ReceiveData()接收已連接客戶端發(fā)送來的消息。服務器界面設計圖如圖3-7所示。</p><p>  圖3-7 服務器界面圖</p><p>  客戶端連接:客戶端封裝CS

100、ocket類生成了CMysocket類,并重載了OnReceive消息。首先在游戲主系統中創(chuàng)建客戶端套接字,然后調用Connect()連接到指定的服務器,連接成功后,調用Send()將該玩家的游戲基礎信息發(fā)送到服務器。</p><p>  服務器端和客戶端消息的收發(fā):服務器建立成功,客戶端連接到服務器后,客戶端就可以向服務器發(fā)送消息。服務器重載ReceiveData()來接收客戶端發(fā)送的消息,利用Send()來發(fā)

101、送消息??蛻舳艘仓剌d了ReceiveData()來接收服務器發(fā)送來的消息??蛻舳税l(fā)送來的數據較多,且數據樣式各不相同。因此,本系統自定義消息格式,統一數據的發(fā)送方式。</p><p>  消息格式為:infotype: 消息類型&<標志字段: >字段值&……<標志字段: >字段值& <>標記的內容可有可無。</p><p

102、>  例如:當玩家發(fā)送聊天信息時,客戶端向服務器發(fā)送的消息為:"infotype: INFO&data: "+str。Str表示聊天信息字符串。</p><p>  服務器在ReceiveData()函數中接收到該消息后,語法分析該消息,讀取infotype字段的值,若為“INFO”,則服務器就知道發(fā)送過來的是聊天信息。接著就提取聊天信息“str”,將其發(fā)送到每一個連接到服務器的

103、客戶端。這樣每個客戶端都會在ReceiveData()中接收到該消息,客戶端再次對其進行語法分析,讀取消息類型字段,若為“INFO”就將聊天信息“str”寫入到Richedit控件。</p><p>  除了聊天消息外還有很多消息,部分消息列舉如下:</p><p>  新玩家進入游戲的消息:“infotype: INTO&group: CYA&”</p>&

104、lt;p>  改變分組信息的消息:“infotype: GROU&group: RED&”</p><p>  玩家退出游戲的消息:“infotype: QUIT&”</p><p>  使用道具的消息:"infotype: PROP&addr: "+m_address[p].Mid(0, m_address[p].GetLengt

105、h()-5)+m_proptype</p><p>  從游戲區(qū)域改變的消息:"infotype: DIAM&"</p><p>  游戲一個玩家結束的消息:="infotype: MEND&"+strtemp</p><p>  游戲勝利的消息:"infotype: WINN&"+

106、m_fen+"&"</p><p>  整個游戲結束的消息:"infotype: OVER&"+strtemp</p><p>  各種消息的收發(fā)和處理情況基本相似,由于內容較多,這里就不再累述。</p><p>  網絡通信模塊的流程圖如圖3-8所示。</p><p>  圖3-8 網

107、絡通信模塊實現流程圖</p><p>  3.5 游戲界面繪制模塊</p><p>  游戲的最終目的是能給游戲玩家提供友好的視覺享受。因此,游戲界面的繪制尤為重要。前面各模塊的功能主要集中在游戲邏輯的實現,那么游戲界面繪制模塊就是將看不見的游戲邏輯讓游戲玩家能夠看見,從而幫助玩家正確的完成操作。該模塊貫穿整個游戲系統,從進入游戲到最后退出游戲都將用到該模塊來繪制游戲界面,顯示游戲進行情況

108、。游戲界面繪制模塊實現較復雜,子模塊較多,提供的函數接口也很煩瑣。從游戲進行的階段可以將該模塊大致分為以下幾個不同部分:游戲初始界面、游戲準備界面、游戲開始界面、游戲結束界面等。</p><p>  3.5.1 游戲初始界面</p><p>  該界面是登錄成功后,玩家第一次看見的游戲界面,此時,游戲玩家沒有作出任何操作。界面效果圖如圖3-9所示。</p><p>

109、  圖3-9 游戲初始界面設計圖</p><p>  從圖中我們可以看到,效果圖主要由左邊標記的2—6五個從游戲區(qū)域、中間標記為1的主游戲區(qū)域、右邊的聊天窗口及分組選擇等按鈕組成。</p><p>  初始界面繪制原理是:當玩家登錄成功后,系統顯示游戲主界面。首先創(chuàng)建第一重繪圖DC將一張游戲背景圖繪制到界面上,并初始化參數設置、快速幫助、最小化、最大化、關閉、發(fā)言、A、B、C、自由人、開始

110、、退出等按鈕為INIT狀態(tài),練習按鈕為INVALID狀態(tài),接著調用InitPaint()函數根據它們的狀態(tài)繪制按鈕圖。聊天信息框中顯示事先準備好的字符串。接著分別創(chuàng)建6個第二重繪圖DC,一個用于主游戲區(qū)域的繪制。當玩家登錄時便從數據庫中提取出了該玩家的昵稱、等級、積分等游戲基礎信息,且每個剛登錄的玩家的默認身份都為自由人。此時直接將綠色背景圖繪制到主游戲區(qū)域的頭部以表明該玩家的分組情況,同時也將基礎信息繪制上去。主游戲區(qū)域中繪制暗色人物

溫馨提示

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

評論

0/150

提交評論