游戲畢業(yè)論文-英格洛斯接龍設計_第1頁
游戲畢業(yè)論文-英格洛斯接龍設計_第2頁
游戲畢業(yè)論文-英格洛斯接龍設計_第3頁
游戲畢業(yè)論文-英格洛斯接龍設計_第4頁
游戲畢業(yè)論文-英格洛斯接龍設計_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、英格洛斯接龍GDGM-QR-03-077-A/0畢業(yè)論文Graduation Paper Following English Word英格洛斯接龍系 別: 班 級: 學生姓名: 學 號: 指導老師: 完成日期: 摘要畢業(yè)設計,要求作品更好的要到有創(chuàng)新性和實用性,能運用以前學過的知識來完成設計,經充分的調查與分析后,得出目前大部分的小學生對英語學習不怎感到興趣,特別是對強記硬背的記住單詞更感到枯燥無味,而對游戲游玩卻非常感興趣,最后決定選擇目前還沒有人做過的休閑娛樂游戲“英格洛斯接龍”游戲開發(fā)作為畢業(yè)設計項目,希望通過游戲能提高對小學生的學習英語興趣?!坝⒏衤逅菇育垺庇螒蛞杂⒄Z詞匯接龍游戲為原形

2、,游戲規(guī)則簡單明了,將課堂上的英語詞匯練習游戲與現代的動畫技術、網絡技術及算法相結合,做到界面動感美觀,算法精確,在視覺、聽覺享受同時鞏固和學習英語詞匯,提高英語能力和反應能力。游戲以卡通人物為主,主要體現出游戲的活力和游戲的娛樂性。游戲開始我們便仿佛進入一個廣闊的大草原上,一輛載滿小精靈的火車拌著美妙的音樂開進草原這里所創(chuàng)建的人物生動、有趣,景物生機勃勃,非常有新意,整體界面設計活潑、新鮮,有趣。游戲音樂,游戲圖片和算法都是自創(chuàng),卡通人物隨機產生,音樂一直伴隨著游戲。英語詞匯量豐富,最高可達六級詞匯量。 功能方面,單人網絡版,多人網絡對戰(zhàn)和多組同時在網絡對戰(zhàn)功能,另外還實現了計分、計時和單步

3、計時功能。網絡功能的實現,使得游戲更富吸引力,也讓游戲玩家更具競爭性,計時計分功能的實現增加了游戲趣味性、刺激性和吸引力。在這游戲環(huán)境中學習英語,趣味無窮,完全可達到娛樂學習一體的目的。關鍵字:英 格 洛 斯 接 龍目 錄一、引 言1(一)游戲開發(fā)目的1(二)游戲功能1(三)游戲特點1(四)開發(fā)工具與運行環(huán)境以及安裝要求2二、需 求 分 析3(一)背景及需求分析3(二)界面設計分析3(三)游戲功能分析4(四)技術的分析4(五)詞匯量分析6(六)游戲行業(yè)市場需求信息分析6三、游 戲 的 安 裝7(一)安裝DirectX(June2008)7(二)安裝游戲的服務端與客戶端8(三)成功安裝游戲9四、

4、界面設計和需求分析10(一) 游戲設計界面和功能分析10(二)功能分析及設計15五、 算法設計與實現17(一)游戲規(guī)則說明17(二)游戲的算法17(三)UML設計與模塊功能241 服務器端252. 客戶端28六、 總結31七、 參考文獻33一、 引 言(一)游戲開發(fā)目的隨著我國動畫游戲開發(fā)水平的不斷提高,許多游戲軟件不斷涌現。隨著電腦的普及,家庭和學校教育對游戲軟件提出了新的要求,那就是游戲軟件要同時兼?zhèn)浣逃蛫蕵穬煞N功能,使學生在游戲中開發(fā)思維,學習知識。結合我們身邊很多小學生對英語學習不感興趣,而對游戲游玩卻非常感興趣,所以希望所開發(fā)的“英語接龍”游戲能提高他們的英語學習興趣,將記英語單詞

5、這無趣的事情轉到游戲中來,讓學習者能在學習中體會游戲帶來的快樂,在游戲中學習英語,即可以學到知識又可以體會快樂,這是我開發(fā)這款這款游戲開發(fā)的主要目的。(二)游戲功能游戲同時結合游戲者的詞匯量和反應速度來挑戰(zhàn)游戲,不但極具娛樂性,還能提高記憶單詞能力和思維反應能力。游戲的主要功能有: 游戲的登錄 房間的創(chuàng)建 單人網絡游戲 多人網絡游戲 聊天室 計時。 計分。(三)游戲特點 目前還沒有類似的游戲,因此該項目具有創(chuàng)新性。 多人游戲是非常刺激,并具有挑戰(zhàn)性的。因為人類的手計算機的AI聰明多。(AI的意思就是人工智能Artificial Intelligence) 界面動感美觀:考慮到讓玩家在輕松愉快的

6、游戲環(huán)境中游玩,游戲中的所有圖片、場景都讓人有輕快明朗的感覺,讓人聯想在廣闊的大草原上奔跑游玩,在這游戲氛圍中,開開心心學習到英語詞匯。而且圖片也是經過加工設計的。 音樂獨創(chuàng):本游戲中的所有背景音樂是原創(chuàng)(叫一位搞音樂朋友花了幾天的時間搞出來的),能讓人在輕松的背景音樂中進入游戲。 游戲算法創(chuàng)新:算法是一個游戲的靈魂,它覺得一個游戲本質上的好與壞,在算法也有獨特的創(chuàng)新。 適合對象:所有人群,不過偏向幼兒園還有上小學的學生。 可以在游戲的過程中聊天,學會如果更好的溝通,所謂溝通從心開始,溝通更應該從小開始。 適合對象:所有人群,不過偏向幼兒園還有上小學的學生。(四)開發(fā)工具與運行環(huán)境以及安裝要求

7、 圖像開發(fā)工具:采用FlashMX、Photoshop、Ulead GIF Animator等為制作游戲界面和背景圖的工具。 Frustrated Family:為制作音樂的軟件。 軟件開發(fā)工具:用Microsoft Visual Studio 2008(Profseeion Edition)全新級的重量級的開發(fā)環(huán)境 ,Managed DirectX SDK2008支持C#的開發(fā)包,采用C # 語言作為程序開發(fā)語言。 運行平臺:Windows XP / Vista /Window 2000 /Window 2003 。 安裝要求:該游戲需要 .NET Framework 框架和DirectX插

8、件支持。.NET Framework 框架已包含在安裝包中( 如果原本機子上有已經比.NET Framework 2.0更新的版本可以選擇不安裝), DirectX 插件須自行安裝(如果是電腦上裝了Vista系統(tǒng)的可以省略這一步)。二、 需 求 分 析(一)背景及需求分析考慮到作為畢業(yè)設計,要有創(chuàng)新性和實用性,也要有一定的技術難度。所以本人對網上的游戲產品作了廣泛的調查,總結了開發(fā)休閑游戲一定要有下面的特點:l 要有吸引力,界面美觀l 有一定的技術難度和科學性l 在游戲過程中能夠鍛煉出邏輯思維能力、勉捷的反應能力、超強的記憶力、耐力、意志力。l 具有一定的文化內涵,將一些基礎知識融入其中,達到

9、寓教于樂的效果。結合我們的學習情況,學生從小學到大學,英語都是必考的課程,而很多同學面對英語束手無策,毫無興趣,而小朋友也應該從小開始培養(yǎng)對學習英語的興趣,從小學起,因此決定將休閑游戲跟英語學習結合起來,使游戲過程同時也是英語復習和學習的過程。以往的英語接龍游戲都只是幾個同學間的口頭比賽,很難進行計時計分,且必須要有幾個同學一起玩才會玩得開心,現在我們把這種傳統(tǒng)的口頭游戲變成軟件游戲,讓游戲者隨時都可以玩,可以一個人玩、跟電腦玩或上網跟網友玩,并且實現計時計分功能,讓游戲更刺激、更好玩、更有魅力。基于上述原因,經充分的調查與分析后而選定英語學習的游戲作為畢業(yè)設計,基于時間問題,暫時先做英格洛斯

10、接龍游戲的大部分功能,在后續(xù)時間,有時間將游戲繼續(xù)的完善,希望廣大小朋友們能從游戲中開心學習和鞏固英語詞匯,增加自己的英語詞匯量而且提高自己的記憶力。(二)界面設計分析游戲主要針對小學生而開發(fā)的,也可適用于各階層人士游玩。因此界面設計時主要考慮適合少齡玩家的視觀感覺,根據他們追求趣味性和動感性,發(fā)自于一顆憐憫而好奇的稚氣之心,小動物更能吸引他們的注意和關心,具有趣味的動畫更是他們的最愛,因此界面設計以草原為游戲界面的整體背景,以一些精靈和小動物和飛去的蜻蜓作為動態(tài)背景,色調方面采用讓人輕松愉快的暖色調,對于一些時間、分數、結果等的顯示通俗易懂,軟件具有很強的美感。(三)游戲功能分析將幾個同學間

11、的口頭詞匯游戲比賽,轉換成網絡中的游戲,提高游戲的娛樂性和趣味性,對游戲的功能分析后,主要設計如下功能: 自己一個人玩:在規(guī)定的時間內輸入一個單詞,單詞的開頭必須跟上一個單詞最末字母相同,并且要在規(guī)定時間內接下一個單詞,不能與前面的詞匯重復,電腦自動統(tǒng)計所接單詞的數量,通過最高記錄板記錄你的歷史最高記錄??梢赃_到鍛煉自己的反應能力和輸入能力,最重要的是擴充你的英語詞匯量。 多人網絡游戲:要求參加者的電腦能連接到互聯網,游戲中玩家可以自己開一個游戲房間,跟朋友一起競賽,也可能加入到其它的房間。游戲的規(guī)則是誰接的單詞最多為贏家,在超過單步時間時,系統(tǒng)將自動幫你輸入,如果這同個游戲中輸入同樣的單詞,

12、不扣分也不加分,所以從中可以看出,為了游戲能夠獲得勝利,玩家必須對輸入過得英語單詞要再腦子里有個印象,不然就會輸得很慘哦。 網絡游戲還支持文字聊天,這樣既可以達到朋友間彼此互相交流,在娛樂學習中相互成長。 計時:通過計時檢驗對詞匯的熟練程度。 計分:通過計分達到競賽的目的,也可以檢驗對詞匯的掌握量。(四)技術的分析 游戲中用了DirectX的SDK,Managed DirectX是對DirectX大部分功能的托管封裝,可以用任何支持.NET的語言開發(fā)。 MDX的性能是不用擔心的,因為他還是像COM DirectX一樣提供對硬件層次的訪問,大部分功能都是在你的顯卡/網卡/聲卡上起作用的,托管部分

13、只是他的接口。所以如果不是大型游戲,效率可以忽略。 托管代碼的對象模型。 通常不用操心資源釋放的問題。 委托是一種引用方法的類型。一旦委托了分配的了方法,委托將與該方法具有相同類型的行為。委托方法的使用可以其他方法一樣,具有參數和返回值。(另一種說法:委托是函數的封裝,它代表一“類“函數。他們有符合一定的簽名:擁有相同的參數列表,返回值類型,同時,委托也可以看成是對函數的抽象,是函數的”類“。此時,委托的實例將代表一個具體的函數。) 異步回調。由于實例化委托是一個對象,所以可以將其作為一個參數進行傳遞,也可以將其賦值給屬性。這樣,方法便可以將一個委托作為參數來接受,并且以后可以調用該委托。這成

14、為異步回調,是在較長的進程完成后用來通知調用方法的常用方法。以這種方式使用委托時,使用委托的代碼無需了解有關所用方法的實現方面的任何信息。回調的另外一個常用的用法是自定義的比較方法并將該委托傳遞給排序方法。 與現在技術結合得更好。 游戲設計過程中需要考慮到實時的并發(fā)時間交互。(1)能夠在同時執(zhí)行多行指令。 (2 ) 通常,只有一個CPU來處理所有的事件,所有的事件共享一個CPU,為每個事件分配一小段的CPU的時間,玩家就認為所有的事件都是同時發(fā)生并處理的。 延遲 計算機通過網絡進行通訊可能會有延遲影響游戲的可玩性,如何保持多臺PC的時鐘同步時一個非常大的挑戰(zhàn)。 數據丟失 在傳輸過程中,數據不可

15、避免的會有所丟失。 可靠性 計算機間的通訊有可能是間斷的。 技術的要點就是要讓游戲盡可能的更加順暢,玩家?guī)缀醺杏X不到計算機在和其他計算機進行通信。 網絡模型用了:Client / Server模型,這種模型也被稱為星型模型,有一個服務器(Server),所有玩家通過連接Server來進行游戲。服務端接收所有客戶端發(fā)送來的消息,在處理后再將信息發(fā)送到客戶端。 技術的要點就是要讓游戲盡可能的更加順暢,玩家?guī)缀醺杏X不到計算機在和其他計算機進行通信。(五)詞匯量分析 詞匯量是從小學英語到六級英語詞匯,詞匯來源于金山詞霸,存儲在文本文件中。因此詞匯的更新和擴展均非常容易,也非常方便增加新的分類,如增加雅

16、思英語、托福英語等等選項,算法方面做簡單的修改便可。(六)游戲行業(yè)市場需求信息分析2008年娛樂軟件協(xié)會(Entertainment Software Association)公布的數據表明:1. 視頻游戲帶動的硬件以及軟件的總銷售額超過90億美元。 在線游戲(網絡游戲)的銷售額也突破了50億美元。 便攜游戲突破10億美元。2. 對游戲的平均年齡在18歲左右。 大約60%以上的游戲超過16歲。 39%的玩家是女性。 網絡游戲的比例 - 其他(40%),青少年(44%),成年人(12%)。 受歡迎的3類游戲 - 動作類(30%),體育類(18%),競賽類(10%)。 嘴受歡迎的3類計算機游戲 -

17、 戰(zhàn)略(27%),家庭/兒童娛樂類(20%),射擊類(16%)。 三、 游 戲 的 安 裝(一) 安裝DirectX(June2008) 安裝DirectX(June2008)如下圖1-1: 圖1-1安裝成功如下圖1-2:圖1-2(二) 安裝游戲的服務端與客戶端1 游戲服務端安裝如下圖1-3:圖1-32游戲客戶端安裝如下圖1-4:圖1-4 (三) 成功安裝游戲成功安裝完游戲后在電腦桌面會出現下圖 1-5 :(GameServer為游戲服務端,GameClient為游戲客戶端)圖1-5四、 界面設計和需求分析(一) 游戲設計界面和功能分析1. 打開服務端并啟動服務器 如下圖2-1圖2-12. 服

18、務器的功能包括處理客戶端發(fā)送過來的所有信息然后再分發(fā)回客戶端。在工作中的服務器如下圖2-2圖2-23. 打開游戲客戶端,登陸網絡服務器,界面如圖2-3所示,在界面中輸入服務器IP地址和用戶名密碼,登錄服務器后,轉入下一步驟。圖 2-34. 進入游戲客戶端的平臺,點擊英語接龍進入房間管理界面, 在房間管理界面雙擊房間可以進入房間,如果想自己創(chuàng)建房間游戲可以在房間管理的空白位置右擊鼠標選中新建來創(chuàng)建自己想要創(chuàng)建的房間(玩家可新建并自行命名房間,并選擇二人玩、三人玩、四人玩等房間類型)。 如下圖 2-4 ,2-5 與 2-6:圖2-4圖2-5 圖2-6 5. 進入房間,等待其他玩家加入游戲,當進入的

19、人數達到房間規(guī)定的人數時,開始的按鈕會變成可點擊的,點擊“開始”按鈕便可以進入游戲。游戲過程中玩家可以在聊天窗口發(fā)送信息互相交流。界面如圖2-7所示和圖2-8圖2-9所示。 圖2-7 圖2-8 圖2-9 6.如果游戲中出現重復的輸入則出現如下圖的提示, 界面如圖2-10:圖2 -107.游戲結束時,會顯示勝負與玩家的分數。界面如圖2-11: 圖 2-11每個窗體都栩栩如生,游戲中的細節(jié)更是咄咄逼人,只有在游戲中體會了。(二)功能分析及設計根據的需求調查與分析和大多數開發(fā)者的實際工作,將“英格洛斯接龍”游戲功能設計為網絡多人游戲,并附加計時計分功能。多人游戲是聯機競賽功能(局域網或外網都可以設置

20、)。多人網絡游戲功能設計如下:l 用戶登陸服務器:游戲采用用戶名、密碼和服務器IP地址方式登陸。l 創(chuàng)建或進入房間:可以根據自己的選擇,創(chuàng)建自己的房間和加入已有的房間,房間分為:單人練習,2人房間,3人房間,4人房間。l 詞匯默認為全部詞匯量。l 游戲設置的單詞個數由游戲設計者設定。l 單詞回答的限時時間由游戲設計者設置。32五、 算法設計與實現(一)游戲規(guī)則說明l 多人網絡游戲規(guī)則:該網絡游戲有玩家登錄服務器、游戲管理、房間管理等功能,玩家在登錄進入游戲平臺后,可以選擇進入英語接龍游戲,獲取系統(tǒng)支持的游戲房間列表,游戲房間定義了允許同時進行同一游戲的玩家數量,在滿足游戲開始條件時,同一房間的

21、玩家可以開始游戲。游戲采用多回合搶答模式,先答對者得分,每回合設置答題時間限制,超過限制時間時,系統(tǒng)將自行產生一個答案,所有玩家均不得分,游戲繼續(xù)。在游戲結束時得分多者獲勝。l 游戲設置的單詞的總個數到達時是你本輪游戲的總時間,在這規(guī)定的時間里你能輸入多少單詞直接決定你的勝負;游戲單步時間是你在輸入一個單詞到接下來輸入下一個單詞的間隔時間。單單詞到達設置的個數時,游戲結束。(二)游戲的算法1加載單詞把單詞從文本文件中加載進一個變量數組中,根據單詞的開頭字母進行排序并存儲在相應的數組中,算法如下:public static void ReadWord() for (int i = 0; i 26

22、; i+) arrTexti = new ArrayList(); StreamReader sr = new StreamReader(Type(); string sLine = ; while (sLine != null) sLine = sr.ReadLine(); if (sLine != null) int n = -1; if (sLine0 = 0 & n arrText.Length) arrTextn.Add(sLine); sr.Close(); for (int integer = 0; integer 26; integer+) arrTextinteger.Sor

23、t(); 2隨機產生開始的單詞產生單詞分成兩部分,首先隨機產生26個字母中的一個,然后以所產生的字母為首字母,再從該字母開頭的單詞列表中隨機產生一個單詞。算法如下:public static string word() System.Random r1 = new Random(); int num1 = r1.Next(0, 25); int length = arrTextnum1.Count; System.Random r2 = new Random(); int num2 = r2.Next(0, length); return arrTextnum1num2.ToString();

24、1. 判斷輸入的單詞是否在所選的詞匯列表中采用折半查找算法,該算法大大提高了游戲的速率,主要算法如下:public static bool BinarySearch(string Search_Content,byte tage) ArrayList arrlist = new ArrayList(); if(tage=1) arrlist=arrTextSearch_Content0 - a; else if (tage = 2) inWord.Sort(); arrlist = inWord; int small = 0; int big = arrlist.Count - 1; int

25、mid; while (small 0) small = mid + 1; else big = mid - 1; if (small = big & String.Compare(Search_Content, arrlistsmall.ToString() = 0) return true; return false; 2. 自動產生和填充單詞如果在規(guī)定的時間沒有輸入正確的單詞,服務器根據玩家輸入的最后一個單詞隨機產生出來一個合乎游戲規(guī)則的單詞,算法如下public static string ComputerTxt(string front) int index = frontfront

26、.Length - 1 - a; int length = arrTextindex.Count; string tempword; while (true) System.Random r3 = new Random(); int num3 = r3.Next(0, length); tempword = arrTextindexnum3.ToString(); Boolean repetitionword =BinarySearch(tempword, 2); if (!repetitionword) inWord.Add(tempword); return tempword; 3. 游戲

27、引擎采用引擎來統(tǒng)領整個游戲,使游戲在擴充和更新的時候更加容易和方便。下面是游戲引擎的精靈類算法: public class Sprite: ICloneable public Sprite() m_Id = m_Counter+; protected Sprite(Sprite sprite):this() foreach (Animation animation in sprite.m_Animations) /設置精靈循環(huán)出現 m_Animations.Add(Animation)animation.Clone(); m_CurrentAnimationIndex = sprite.m_C

28、urrentAnimationIndex; m_Name = sprite.m_Name; m_CollisionRectangle = sprite.m_CollisionRectangle; m_Velocity = sprite.m_Velocity; m_Position = sprite.m_Position; m_Scale = sprite.m_Scale; m_Rotation = sprite.m_Rotation; m_Visible = sprite.m_Visible; m_Active = sprite.m_Active; m_ShowAllPixels = spri

29、te.m_ShowAllPixels; m_Opacity = sprite.m_Opacity; m_ZOrder = sprite.m_ZOrder; m_LocalMatrix = sprite.m_LocalMatrix; public void Add(Animation animation) /添加精靈 m_Animations.Add(animation); public int Count get return m_Animations.Count; public int AnimationIndex /設置并獲取精靈索引值 set if (value = m_Animatio

30、ns.Count) value = m_Animations.Count - 1; else if (AnimationIndex 0) value = 0; m_CurrentAnimationIndex = value; get return m_CurrentAnimationIndex; public Animation Animation /當前精靈 get return m_Animationsm_CurrentAnimationIndex; public bool Visible get return m_Visible; set m_Visible = value; publi

31、c bool Active set m_Active = value; get return m_Active; public PointF Position set m_Position = value; / UpdateCollisionRectangle(); get return m_Position; public Vector2 Velocity set m_Velocity = value; get return m_Velocity; public float ScaleX /坐標設置 set m_Scale.X = value; get return m_Scale.X; p

32、ublic float ScaleY /坐標設置 set m_Scale.Y = value; get return m_Scale.Y; public float Rotation /旋轉 set m_Rotation = value; get return m_Rotation; public void InternalUpdate() /界面的重定位 if(!m_Active) return; if (m_Animations.Count != 0) m_Animationsm_CurrentAnimationIndex.Update(); m_Position.X += m_Veloc

33、ity.X; m_Position.Y += m_Velocity.Y; Matrix trans = Matrix.Translation(m_Position.X, m_Position.Y, 0); /平移 Matrix rot = Matrix.RotationZ(m_Rotation); /旋轉 Matrix scaling = Matrix.Scaling(m_Scale.X, m_Scale.Y, 0); /縮放 int pictureWidth = m_Animationsm_CurrentAnimationIndex.CurrentPicture.Width; int pic

34、tureHeight = m_Animationsm_CurrentAnimationIndex.CurrentPicture.Height; float newPicWidth = Math.Abs(scaling.M11 * pictureWidth); float newPicHeight = Math.Abs(scaling.M22 * pictureHeight); float ltx = scaling.M11 0 ? newPicWidth : 0; float lty = scaling.M22 0 ? newPicHeight : 0; ltx -= newPicWidth

35、/ 2; lty -= newPicHeight / 2; Matrix locTrans = Matrix.Translation(ltx, lty, 0); m_LocalMatrix = scaling * locTrans * rot * trans; UpdateCollisionRectangle(); private void UpdateCollisionRectangle() /圖片定位 int pictureWidth = m_Animationsm_CurrentAnimationIndex.CurrentPicture.Width; int pictureHeight

36、= m_Animationsm_CurrentAnimationIndex.CurrentPicture.Height; m_CollisionRectangle.X = 0; m_CollisionRectangle.Y = 0; m_CollisionRectangle.Width = pictureWidth; m_CollisionRectangle.Height = pictureHeight; m_CollisionRectangle.Offset(int)(-pictureWidth / 2 + m_Position.X), (int)(-pictureHeight / 2 +

37、m_Position.Y); public virtual void Update() public void Render() if (!m_Visible | !m_Active | m_Opacity = 100) Game.D3DSprite.Begin(SpriteFlags.None); else Game.D3DSprite.Begin(SpriteFlags.AlphaBlend); int alpha = (m_Opacity * 255) / 100;Game.D3DSprite.Draw2D(m_Animationsm_CurrentAnimationIndex.Curr

38、entPicture.Texture, new Point(0, 0), 0, new Point(0, 0), Color.FromArgb(alpha, 255, 255, 255); Game.Device.Transform.World = m_LocalMatrix; Game.D3DSprite.End(); public int ZOrder set m_ZOrder = value; get return m_ZOrder; public int Opacity set m_Opacity = value; get return m_Opacity; public bool S

39、howAllPixels set m_ShowAllPixels = value; get return m_ShowAllPixels; public bool CollidesWith(Sprite sprite) return m_CollisionRectangle.IntersectsWith(sprite.m_CollisionRectangle); public static int ComparisonZOrder(Sprite sprite1, Sprite sprite2) int r = sprite2.m_ZOrder - sprite1.m_ZOrder; if (r

40、 = 0) return sprite2.m_Id - sprite1.m_Id; else return r; public virtual Object Clone() return new Sprite(this); #region PrivateData List m_Animations = new List(); int m_CurrentAnimationIndex; string m_Name = ; Rectangle m_CollisionRectangle; Vector2 m_Velocity; PointF m_Position; Vector2 m_Scale =

41、new Vector2(1, 1); float m_Rotation = 0; bool m_Visible = true; bool m_Active = true; bool m_ShowAllPixels = false; int m_Opacity = 99; /author:winner int m_ZOrder = 0; Matrix m_LocalMatrix = Matrix.Identity; int m_Id; static int m_Counter; #endregion PrivateData (三) UML設計與模塊功能系統(tǒng)采用dotNet Framework2.

42、0以上版本為開發(fā)平臺,客戶端游戲界面采用DirectX技術實現。服務器與客戶端之間的通信采用TCP/IP協(xié)議實現。系統(tǒng)框架圖如圖4-2所示。圖4-2系統(tǒng)框架圖本節(jié)分別描述服務端和客戶端的實現算法,最后描述游戲平臺間的協(xié)議定義。1 服務器端服務器由以下子系統(tǒng)組成l 通信子系統(tǒng)l 游戲管理子系統(tǒng)l 英語接龍游戲組件(1). 通信子系統(tǒng)系統(tǒng)采用異步的TCP Socket技術實現,信息流圖如圖4-3所示。圖4-3信息流圖 1)GameServer類GameServer是服務器的入口類,該類負責創(chuàng)建一個TCP Socket來偵聽客戶端的接入請求,并將已接入的客戶端分配給MessageDispatcher管理。2) MessageDispatcher類MessageDispatcher類用來管理消息的接收和發(fā)送,MessageDispatcher為每個客戶端創(chuàng)建一個GameContext對象來保持系統(tǒng)相關的信息。接收到客戶端的消息后,MessageDispatcher解析消息結構并創(chuàng)建一個Message對象來保存消息,對于游戲平臺的控制消息,MessageDispatcher將創(chuàng)建一個Command實例并交由ControlCommandHandler類處理。3) ControlCommandHandler類ControlCommandHandler類負責處理

溫馨提示

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

評論

0/150

提交評論