軟件工程畢業(yè)論文-網(wǎng)絡(luò)對(duì)戰(zhàn)游戲平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩28頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p>  網(wǎng)絡(luò)對(duì)戰(zhàn)游戲平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  摘要</b></p><p>  電腦游戲行業(yè)經(jīng)過(guò)二十年的發(fā)展,已經(jīng)成為與影視、音樂(lè)等并駕齊驅(qū)的

2、全球最重要的娛樂(lè)產(chǎn)業(yè)產(chǎn)業(yè)之一,其年銷售額超過(guò)好萊塢的全年收入。近年來(lái),隨著互聯(lián)網(wǎng)在全球范圍內(nèi)的發(fā)展和普及,聯(lián)網(wǎng)游戲作為一種娛樂(lè)手段,正以獨(dú)特的魅力吸引著越來(lái)越多的玩家。互聯(lián)網(wǎng)的出現(xiàn)為電腦游戲行業(yè)發(fā)展注入的新的活力,憑借信息雙向交流、速度快、不受空間限制等優(yōu)勢(shì),讓真人參與游戲,提高游戲的互動(dòng)性、仿真性和競(jìng)技性,使玩家在虛擬世界里可以發(fā)揮顯示世界無(wú)法展現(xiàn)的潛能,改變的單機(jī)版游戲固定、代辦、與機(jī)器對(duì)話的狀況。</p><p

3、>  本文介紹了該系統(tǒng)的開(kāi)發(fā)背景、意義及國(guó)內(nèi)外現(xiàn)狀,然后重點(diǎn)闡述利用C++、MFC、MySql開(kāi)發(fā)網(wǎng)絡(luò)游戲平臺(tái)系統(tǒng)的過(guò)程。包括設(shè)計(jì)與實(shí)現(xiàn)環(huán)節(jié),并且通過(guò)測(cè)試分析總結(jié)出該系統(tǒng)的功能特點(diǎn)。</p><p>  本系統(tǒng)主要完成以下幾個(gè)方面的功能,1.用戶管理:包括對(duì)用戶注冊(cè)、登錄和游戲信息的管理。2.游戲大廳:包括游戲房間和聊天的控制。3.五子棋游戲:游戲房間內(nèi)進(jìn)行的網(wǎng)絡(luò)對(duì)戰(zhàn)游戲。</p><p

4、>  關(guān)鍵字:網(wǎng)絡(luò)游戲平臺(tái)、五子棋、C++、MFC、MySql </p><p><b>  Abstract</b></p><p>  After two decades of development, the computer game industry has become one of the film, music and other enterta

5、inment industry to keep pace with the world's most important industry, with annual sales of more than Hollywood's annual income. The emergence of the Internet as a new vitality into the development of the compute

6、r game industry, with two-way exchange of information, speed, not restricted by space and other advantages, so that the real person involved in the game, to improve interactive</p><p>  This article describe

7、s the development of the system background, significance and status quo at home and abroad, and then focuses on the use of C + +, MFC, MySql development of online games platform system process. Design and Implementation

8、of links, and summed up by test and analysis features of the system.</p><p>  This system is mainly complete the following aspects,1.user management: including user registration, login and game information m

9、anagement. 2.game lobby: control include a games room and chat.3.Backgammon game: game room online play game.</p><p>  Keywords: Online game platform, Backgammon C++, MFC, MySql</p><p><b>

10、  目錄</b></p><p><b>  摘要2</b></p><p>  Abstract1</p><p><b>  目錄1</b></p><p><b>  1.緒論1</b></p><p>  1.1研究背景與意義

11、1</p><p>  1.2國(guó)內(nèi)外研究現(xiàn)狀1</p><p>  1.3 研究?jī)?nèi)容與目標(biāo)1</p><p>  2.理論技術(shù)基礎(chǔ)2</p><p><b>  2.1理論基礎(chǔ)2</b></p><p><b>  2.2技術(shù)基礎(chǔ)2</b></p>

12、<p>  2.2.1 C++語(yǔ)言簡(jiǎn)介2</p><p>  2.2.2 MFC類庫(kù)簡(jiǎn)介3</p><p>  2.2.3 MySQL數(shù)據(jù)庫(kù) 3</p><p>  2.2.4 面向?qū)ο蟪绦蛟O(shè)計(jì)簡(jiǎn)介3</p><p>  2.2.5 TCP與UDP協(xié)議簡(jiǎn)介3</p><p>  2.2.6

13、 SOCKET通信機(jī)制簡(jiǎn)介4</p><p>  3.系統(tǒng)的分析與設(shè)計(jì)4</p><p><b>  3.1需求分析4</b></p><p>  3.1.1可行性分析4</p><p>  3.1.2系統(tǒng)功能分析4</p><p><b>  3.2總體設(shè)計(jì)5</b&

14、gt;</p><p>  3.2.1網(wǎng)絡(luò)游戲平臺(tái)功能設(shè)計(jì)5</p><p>  3.2.2登錄注冊(cè)模塊設(shè)計(jì)5</p><p>  3.2.3游戲大廳模塊設(shè)計(jì)6</p><p>  3.2.4.五子棋游戲模塊設(shè)計(jì)6</p><p>  3.2.5.服務(wù)器模塊設(shè)計(jì)6</p><p>  

15、3.2.6.數(shù)據(jù)庫(kù)模塊設(shè)計(jì)6</p><p>  3.3系統(tǒng)詳細(xì)設(shè)計(jì)6</p><p>  3.3.1注冊(cè)登錄模塊詳細(xì)設(shè)計(jì)6</p><p>  3.3.2游戲大廳模塊詳細(xì)設(shè)計(jì)7</p><p>  3.3.3五子棋模塊詳細(xì)設(shè)計(jì)8</p><p>  3.3.4服務(wù)器模塊詳細(xì)設(shè)計(jì)9</p>&

16、lt;p>  3.3.5數(shù)據(jù)字典10</p><p>  3.3.6表結(jié)構(gòu)說(shuō)明11</p><p>  4.系統(tǒng)的實(shí)現(xiàn)11</p><p>  4.1用戶的注冊(cè)與登錄11</p><p>  4.1.1用戶登錄11</p><p>  4.1.2用戶注冊(cè)11</p><p> 

17、 4.2游戲大廳模塊12</p><p>  4.2.1更新游戲房間信息12</p><p>  4.2.2大廳內(nèi)玩家聊天12</p><p>  4.2.3顯示所有玩家信息13</p><p>  4.3五子棋游戲模塊13</p><p>  4.3.1繪制五子棋棋盤13</p><p

18、>  4.3.2繪制棋子14</p><p>  4.3.3判斷勝負(fù)14</p><p>  4.3.4悔棋15</p><p>  4.3.5求和15</p><p>  4.4服務(wù)器模塊16</p><p>  4.4.1接收客戶端連接16</p><p>  4.4.2驗(yàn)

19、證客戶端注冊(cè)和登錄信息17</p><p>  4.4.3 轉(zhuǎn)發(fā)聊天信息17</p><p>  4.4.4 轉(zhuǎn)發(fā)和處理游戲信息18</p><p>  4.4.5 通知更新房間信息和用戶信息18</p><p><b>  5.總結(jié)19</b></p><p><b>  致

20、謝20</b></p><p><b>  參考文獻(xiàn)21</b></p><p><b>  1.緒論</b></p><p>  1.1研究背景與意義</p><p>  在互聯(lián)網(wǎng)迅速發(fā)展的今天,互聯(lián)網(wǎng)應(yīng)用到了各行各業(yè)之中。網(wǎng)絡(luò)游戲與以往的游戲發(fā)展演變之路不同,他不再單單的表現(xiàn)為游

21、戲設(shè)備的差異,進(jìn)而體現(xiàn)了游戲傳輸載體以及游戲參與方式的變革。縱觀目前全球的游戲產(chǎn)業(yè),網(wǎng)絡(luò)游戲正走向成熟和深化,技術(shù)融合帶來(lái)游戲跨平臺(tái)發(fā)展,通過(guò)網(wǎng)絡(luò)、個(gè)人電腦、手持終端設(shè)備等都可以進(jìn)行互動(dòng)游戲,不同的設(shè)備可以通過(guò)網(wǎng)絡(luò)運(yùn)行相同的游戲。</p><p>  隨著互聯(lián)網(wǎng)的擴(kuò)張和基于互聯(lián)網(wǎng)應(yīng)用的發(fā)展,聯(lián)網(wǎng)游戲正以一種獨(dú)特的魅力吸引著越來(lái)越多的玩家,尤其是五子棋游戲更是得到廣大玩家的青睞。因此,開(kāi)發(fā)基于C/S模式的網(wǎng)絡(luò)五子棋

22、游戲具有重要的顯示意義。</p><p>  1.2國(guó)內(nèi)外研究現(xiàn)狀</p><p>  電腦游戲自1972年由威爾?克勞舍(Will?Crowther)編寫的一段簡(jiǎn)單的FORTRAN程序開(kāi)始。由于網(wǎng)絡(luò)游戲需要較大量運(yùn)算以及網(wǎng)絡(luò)傳輸容量,因此早期網(wǎng)絡(luò)游戲通常以純文字訊息作為呈現(xiàn)方式,重視玩家與玩家間的互動(dòng),而非聲光效果。 隨著電腦硬件及軟件技術(shù)的進(jìn)步,網(wǎng)絡(luò)游戲服務(wù)器逐漸出現(xiàn)在小型的工作站服務(wù)

23、器,并且受到學(xué)生族群的歡迎,其中尤以MUD最具代表性。與此同時(shí),傳統(tǒng)的單機(jī)游戲也開(kāi)始出現(xiàn)利用局域網(wǎng)路進(jìn)行小規(guī)模連線(2-8人)的形式,但多數(shù)以射擊或即時(shí)戰(zhàn)略游戲?yàn)橹?,這類型網(wǎng)絡(luò)游戲進(jìn)行時(shí),需要交換數(shù)量驚人的同步訊息,因此通常較適合高速的局域網(wǎng)路,難以實(shí)現(xiàn)人數(shù)規(guī)模更龐大的網(wǎng)絡(luò)游戲。1990年代中期,游戲產(chǎn)業(yè)開(kāi)始采用類似MUD架構(gòu)的技術(shù)發(fā)展網(wǎng)絡(luò)游戲。此類架構(gòu)不同于依賴高速局域網(wǎng)路連線的射擊或即時(shí)戰(zhàn)略游戲,取而代之的是借由最佳化的通訊協(xié)定及復(fù)

24、雜的預(yù)測(cè)式算法,來(lái)達(dá)成網(wǎng)絡(luò)游戲所需的資訊同步。這類型的游戲與MUD一樣,需要居中運(yùn)算的游戲服務(wù)器,并且能夠?qū)崿F(xiàn)萬(wàn)人以上同時(shí)連線進(jìn)行游戲的規(guī)模。這種類型的游戲后來(lái)被統(tǒng)稱為大型多人線上游戲。大型多人線上游戲由于玩家人數(shù)和規(guī)模龐大的關(guān)系,通常屬于角色扮演游戲類型</p><p>  就國(guó)內(nèi)的發(fā)展來(lái)看,最近些年內(nèi)的游戲公司如雨后春筍般的成立,所開(kāi)發(fā)或代理的網(wǎng)絡(luò)游戲更是不勝枚舉。國(guó)內(nèi)的游戲娛樂(lè)產(chǎn)業(yè)正處于起步階段,特點(diǎn)表現(xiàn)為

25、:第一,他是一種文化的傳播。娛樂(lè)產(chǎn)業(yè)可以潛移默化地改變?nèi)伺c人的觀念。第二,網(wǎng)絡(luò)游戲加強(qiáng)了人與人的溝通。第三,網(wǎng)絡(luò)游戲具有一定的教育意義。</p><p>  1.3 研究?jī)?nèi)容與目標(biāo)</p><p>  本網(wǎng)絡(luò)游戲?qū)?zhàn)平臺(tái)主要包括用戶管理、平臺(tái)管理和五子棋游戲三個(gè)部分,本次研究的內(nèi)容為實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)對(duì)戰(zhàn)平臺(tái)系統(tǒng),系統(tǒng)包括有用戶的登錄和注冊(cè),游戲房間的管理和每個(gè)房間內(nèi)進(jìn)行的游戲。系統(tǒng)分為客戶端和

26、服務(wù)器端,客戶端主要是玩家發(fā)送游戲和聊天信息并處理服務(wù)器到本地的各種消息,服務(wù)器端主要是接收客戶端請(qǐng)求,并對(duì)客戶端的請(qǐng)求進(jìn)行相應(yīng)的處理。</p><p><b>  2.理論技術(shù)基礎(chǔ)</b></p><p><b>  2.1理論基礎(chǔ)</b></p><p>  網(wǎng)絡(luò)游戲:英文名稱為Online Game,又稱 “在線游戲

27、”,簡(jiǎn)稱“網(wǎng)游”。指以互聯(lián)網(wǎng)為傳輸媒介,以游戲運(yùn)營(yíng)商服務(wù)器和用戶計(jì)算機(jī)為處理終端,以游戲客戶端軟件為信息交互窗口的旨在實(shí)現(xiàn)娛樂(lè)、休閑、交流和取得虛擬成就的具有可持續(xù)性的個(gè)體性多人在線游戲。網(wǎng)絡(luò)游戲區(qū)別與單機(jī)游戲而言的,是指玩家必須通過(guò)互聯(lián)網(wǎng)連接來(lái)進(jìn)行多人游戲。 一般指由多名玩家通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)在虛擬的環(huán)境下對(duì)人物角色及場(chǎng)景按照一定的規(guī)則進(jìn)行操作以達(dá)到娛樂(lè)和互動(dòng)目的的游戲產(chǎn)品集合。</p><p>  游戲?qū)?zhàn)平臺(tái)是

28、對(duì)Internet用戶提供多人電腦游戲聯(lián)機(jī)服務(wù),它可以讓在互聯(lián)網(wǎng)的游戲玩家輕松的通過(guò)Internet進(jìn)行游戲,就如果在同一個(gè)局域網(wǎng)中一樣。平臺(tái)通過(guò)網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換技術(shù),將互聯(lián)網(wǎng)上遠(yuǎn)隔千里的玩家緊緊的聯(lián)系到一起,并且還提供給用戶實(shí)時(shí)的交流與溝通。</p><p>  五子棋是一種兩人對(duì)弈的純策略型棋類游戲,棋具與圍棋通用,是起源于中國(guó)古代的傳統(tǒng)黑白棋種之一。發(fā)展于日本,流行于歐美。容易上手,老少皆宜,而且趣味橫生,引人

29、入勝;不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。</p><p><b>  2.2技術(shù)基礎(chǔ)</b></p><p>  2.2.1 C++語(yǔ)言簡(jiǎn)介</p><p>  C++是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語(yǔ)言。它支持過(guò)程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。<

30、/p><p>  C++是由C發(fā)展而來(lái)的, 與C兼容。用C語(yǔ)言寫的程序基本上可以不加修改地用于C++, 從C++的名字可以看出它是C的超越和集中。C++既可用于面向過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì), 又可用于面向?qū)ο蟮某绦蛟O(shè)計(jì), 是一種功能強(qiáng)大的混合型的程序設(shè)計(jì)語(yǔ)言。</p><p>  C++對(duì)C的“增強(qiáng)”,表現(xiàn)在六個(gè)方面:</p><p> ?。?) 類型檢查更為嚴(yán)格。<

31、/p><p>  (2) 增加了面向?qū)ο蟮臋C(jī)制。</p><p> ?。?)增加了泛型編程的機(jī)制(template)</p><p>  (4)增加了異常處理</p><p> ?。?)增加了運(yùn)算符重載</p><p>  (6)增加了標(biāo)準(zhǔn)模板庫(kù)(STL)</p><p>  面向?qū)ο蟪绦蛟O(shè)計(jì),是針

32、對(duì)開(kāi)發(fā)較大規(guī)模的程序而提出來(lái)的,目的是提高軟件開(kāi)發(fā)的效率。不要把面向?qū)ο蠛兔嫦蜻^(guò)程對(duì)立起來(lái), 面向?qū)ο蠛兔嫦蜻^(guò)程不是矛盾的,而是各有用途、互為補(bǔ)充的。</p><p>  2.2.2 MFC類庫(kù)簡(jiǎn)介</p><p>  MFC(Microsoft Foundation Classes),是一個(gè)微軟公司提供的類庫(kù)(class libraries),以C++類的形式封裝了Windows的API

33、,并且包含一個(gè)應(yīng)用程序框架,以減少應(yīng)用程序開(kāi)發(fā)人員的工作量。其中包含的類包含大量Windows句柄封裝類和很多Windows的內(nèi)建控件和組件的封裝類。</p><p>  2.2.3 MySQL數(shù)據(jù)庫(kù) </p><p>  MySQL是最受歡迎的開(kāi)源SQL數(shù)據(jù)庫(kù)管理系統(tǒng),它由MySQL AB開(kāi)發(fā)、發(fā)布和支持。MySQL AB是一家基于MySQL開(kāi)發(fā)人員的商業(yè)公司,它是一家使用了一

34、種成功的商業(yè)模式來(lái)結(jié)合開(kāi)源價(jià)值和方法論的第二代開(kāi)源公司。MySQL是MySQL AB的注冊(cè)商標(biāo)。MySQL是一個(gè)快速的、多線程、多用戶和健壯的SQL數(shù)據(jù)庫(kù)服務(wù)器。MySQL服務(wù)器支持關(guān)鍵任務(wù)、重負(fù)載生產(chǎn)系統(tǒng)的使用,也可以將它嵌入到一個(gè)大配置(mass-deployed)的軟件中去。</p><p>  2.2.4 面向?qū)ο蟪绦蛟O(shè)計(jì)簡(jiǎn)介</p><p>  面向?qū)ο蟪绦蛟O(shè)計(jì)(英語(yǔ):Objec

35、t-oriented programming,縮寫:OOP),指一種程序設(shè)計(jì)范型,同時(shí)也是一種程序開(kāi)發(fā)的方法。對(duì)象指的是類的集合。它將對(duì)象作為程序的基本單元,將程序和數(shù)據(jù)封裝其中,以提高軟件的重用性、靈活性和擴(kuò)展性。</p><p>  面向?qū)ο蟪绦蛟O(shè)計(jì)可以看作一種在程序中包含各種獨(dú)立而又互相調(diào)用的對(duì)象的思想,這與傳統(tǒng)的思想剛好相反:傳統(tǒng)的程序設(shè)計(jì)主張將程序看作一系列函數(shù)的集合,或者直接就是一系列對(duì)電腦下達(dá)的指令

36、。面向?qū)ο蟪绦蛟O(shè)計(jì)中的每一個(gè)對(duì)象都應(yīng)該能夠接受數(shù)據(jù)、處理數(shù)據(jù)并將數(shù)據(jù)傳達(dá)給其它對(duì)象,因此它們都可以被看作一個(gè)小型的“機(jī)器”,即對(duì)象。</p><p>  2.2.5 TCP與UDP協(xié)議簡(jiǎn)介</p><p>  TCP協(xié)議是端點(diǎn)與端點(diǎn)之間建立持續(xù)的連接而進(jìn)行通信。建立連接后,發(fā)送端將發(fā)送的數(shù)據(jù)以字節(jié)流的方式發(fā)送出去;接收端則按序列順序?qū)?shù)據(jù)整理好,數(shù)據(jù)在需要時(shí)可以重新發(fā)送。TCP協(xié)議具有可靠

37、性和有序性,并且以字節(jié)流的方式發(fā)送數(shù)據(jù),是一種面向連接的協(xié)議。</p><p>  UDP協(xié)議是一種無(wú)連接的傳輸協(xié)議。利用UDP協(xié)議進(jìn)行數(shù)據(jù)傳輸時(shí),首先需要將要傳輸?shù)臄?shù)據(jù)定義成數(shù)據(jù)報(bào)(Datagram),在數(shù)據(jù)報(bào)中知名數(shù)據(jù)所有達(dá)到的端點(diǎn)(Socket,主機(jī)地址和端口號(hào)),然后再將數(shù)據(jù)報(bào)發(fā)送出去。這種傳輸方式是無(wú)序的,也不能確保絕對(duì)的安全可靠,但他很簡(jiǎn)單而且具有比較高的效率。</p><p>

38、;  2.2.6 SOCKET通信機(jī)制簡(jiǎn)介</p><p>  SOCKET是網(wǎng)絡(luò)上運(yùn)行的兩個(gè)程序之間雙向通信鏈路的終端點(diǎn),他是TCP和UDP的基礎(chǔ)。一個(gè)SOCKET被綁定到一個(gè)端口號(hào)上,這樣傳輸層能后識(shí)別數(shù)據(jù)要發(fā)送到那個(gè)應(yīng)用程序。Socket連接可以分成三個(gè)基本的類型,這三個(gè)類型是:</p><p> ?。?)客戶端連接 客戶端連接是一個(gè)本地系統(tǒng)的客戶端socket與一個(gè)遠(yuǎn)程系統(tǒng)

39、上的服務(wù)端Socket連接??蛻舳诉B接由客戶端Socket開(kāi)始。首先,客戶端 Socket必須描述它想連接到的服務(wù)端Socket. 接著客戶端socket查找服務(wù)端socket,當(dāng)找到服務(wù)器時(shí),就要求連接。服務(wù)端socket可能不能完成正確的連接。服務(wù)器sockets維持一個(gè) 客戶端請(qǐng)求隊(duì)列,在他們有時(shí)間時(shí)完成連接。當(dāng)服務(wù)端socket接受客戶端連接,服務(wù)端socket 將向它想連接的客戶socket發(fā)送一個(gè)完整的描述,客戶端的連接完

40、成。</p><p> ?。?)傾聽(tīng)連接 服務(wù)器 socket不會(huì)去定位客戶端,代替的,他們形成被動(dòng)的,"半連接"狀態(tài),傾聽(tīng)來(lái)自客戶端的請(qǐng)求。服務(wù)器 sockets形成一個(gè)隊(duì)列,存放 它們聽(tīng)到的連接請(qǐng)求。這個(gè)隊(duì)列記錄著客戶端連接請(qǐng)求就象他們已連接進(jìn)來(lái)一樣。當(dāng)服務(wù)器sockets同意客戶連接請(qǐng)求時(shí),它形成一個(gè)新的socket去連 接客戶端,因此這個(gè)傾聽(tīng)連接能保持開(kāi)放狀態(tài)允許其他客戶端請(qǐng)求

41、。</p><p> ?。?)服務(wù)端連接 當(dāng)傾聽(tīng)socket同意一個(gè)客戶端請(qǐng)求時(shí),服務(wù)器端socket形成一個(gè)服務(wù)器連接。當(dāng)服務(wù)器端同意連接時(shí),向客戶端發(fā)送一個(gè)服務(wù)端socket描述以完 成連接,當(dāng)客戶端socket收到這個(gè)描述時(shí)這個(gè)連接得到確認(rèn),連接完成。一但連接到客戶端的Socket完成,服務(wù)端連接就不能識(shí)別從一個(gè)客戶端來(lái)的連 接。末端雙方有同樣的能力去接收同樣的事件類型。只有傾聽(tīng)(listening)

42、連接是根本不同的,它只有一個(gè)單一的末端。</p><p>  3.系統(tǒng)的分析與設(shè)計(jì)</p><p><b>  3.1需求分析</b></p><p>  3.1.1可行性分析</p><p> ?。?)經(jīng)濟(jì)可行性:經(jīng)濟(jì)可行性包括兩個(gè)方面的內(nèi)容:一是某一備選方案占有和使用經(jīng)濟(jì)資源的可能性,進(jìn)而實(shí)現(xiàn)政策目標(biāo)的可能性;二是實(shí)

43、施某一政策方案所需花費(fèi)的成本和取得的收益。作為畢業(yè)設(shè)計(jì),我們所受到的效益,應(yīng)該說(shuō)是受益終生,花費(fèi)則寥寥無(wú)幾。</p><p>  (2)技術(shù)可行性:技術(shù)可行性是指決策的技術(shù)和決策方案的技術(shù)不能突破組織所擁有的或有關(guān)人員所掌握的技術(shù)資源條件的邊界。整個(gè)系統(tǒng)使用微軟官方的MFC標(biāo)準(zhǔn)類庫(kù),遵守面向?qū)ο缶幊桃?guī)范。</p><p> ?。?)法律可行性:本系統(tǒng)不以盈利為目的,而且使用的免費(fèi)的C++語(yǔ)

44、言和MySql數(shù)據(jù)庫(kù),不存在違反法律問(wèn)題。</p><p>  (4)操作可行性:本系統(tǒng)操作簡(jiǎn)單,游戲玩法多樣,運(yùn)行環(huán)境要求低。</p><p>  3.1.2系統(tǒng)功能分析</p><p>  本系統(tǒng)主要包括五子棋游戲、游戲平臺(tái)和服務(wù)器三個(gè)模塊:</p><p>  (1)五子棋游戲模塊主要實(shí)現(xiàn)的功能是可以從游戲大廳啟動(dòng)。兩個(gè)玩家可以進(jìn)行游戲

45、,其它玩家允許觀看游戲。同一游戲室中的所有玩家可以進(jìn)行文字聊天,游戲界面中要求顯示所有玩家的相關(guān)信息??梢跃哂星蠛?、悔棋功能。</p><p>  (2)游戲大廳模塊游戲大廳包括用戶的注冊(cè)、登錄等功能。游戲大廳應(yīng)可以查看當(dāng)前已登錄用戶的所有信息及其狀態(tài)(空閑、正在游戲、正在觀看游戲),游戲大廳下可設(shè)游戲室,每個(gè)游戲室進(jìn)行一盤五子棋游戲??梢圆榭锤鱾€(gè)游戲室的狀態(tài)(正在游戲、等待游戲、空閑),可以查看游戲室中的玩家的

46、信息。對(duì)于空閑的游戲室玩家可以進(jìn)入等待其它玩家,等待游戲狀態(tài)的游戲室玩家可以進(jìn)入開(kāi)始游戲,正在游戲的游戲室玩家只能進(jìn)入觀看游戲。</p><p> ?。?)服務(wù)器模塊主要實(shí)現(xiàn)包括接受客戶端請(qǐng)求和數(shù)據(jù),儲(chǔ)存每個(gè)用戶的游戲成績(jī),即總游戲局?jǐn)?shù),勝負(fù)平的局?jǐn)?shù),勝率等。</p><p><b>  3.2總體設(shè)計(jì)</b></p><p>  3.2.1網(wǎng)

47、絡(luò)游戲平臺(tái)功能設(shè)計(jì)</p><p>  網(wǎng)絡(luò)游戲平臺(tái)系統(tǒng)具有用戶注冊(cè)和登錄功能,用戶登錄成功后,可以進(jìn)行單人游戲和多人游戲。在多人游戲中有玩家和觀看者,平臺(tái)具有儲(chǔ)存用戶相關(guān)戰(zhàn)績(jī)信息的功能。網(wǎng)絡(luò)游戲平臺(tái)模塊如圖3-1:</p><p>  圖3-2.系統(tǒng)模塊圖</p><p>  3.2.2登錄注冊(cè)模塊設(shè)計(jì)</p><p>  網(wǎng)絡(luò)游戲平臺(tái)登錄

48、注冊(cè)模塊主要包括注冊(cè)和登錄功能。注冊(cè)用戶時(shí)如果用戶名存在則注冊(cè)失敗,返回重新注冊(cè),用戶名不存在時(shí)則注冊(cè)成功,直接進(jìn)入到游戲平臺(tái)界面。用戶登錄時(shí)如果用戶名密碼正確則進(jìn)去到游戲平臺(tái)界面,否則重新登錄。</p><p>  3.2.3游戲大廳模塊設(shè)計(jì)</p><p>  游戲大廳主要包括多人游戲、單人游戲、聊天三個(gè)部分。每個(gè)游戲房間內(nèi)有一局多人游戲,多人游戲中包括玩家和觀看者兩種角色,在同一個(gè)游

49、戲房間的所有玩家可以進(jìn)行聊天,一局游戲結(jié)束之后相關(guān)勝負(fù)戰(zhàn)績(jī)將儲(chǔ)存到服務(wù)器端,在游戲大廳內(nèi)需要顯示本人和所有在線玩家的信息。</p><p>  3.2.4.五子棋游戲模塊設(shè)計(jì)</p><p>  五子棋游戲模塊主要是對(duì)五子棋游戲的棋盤和棋子進(jìn)行繪制,在玩家下棋后可以悔棋和求和,游戲具有判斷游戲勝負(fù)的功能。五子棋游戲單人模式中,對(duì)戰(zhàn)AI的下棋算法為當(dāng)對(duì)方有三連及以上時(shí)便阻礙,否則增加自己的布

50、局。判斷勝負(fù)算法為在最后一個(gè)下棋位置為中心向周圍的方向輻射來(lái)計(jì)算。</p><p>  3.2.5.服務(wù)器模塊設(shè)計(jì)</p><p>  服務(wù)器接收客戶端發(fā)送的聊天信息,公聊信息發(fā)送到所有客戶端,私聊信息發(fā)送到指定客戶端。服務(wù)器接收客戶端發(fā)送的游戲信息,對(duì)于不同的游戲信息有不同的處理。服務(wù)器具有對(duì)各客戶端發(fā)送通知的功能。</p><p>  3.2.6.數(shù)據(jù)庫(kù)模塊設(shè)計(jì)

51、</p><p>  網(wǎng)絡(luò)游戲平臺(tái)數(shù)據(jù)庫(kù)模塊設(shè)計(jì)主要是對(duì)用戶信息管理數(shù)據(jù)表。</p><p>  user表{用戶名,密碼,勝利局?jǐn)?shù),失敗局?jǐn)?shù),平局局?jǐn)?shù)}</p><p>  user表的E-R圖如圖3-2:</p><p>  圖3-2.user表E-R圖</p><p><b>  3.3系統(tǒng)詳細(xì)設(shè)計(jì)&l

52、t;/b></p><p>  3.3.1注冊(cè)登錄模塊詳細(xì)設(shè)計(jì)</p><p>  注冊(cè)登錄界面詳細(xì)設(shè)計(jì)主要包括驗(yàn)證注冊(cè)信息和驗(yàn)證登錄信息兩個(gè)部分。</p><p><b>  驗(yàn)證注冊(cè)信息</b></p><p>  驗(yàn)證注冊(cè)信息主要包括判斷用戶名是否存在、兩次輸入密碼是否相同。驗(yàn)證注冊(cè)信息成功后進(jìn)入游戲平臺(tái)主界

53、面,驗(yàn)證注冊(cè)信息失敗重新注冊(cè)。</p><p><b>  驗(yàn)證登錄信息</b></p><p>  驗(yàn)證登錄信息主要包括判斷用戶名和密碼是否正確。驗(yàn)證登錄信息成功后進(jìn)入游戲平臺(tái)主界面,驗(yàn)證登錄信息失敗后重新登錄。</p><p>  網(wǎng)絡(luò)游戲平臺(tái)登陸注冊(cè)模塊中的主要模塊結(jié)構(gòu)如下圖3-3所示:</p><p>  圖3-

54、3.登錄注冊(cè)模塊圖</p><p>  3.3.2游戲大廳模塊詳細(xì)設(shè)計(jì)</p><p>  游戲大廳模塊詳細(xì)設(shè)計(jì)主要包括更新游戲房間信息、大廳內(nèi)玩家聊天、顯示本人信息、顯示其他玩家信息。</p><p><b>  更新游戲房間信息</b></p><p>  根據(jù)服務(wù)器端存儲(chǔ)的各個(gè)房間的游戲狀態(tài)(空閑、等待游戲、正在游

55、戲)更新本地游戲房間的狀態(tài)。</p><p><b>  大廳內(nèi)玩家聊天</b></p><p>  所有在大廳里面的玩家可以進(jìn)行聊天,聊天分為公聊和私聊。</p><p><b>  顯示本人信息</b></p><p>  在游戲大廳顯示本人的信息,包括用戶名、勝場(chǎng)數(shù)、負(fù)場(chǎng)數(shù)、平局?jǐn)?shù)、勝率。&l

56、t;/p><p><b>  顯示其他玩家信息</b></p><p>  在游戲大廳界面顯示其他玩家的信息,包括用戶名、勝場(chǎng)數(shù)、負(fù)場(chǎng)數(shù)、平局?jǐn)?shù)、勝率。</p><p>  網(wǎng)絡(luò)游戲平臺(tái)游戲大廳模塊設(shè)計(jì)圖如圖3-4。</p><p>  圖3-4.游戲大廳模塊</p><p>  3.3.3五子棋模塊

57、詳細(xì)設(shè)計(jì)</p><p>  五子棋模塊詳細(xì)設(shè)計(jì)主要包括繪制游戲棋盤、判斷下棋位置、繪制棋子、判斷勝負(fù)關(guān)系。</p><p><b>  繪制游戲棋盤</b></p><p>  繪制一個(gè)15*15大小的棋盤。</p><p><b>  判斷下棋位置</b></p><p>

58、;  根據(jù)鼠標(biāo)點(diǎn)擊的坐標(biāo)計(jì)算下棋的位置,如果坐標(biāo)不在棋盤內(nèi)部,則不繪制棋子。</p><p><b>  繪制棋子</b></p><p>  如果鼠標(biāo)點(diǎn)擊的位置經(jīng)過(guò)判斷之后位于棋盤內(nèi),繪制相應(yīng)顏色的棋子。</p><p><b>  判斷勝負(fù)關(guān)系</b></p><p>  每下完一個(gè)棋子之后根據(jù)

59、當(dāng)前所有棋子的位置判斷是否分出勝負(fù),如果分出勝負(fù),則不在允許下棋,否則繼續(xù)游戲。</p><p>  網(wǎng)絡(luò)游戲平臺(tái)五子棋游戲模塊設(shè)計(jì)如圖3-5。</p><p>  圖3-5.五子棋游戲模塊設(shè)計(jì)</p><p>  3.3.4服務(wù)器模塊詳細(xì)設(shè)計(jì)</p><p>  服務(wù)器模塊詳細(xì)設(shè)計(jì)主要包括接收客戶端連接、驗(yàn)證客戶端注冊(cè)和登錄信息、轉(zhuǎn)發(fā)聊天信

60、息、轉(zhuǎn)發(fā)游戲信息、通知更新房間信息、通知更新用戶信息、用戶退出平臺(tái)管理、用戶進(jìn)入和退出游戲房間管理、玩家戰(zhàn)績(jī)管理。</p><p><b>  接收客戶端連接</b></p><p>  服務(wù)器端可以一直接收不同客戶端的連接請(qǐng)求。</p><p>  驗(yàn)證客戶端注冊(cè)和登錄信息</p><p>  對(duì)客戶端發(fā)送的注冊(cè)和登錄

61、信息進(jìn)行分別處理。</p><p><b>  轉(zhuǎn)發(fā)聊天信息</b></p><p>  對(duì)客戶端發(fā)送的公聊和私聊信息進(jìn)行相應(yīng)的轉(zhuǎn)發(fā)。對(duì)游戲房間內(nèi)的公聊和私聊信息進(jìn)行相應(yīng)的轉(zhuǎn)發(fā)。</p><p><b>  轉(zhuǎn)發(fā)和處理游戲信息</b></p><p>  客戶端發(fā)送的游戲信息對(duì)位于游戲房間內(nèi)的其他玩

62、家轉(zhuǎn)發(fā),并對(duì)游戲信息進(jìn)行處理。</p><p>  通知更新房間信息和用戶信息</p><p>  服務(wù)器端定時(shí)通知所有在線客戶端更新房間信息和所有玩家信息。</p><p>  用戶進(jìn)入和退出游戲房間管理</p><p>  用戶進(jìn)入和退出游戲房間后服務(wù)器端要對(duì)所有相應(yīng)游戲房間內(nèi)的其他玩家進(jìn)行通知,并且根據(jù)游戲房間內(nèi)的游戲狀態(tài)更新每個(gè)客戶端

63、的游戲房間信息。</p><p>  網(wǎng)絡(luò)游戲平臺(tái)服務(wù)器模塊設(shè)計(jì)如圖3-6。</p><p>  圖3-6.服務(wù)器模塊圖</p><p><b>  3.3.5數(shù)據(jù)字典</b></p><p>  本系統(tǒng)的數(shù)據(jù)字典如下: </p><p>  數(shù)據(jù)文件:用戶信息表</p><p

64、>  文件組成:id、用戶名、密碼、勝場(chǎng)數(shù)、負(fù)場(chǎng)數(shù)、平局?jǐn)?shù)</p><p><b>  數(shù)據(jù)項(xiàng):id</b></p><p><b>  數(shù)據(jù)類型:整型數(shù)據(jù)</b></p><p><b>  長(zhǎng)度:10</b></p><p><b>  數(shù)據(jù)項(xiàng):用戶名<

65、;/b></p><p><b>  數(shù)據(jù)類型:可變字符</b></p><p><b>  長(zhǎng)度:10</b></p><p><b>  數(shù)據(jù)項(xiàng):密碼</b></p><p><b>  數(shù)據(jù)類型:可變字符</b></p><

66、p><b>  長(zhǎng)度:16</b></p><p><b>  數(shù)據(jù)項(xiàng):勝利局?jǐn)?shù)</b></p><p><b>  數(shù)據(jù)類型:整型數(shù)據(jù)</b></p><p><b>  長(zhǎng)度:10</b></p><p><b>  數(shù)據(jù)項(xiàng):失敗局?jǐn)?shù)&

67、lt;/b></p><p><b>  數(shù)據(jù)類型:整型數(shù)據(jù)</b></p><p><b>  長(zhǎng)度:10</b></p><p><b>  數(shù)據(jù)項(xiàng):平局局?jǐn)?shù)</b></p><p><b>  數(shù)據(jù)類型:整型數(shù)據(jù)</b></p>

68、<p><b>  長(zhǎng)度:10</b></p><p>  3.3.6表結(jié)構(gòu)說(shuō)明</p><p>  根據(jù)邏輯關(guān)系模型可直接設(shè)計(jì)基于某種數(shù)據(jù)庫(kù)管理系統(tǒng)支持的物理結(jié)構(gòu),我們知道關(guān)系數(shù)據(jù)庫(kù)是由表構(gòu)成的,依據(jù)用戶信息在數(shù)據(jù)庫(kù)中建立相應(yīng)的表。表結(jié)構(gòu)如表1所示。</p><p>  表1.學(xué)生信息數(shù)據(jù)表</p><p>

69、<b>  4.系統(tǒng)的實(shí)現(xiàn)</b></p><p>  4.1用戶的注冊(cè)與登錄</p><p><b>  4.1.1用戶登錄</b></p><p>  本系統(tǒng)在登錄界面可以輸入主機(jī)地址、用戶名、密碼。點(diǎn)擊登錄按鈕進(jìn)行登錄,成功后進(jìn)去游戲平臺(tái)界面,點(diǎn)擊取消按鈕取消登錄操作,點(diǎn)擊注冊(cè)按鈕彈出注冊(cè)界面。登陸界面如下圖4-1所

70、示:</p><p><b>  圖4-1.登陸界面</b></p><p><b>  4.1.2用戶注冊(cè)</b></p><p>  如果用戶沒(méi)有登陸賬號(hào)密碼,點(diǎn)擊登錄界面的注冊(cè)按鈕彈出注冊(cè)界面。注冊(cè)界面中可以輸入服務(wù)器IP、昵稱、密碼、密碼確認(rèn)。兩次密碼輸入必須相同才可以進(jìn)行注冊(cè),注冊(cè)成功后跳轉(zhuǎn)到游戲平臺(tái)界面。注冊(cè)界

71、面如下圖4-2:</p><p><b>  圖4-2.用戶注冊(cè)</b></p><p><b>  4.2游戲大廳模塊</b></p><p>  4.2.1更新游戲房間信息</p><p>  客戶端要接收服務(wù)器定時(shí)發(fā)送的房間更新信息對(duì)所有房間信息進(jìn)行更新,游戲平臺(tái)內(nèi)所有房間有三種狀態(tài):房間空閑

72、、正在等待、正在游戲。沒(méi)有玩家在游戲房間時(shí),房間狀態(tài)為空閑,有一名玩家進(jìn)入后房間狀態(tài)為正在等待。兩名玩家以上進(jìn)入房間后房間狀態(tài)為正在游戲。更新房間狀態(tài)如下圖4-3:</p><p>  圖4-3.房間更新?tīng)顟B(tài)</p><p>  4.2.2大廳內(nèi)玩家聊天</p><p>  游戲平臺(tái)提供了聊天功能,可以選擇“所有人”進(jìn)行公聊,也可以選擇特定玩家進(jìn)行私聊。聊天界面如圖

73、4-4。</p><p>  圖4-4.管理員查詢學(xué)生</p><p>  4.2.3顯示所有玩家信息</p><p>  游戲大廳內(nèi)可以顯示本人和其他在線玩家的信息。玩家信息包括:用戶名、狀態(tài)、勝場(chǎng)、負(fù)場(chǎng)、平場(chǎng)、勝率。玩家狀態(tài)包括:游戲和大廳。顯示在線玩家信息界面如下圖4-5:</p><p>  圖4-5.在線玩家信息界面</p&g

74、t;<p>  顯示本人信息界面如下圖4-6:</p><p>  圖4-6.本人信息界面</p><p>  4.3五子棋游戲模塊</p><p>  4.3.1繪制五子棋棋盤</p><p>  繪制一個(gè)15*15的棋盤,背景顏色為RGB(175,255,180)到RGB(115,220,200)的漸變顏色,繪制了天元等點(diǎn)。

75、棋盤界面如圖4-7。</p><p><b>  圖4-7.棋盤界面</b></p><p><b>  4.3.2繪制棋子</b></p><p>  根據(jù)鼠標(biāo)點(diǎn)擊位置判斷位置是否在棋盤內(nèi),如果判斷結(jié)果在棋盤內(nèi),則在指定位置繪制指定顏色的棋子,否則不進(jìn)行處理。下棋界面如圖4-8。</p><p>

76、<b>  圖4-8.下棋界面</b></p><p><b>  4.3.3判斷勝負(fù)</b></p><p>  每次下一個(gè)棋子之后判斷勝負(fù),以當(dāng)前棋子為中心判斷它的所有方向內(nèi)是否有五個(gè)相同顏色棋子連成一線,如果存在五個(gè)相同顏色棋子連成一線則分出勝負(fù),客戶端發(fā)送勝負(fù)關(guān)系到服務(wù)器,否則繼續(xù)下棋直到分出勝負(fù)。判斷勝負(fù)界面如圖4-9。</p&g

77、t;<p>  圖4-9.判斷勝負(fù)界面</p><p><b>  4.3.4悔棋</b></p><p>  在下棋之后可以點(diǎn)擊悔棋按鈕悔棋一步,輪到本人下棋之后不能進(jìn)行悔棋??蛻舳嘶谄搴笙蚍?wù)器發(fā)送悔棋消息代碼如下:</p><p>  Message msObj;</p><p>  memset(&

78、amp;msObj,0,sizeof(Message));</p><p>  msObj.iType = INGAME;</p><p>  msObj.iSubType = REGRET;</p><p>  CString strTemp = theApp.m_skMainSocket.GetUserName();</p><p>  

79、int iLen = strTemp.GetLength();</p><p>  lstrcpy(msObj.strName,strTemp.GetBuffer(iLen));</p><p>  CString piecePos;</p><p>  piecePos.Format(_T("%ld|%ld"),lastChess.x,last

80、Chess.y);</p><p>  lstrcpy(msObj.strContent ,piecePos.GetBuffer(iLen));</p><p>  theApp.m_skMainSocket.Send(&msObj,sizeof(Message));</p><p>  m_isTurn = ISTURN;</p><p

81、>  m_isCanRegret = DONOTREGRET;</p><p><b>  4.3.5求和</b></p><p>  玩家可以點(diǎn)擊求和按鈕進(jìn)行求和,對(duì)方同意后本局游戲結(jié)束,客戶端發(fā)送游戲平局消息到服務(wù)器,下一局游戲重新開(kāi)始,否則繼續(xù)進(jìn)行本局游戲。求和界面如圖4-10。</p><p>  圖4-10.求和界面</p

82、><p><b>  4.4服務(wù)器模塊</b></p><p>  4.4.1接收客戶端連接</p><p>  服務(wù)器端創(chuàng)建SOCKET能夠隨時(shí)接收客戶端的連接請(qǐng)求。服務(wù)端程序需要判斷指定端口是否可用,如果可用創(chuàng)建SOCKET。服務(wù)器端創(chuàng)建SOCKET并監(jiān)聽(tīng)相應(yīng)的端口的代碼如下:</p><p>  if (m_port

83、< 1024){</p><p>  AfxMessageBox("請(qǐng)輸入用戶端口號(hào)");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  else if (m_port > 66000){</p&

84、gt;<p>  AfxMessageBox("此端口不提供使用");</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else{</b></p><p>  if(m_p

85、ort > 1024 && m_port <= 66000){</p><p>  if(!m_ServerSocket.Create(m_port)){</p><p>  AfxMessageBox("創(chuàng)建端口失敗!");</p><p><b>  return;</b></p>

86、<p><b>  }</b></p><p>  if(!m_ServerSocket.Listen()){</p><p>  AfxMessageBox("監(jiān)聽(tīng)失敗!");</p><p><b>  return;</b></p><p><b>

87、  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  4.4.2驗(yàn)證客戶端注冊(cè)和登錄信息</p><p>  玩家從客戶端的登錄和注冊(cè)信息由服務(wù)器端完成驗(yàn)證,登錄信息驗(yàn)證成功后登錄到游戲大廳,失敗退出登錄。注冊(cè)信息驗(yàn)證成功后登

88、錄到游戲平臺(tái)界面,失敗重新注冊(cè)。服務(wù)器端登錄信息驗(yàn)證程序主要代碼如下:</p><p>  CString cmdStr;</p><p>  cmdStr.Format("SELECT count(*) as COUNT_NAME FROM `user` WHERE name = '%s' AND password = '%s';",s

89、trUserName,strClientName);</p><p>  if(!mysql_query(&theApp.mysql,cmdStr))</p><p><b>  {</b></p><p>  MYSQL_RES *result;</p><p>  MYSQL_ROW row;</p&g

90、t;<p>  result=mysql_use_result(&theApp.mysql)</p><p>  row=mysql_fetch_row(result);</p><p>  count = row[0];</p><p>  mysql_free_result(result);</p><p><

91、b>  }</b></p><p>  4.4.3 轉(zhuǎn)發(fā)聊天信息</p><p>  服務(wù)器端對(duì)客戶端發(fā)送的消息進(jìn)行分析,將游戲相關(guān)信息和聊天信息進(jìn)行區(qū)分,提取相關(guān)聊天消息。服務(wù)器端對(duì)于客戶端發(fā)送的公聊轉(zhuǎn)發(fā)給所有在線用戶,私聊信息發(fā)送給消息中指定的用戶。公聊信息轉(zhuǎn)發(fā)的主要代碼如下:</p><p>  CPtrList * m_pClientLis

92、t = theApp.m_pClientSocketList;</p><p>  int iCount = m_pClientList->GetCount();</p><p>  POSITION pos = m_pClientList ->GetHeadPosition();</p><p><b>  if(pos)</b>

93、</p><p>  {for(int i = 0; i < m_pClientList ->GetCount(); i++)</p><p><b>  {</b></p><p>  CClientSocket *m_pClientSocket = static_cast < CClientSocket *>(m_

94、pClientList->GetNext(pos));</p><p>  CString strName = m_pClientSocket ->GetUserName();</p><p>  if(strName != strUserName )</p><p><b>  {</b></p><p>

95、  m_pClientSocket->Send(&m_Message,sizeof(Message));</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.4.4 轉(zhuǎn)發(fā)和處理游戲信息</p><p>  服務(wù)器端對(duì)客戶端發(fā)送的消息進(jìn)

96、行分析,將游戲相關(guān)信息和聊天信息進(jìn)行區(qū)分,提取相關(guān)游戲消息。服務(wù)器將客戶端發(fā)送的游戲信息轉(zhuǎn)發(fā)給同房間內(nèi)所有玩家,并對(duì)游戲的勝負(fù)信息進(jìn)行記錄。服務(wù)器轉(zhuǎn)發(fā)游戲信息的主要代碼如下:</p><p>  Message msObj1;</p><p>  memset(&msObj1,0,sizeof(Message));</p><p>  msObj1.iTyp

97、e = INGAME;</p><p>  msObj1.iSubType = GETCHESS;</p><p>  CString strTemp= m_Message.strContent; </p><p>  int len = strTemp.GetLength();</p><p>  lstrcpy(msObj1.strCon

98、tent,strTemp.GetBuffer(len));</p><p>  m_gClientSocket->Send(&msObj1,sizeof(Message));</p><p>  4.4.5 通知更新房間信息和用戶信息</p><p>  服務(wù)器端接收所有房間信息和用戶信息的變化,每隔特定時(shí)間向客戶端發(fā)送更新消息,使客戶端進(jìn)行房間信息和

99、用戶信息的更新。通知客戶端進(jìn)行用戶信息更新的主要代碼如下:</p><p>  Message m_Message;</p><p>  memset(&m_Message,0,sizeof(Message));</p><p>  m_Message.iType = INFOREFRESH;</p><p>  m_Message.

100、iSubType = PLAYERSINFO;</p><p>  userInfoStr = userInfoStr.Left(userInfoStr.GetLength() - 1);</p><p>  int len2 = userInfoStr.GetLength();</p><p>  lstrcpy(m_Message.strContent,user

101、InfoStr.GetBuffer(len2));</p><p>  CPtrList * m_pClientList = theApp.m_pClientSocketList;</p><p>  pos = m_pClientList ->GetHeadPosition();</p><p><b>  if(pos)</b><

102、;/p><p>  {for(int i = 0; i < m_pClientList ->GetCount(); i++)</p><p><b>  {</b></p><p>  CClientSocket *m_pClientSocket = static_cast < CClientSocket *>(m_pCl

103、ientList->GetNext(pos));</p><p>  CString strName = m_pClientSocket ->GetUserName();</p><p>  CString info;</p><p>  theApp.m_UserInfoMap.Lookup(strName,info);</p><

104、p>  m_pClientSocket->Send(&m_Message,sizeof(Message));</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  5.總結(jié)</b></p><p>  在

105、整個(gè)軟件開(kāi)發(fā)過(guò)程中,網(wǎng)絡(luò)給了我很大的幫助。圖書讓我對(duì)C++形成了系統(tǒng)的認(rèn)識(shí),網(wǎng)絡(luò)則讓我得以針對(duì)性地解決問(wèn)題。碰到具體的技術(shù)問(wèn)題,翻閱文獻(xiàn)太慢,便只能從網(wǎng)絡(luò)尋求解決辦法。</p><p>  雖然這個(gè)軟件能正常運(yùn)行,但是我認(rèn)為代碼優(yōu)化方面還很不足,程序的整體框架不夠好,用戶需求也沒(méi)能充分滿足,整個(gè)網(wǎng)絡(luò)游戲平臺(tái)系統(tǒng)沒(méi)有使用相關(guān)的游戲引擎導(dǎo)致一些畫面不是特別流暢,這些問(wèn)題還需今后逐一解決。</p><

106、;p>  可以說(shuō),這次畢業(yè)設(shè)計(jì)是我第一次獨(dú)立開(kāi)發(fā)一個(gè)完整的應(yīng)用程序。由于基礎(chǔ)的薄弱和經(jīng)驗(yàn)的匱乏,我只能摸著石頭過(guò)河,尋找各種途徑學(xué)習(xí)C++的MFC開(kāi)發(fā)。沒(méi)有頭緒的時(shí)候會(huì)惶恐不安,會(huì)焦慮,但我沒(méi)懷疑過(guò)走出舒適區(qū)域的選擇。我覺(jué)得這個(gè)過(guò)程中,我學(xué)到的最重要的不是C++知識(shí)本身,而是在茫然無(wú)措時(shí)尋求答案和應(yīng)對(duì)壓力的能力。學(xué)無(wú)止境,希望在未來(lái)的學(xué)習(xí)工作中,我能有更大的突破。</p><p><b>  致謝

107、</b></p><p>  經(jīng)過(guò)幾個(gè)月的努力,本次畢業(yè)設(shè)計(jì)已經(jīng)接近尾聲,在課題選取、論文撰寫和系統(tǒng)規(guī)劃等過(guò)程中,我的指導(dǎo)老師給予我細(xì)心周到的指導(dǎo),拓展了我的思路,使我能順利完成任務(wù),在此我表示衷心的感謝。感謝老師們的教誨、指導(dǎo)與幫助,我將銘記于心。老師們淵博的專業(yè)知識(shí),嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,精益求精的工作作風(fēng),誨人不倦的高尚師德,嚴(yán)以律己、寬以待人的崇高風(fēng)范,樸實(shí)無(wú)華、平易近人的人格魅力對(duì)我影響深遠(yuǎn)。在此

108、,謹(jǐn)向各位老師表示崇高的敬意和衷心的感謝!</p><p><b>  參考文獻(xiàn)</b></p><p>  [1].謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(第5版)。電子工業(yè)出版社。2008年2月第2次印刷。</p><p>  [2]李達(dá) 現(xiàn)在游戲開(kāi)發(fā)技術(shù)[J].計(jì)算機(jī)學(xué)報(bào).2003,14(3):33~40</p><p>  [3].

109、王曉春.PC游戲編程(人機(jī)博弈)[M]北京:清華大學(xué)出版社,2001</p><p>  [4].Nils J Nillsson 人工智能[M].北京:人民郵電出版社,2001</p><p>  [5] Erich Gamma,Richard Helm ,Ralph Johnson,等 可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M]。北京:機(jī)械工業(yè)出版社</p><p>  [6

110、] 楊世清.基于網(wǎng)絡(luò)環(huán)境的游戲開(kāi)發(fā)技術(shù)[J]武漢科技報(bào).2004,18(10):10~13</p><p>  [7](美)Stanley B. Lippman Barbara E. Moo Josée LaJoie 著,李師賢 等譯 《C++ Primer中文版 第4版》 人民郵電出版社 2006.6</p><p>  [8](美)施密特,(美)休斯頓 編著,葉斌 譯 《C+

111、+網(wǎng)絡(luò)編程》 科學(xué)出版社 2012.1</p><p>  [9](美)加迪斯 著,周靖 譯. 《C++圖形與游戲編程基礎(chǔ)》 清華大學(xué)出版社 2010.9</p><p>  [10]葛垚 主編,雷超然 等編著.《Visual C++ MFC棋牌類游戲編程實(shí)例》 人民郵電出版社 2008.7</p><p>  [11]辛長(zhǎng)安,王顏國(guó) 編著.《Visual C++

112、權(quán)威剖析——MFC原理、機(jī)制與開(kāi)發(fā)實(shí)例》 清華大學(xué)出版社 2008.5</p><p>  [12]丁寶康、董健全 數(shù)據(jù)庫(kù)實(shí)用教程[M]. 清華大學(xué)出版社2003.6</p><p>  [13] 簡(jiǎn)朝陽(yáng)《MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計(jì)》 電子工業(yè)出版社2009.6 </p><p>  [14] 戴爾《MySQL核心技術(shù)》 機(jī)械工業(yè)出版社2009.9 </p

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論