網(wǎng)絡(luò)人機(jī)對(duì)戰(zhàn)中國(guó)象棋_需求設(shè)計(jì)實(shí)現(xiàn)說明文檔_第1頁(yè)
網(wǎng)絡(luò)人機(jī)對(duì)戰(zhàn)中國(guó)象棋_需求設(shè)計(jì)實(shí)現(xiàn)說明文檔_第2頁(yè)
網(wǎng)絡(luò)人機(jī)對(duì)戰(zhàn)中國(guó)象棋_需求設(shè)計(jì)實(shí)現(xiàn)說明文檔_第3頁(yè)
網(wǎng)絡(luò)人機(jī)對(duì)戰(zhàn)中國(guó)象棋_需求設(shè)計(jì)實(shí)現(xiàn)說明文檔_第4頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、需求設(shè)計(jì)實(shí)現(xiàn)說明書基于 Windows平臺(tái)的網(wǎng)絡(luò) / 單機(jī)中國(guó)象棋Based on Windows SystemNetwork/Single plane Chinese chess編寫 作 者胡友謀專業(yè)軟件工程聯(lián)系 電 子 信 箱superfume個(gè)人 說 明2009 屆本科畢業(yè) 兩年工作經(jīng)驗(yàn)?zāi)夸浀谝徽戮W(wǎng)絡(luò) /單機(jī)中國(guó)象棋需求分析 .11.1引言.11.1.1編寫目的 .11.1.2項(xiàng)目背景 .11.1.3定義 .11.2任務(wù)概述 .21.2.1目標(biāo) .21.2.2運(yùn)行環(huán)境 .21.3總體劃分 .21.3.1系統(tǒng)功能劃分 .21.3.2端到端模式 (P2P)功能詳細(xì)描

2、述 .31.3.3端到端模式用例 .41.3.4服務(wù)器模式 (C/S)功能詳細(xì)描述 .41.3.5服務(wù)器模式用例 .51.3.6人機(jī)對(duì)戰(zhàn)模式詳細(xì)功能描述 .51.3.7服務(wù)器端功能描述 .51.3.8其他功能需求描述 .6第二章網(wǎng)絡(luò) /單機(jī)中國(guó)象棋總體設(shè)計(jì) .72.1軟件簡(jiǎn)介及總體框架 .72.1.1軟件簡(jiǎn)要說明 .72.1.2總體框架圖 .72.1.3各功能模塊框架圖 .82.2系統(tǒng)靜態(tài)模型 .82.2.1定義系統(tǒng)對(duì)象類 .82.2.2分析類圖 .102.3系統(tǒng)動(dòng)態(tài)模型 .112.3.1端到端 (P2P)進(jìn)行象棋對(duì)戰(zhàn) .112.3.2客戶 / 服務(wù)器 (C/S)模式對(duì)戰(zhàn) .122.3.3人機(jī)

3、對(duì)戰(zhàn) .13第三章網(wǎng)絡(luò) /單機(jī)中國(guó)象棋詳細(xì)設(shè)計(jì) .143.1引言.143.2程序系統(tǒng)結(jié)構(gòu) .143.2.1層次方框圖 .143.2.2系統(tǒng)結(jié)構(gòu)圖 .153.3ChessSound模塊設(shè)計(jì)說明 .153.3.1模塊描述 .153.3.2模塊類圖 .153.3.3類詳細(xì)說明 .163.4ChessBoardImage模塊 .163.4.1模塊描述 .163.4.2模塊類圖 .163.4.3類詳細(xì)說明 .173.5ChessImage模塊 .173.5.1模塊描述 .173.6ChessClasses模塊 .173.6.1模塊描述 .173.6.2模塊類圖 .183.6.3類詳細(xì)說明 .183.7C

4、hessRoomTable模塊 .203.7.1模塊描述 .203.7.2模塊類圖 .213.7.3類詳細(xì)說明 .213.8ComputerChessPlayer模塊 .223.8.1模塊描述 .223.8.2模塊類圖 .233.8.3類詳細(xì)說明 .23第四章網(wǎng)絡(luò)對(duì)戰(zhàn)實(shí)現(xiàn) .254.1網(wǎng)絡(luò)通信相關(guān)技術(shù)分析 .254.1.1端口 (port) .254.1.2套接字 (socket).254.1.3網(wǎng)絡(luò)字節(jié)順序 .264.1.4客戶機(jī) /服務(wù)器模式 .264.1.5Windows Sockets 的實(shí)現(xiàn) .264.1.6套接字的類型 .274.1.7基于 TCP(面向連接 )的 socket編程

5、 .274.2服務(wù)器通信相關(guān)技術(shù)分析 .274.2.1資源分配機(jī)制 .284.2通信體系模式 .284.2.1網(wǎng)絡(luò)協(xié)議的選擇 .284.2.2C/S 與 P2P 相結(jié)合 .294.3異步 I/O 模式 .294.4并發(fā)服務(wù)策略 .29第五章計(jì)算機(jī)博弈實(shí)現(xiàn) .315.1前言.315.2機(jī)器博弈的基本思想 .315.3棋盤局面表示 .325.3走法生成 .335.3.1判斷棋子是否在棋盤中 .335.3.1判斷棋子是否在九宮 .335.3.2走棋步長(zhǎng)設(shè)定 .345.4搜索算法 .345.4.1博弈樹 .345.4.2極大極小算法 .355.4.3負(fù)極大值算法 .355.4.4Alpha-Beta

6、搜索算法 .355.4.5局面評(píng)估 .36第一章網(wǎng)絡(luò) /單機(jī)中國(guó)象棋需求分析1.1引言1.1.1編寫目的在完成了針對(duì)網(wǎng)絡(luò) / 單機(jī)中國(guó)象棋軟件的前期調(diào)查,與很多游戲玩家進(jìn)行了全面深入地探討和分析, 同時(shí)參考了部分同類型軟件的功能的基礎(chǔ)上, 提出了這份軟件需求規(guī)格說明書。此需求規(guī)格說明書對(duì)網(wǎng)絡(luò) / 單機(jī)中國(guó)象棋軟件做了全面細(xì)致的用戶需求分析,明確所要開發(fā)的軟件應(yīng)具有的功能、 性能與界面, 使系統(tǒng)分析人員及軟件開發(fā)人員能清楚地了解用戶的需求, 并在此基礎(chǔ)上進(jìn)一步提出概要設(shè)計(jì)說明書和完成后續(xù)設(shè)計(jì)與開發(fā)工作。 本說明的預(yù)期讀者為用戶、 業(yè)務(wù)或需求分析人員、 測(cè)試人員、用戶文檔編寫者、項(xiàng)目管理人員。1.

7、1.2項(xiàng)目背景隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展和普及, 網(wǎng)絡(luò)游戲也有了長(zhǎng)足的發(fā)展; 網(wǎng)絡(luò)棋類游戲作為其獨(dú)特的一個(gè)分支, 也倍受廣大網(wǎng)游玩家的喜歡。 通過網(wǎng)絡(luò),人們可以在更大的范圍內(nèi)和他人對(duì)弈, 可以增強(qiáng)棋藝的技術(shù)文化交流, 也可以增加玩家的棋藝水平。種個(gè)企業(yè)集團(tuán)或團(tuán)體都有自己的局域網(wǎng), 大家在工作之余也很想進(jìn)行些有意義的娛樂活動(dòng),下中國(guó)象棋應(yīng)該是首選吧。 同時(shí)計(jì)算機(jī)發(fā)展也是非常的迅速,計(jì)算機(jī)的計(jì)算速度和并行的能力都有了空前的提高, 人們自然也很希望可以和計(jì)算機(jī)比比智力的高低,與計(jì)算機(jī)進(jìn)行中國(guó)象棋對(duì)弈應(yīng)該就是最好的方式吧。通過以上的簡(jiǎn)單分析, 為了滿足各種用戶的需求, 既可以網(wǎng)絡(luò)對(duì)戰(zhàn), 又可以人機(jī)對(duì)戰(zhàn)的網(wǎng)

8、絡(luò) /單機(jī)中國(guó)象棋就有了開發(fā)的必要。在這樣的背景下,我計(jì)劃開發(fā)一款這樣多功能的象棋軟件。1.1.3定義C/S:客戶端 / 服務(wù)器模式P2P:端對(duì)端模式AI :人工智能OOD:面向?qū)ο笤O(shè)計(jì)1.2任務(wù)概述1.2.1目標(biāo)開發(fā)網(wǎng)絡(luò) /單機(jī)中國(guó)象棋軟件,實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)器模式對(duì)戰(zhàn),網(wǎng)絡(luò)端到端模式對(duì)戰(zhàn),以及人機(jī)對(duì)戰(zhàn)功能。并且軟件的界面友好,操作方便。1.2.2運(yùn)行環(huán)境本軟件建議運(yùn)行在Windows xp 以上版本的 PC 機(jī)上。采用的開發(fā)工具是Visual Studio 2005 開發(fā)平臺(tái),使用的開發(fā)語(yǔ)言為C+。1.3總體劃分1.3.1系統(tǒng)功能劃分網(wǎng)絡(luò) /單機(jī)中國(guó)象棋端到端模式服務(wù)器模式人機(jī)對(duì)戰(zhàn)模式游戲控制外

9、觀控制開始電腦水平設(shè)置棋盤外觀設(shè)置結(jié)束電腦執(zhí)紅棋子外觀設(shè)置悔棋電腦執(zhí)黑顯示棋盤求和顯示房間認(rèn)輸連接斷開連接托管圖 1.1網(wǎng)絡(luò) / 單機(jī)中國(guó)象棋功能劃分圖A. 端到端模式:用戶在選擇該模式之后,進(jìn)入端到端游戲模式。用戶首先通過對(duì)方的地址同對(duì)方相連接,或者等待對(duì)方的連接,當(dāng)連接成功以后就可以開始下棋了。B. 服務(wù)器模式:用戶在選擇該模式之后,進(jìn)入服務(wù)器模式進(jìn)行游戲。用戶首先通過服務(wù)器地址同服務(wù)器相連接,連接成功以后可以看到服務(wù)器當(dāng)前的房間信息,并且可以選擇一個(gè)空位坐下,如果對(duì)面也有人坐下就可以開始下棋了。C. 人機(jī)對(duì)戰(zhàn)模式:用戶在選擇該模式之后,進(jìn)行人機(jī)對(duì)戰(zhàn)模式。用戶首先選擇電腦執(zhí)紅或執(zhí)黑,就可以

10、開始下棋了。D. 游戲控制:控制游戲過程中的全動(dòng)作。E. 外觀控制:更改程序在外界,或者顯示內(nèi)容。1.3.2端到端模式 (P2P)功能詳細(xì)描述端到端模式的特別是兩個(gè)客戶端程序直接通過網(wǎng)絡(luò)相互連通進(jìn)行游戲, 參于中國(guó)象棋對(duì)弈的玩家只有兩人。 這時(shí)客戶端程序也可以作為服務(wù)端, 具體操作如下:a.選擇游戲模式為點(diǎn)對(duì)點(diǎn)模式。b.作為客戶端的一方點(diǎn)擊連接按鈕在彈出的對(duì)話框中輸入對(duì)方的IP 地址進(jìn)行連接。c.作為服務(wù)器的一方會(huì)監(jiān)聽客戶端的連接請(qǐng)求,并對(duì)來到的請(qǐng)求進(jìn)行響應(yīng)。d. 待服務(wù)端用戶同意連接請(qǐng)求后,雙方中的任意一方都可以點(diǎn)擊開始按鈕進(jìn)行游戲,點(diǎn)擊開始游戲的一方為紅方。e. 游戲過程中可以悔棋、求和和

11、認(rèn)輸?shù)炔僮鳎瑫r(shí)程序自動(dòng)判斷勝負(fù)。1.3.3端到端模式用例端到端模式用例選擇點(diǎn)對(duì)點(diǎn)模式連接服務(wù)端服務(wù)端用戶客戶端用戶接受或拒絕請(qǐng)求進(jìn)行游戲圖 1.2端到端模式用例圖1.3.4服務(wù)器模式 (C/S)功能詳細(xì)描述服務(wù)器模式的特別是所有的游戲玩家都集中連接服務(wù)器, 在統(tǒng)一的平臺(tái)下集中游戲。在連接好服務(wù)器之后可以在房間里選擇空位, 棋桌的另一方如果也有玩家占位,則可以進(jìn)行游戲。功能簡(jiǎn)述如下:a. 選擇服務(wù)器模式。b. 正常運(yùn)行服務(wù)器程序。c. 客戶端點(diǎn)擊連接,填入服務(wù)器所在的地址,連接成功點(diǎn)擊顯示房間。d. 雙擊一個(gè)空位準(zhǔn)備游戲。e. 待對(duì)面的位置有玩家入坐就可以開始游戲,過程同端到端模式。1.3.5

12、服務(wù)器模式用例服務(wù)器模式用例選擇服務(wù)器模式游戲玩家1連接服務(wù)器游戲玩家3占空位游戲玩家2進(jìn)行對(duì)戰(zhàn)圖 1.3服務(wù)器模式用例圖1.3.6人機(jī)對(duì)戰(zhàn)模式詳細(xì)功能描述人機(jī)對(duì)戰(zhàn)模式是最難實(shí)現(xiàn)的部分, 要求設(shè)計(jì)合理高效的數(shù)據(jù)結(jié)構(gòu)和智能博弈搜索算法,使得計(jì)算機(jī)具有很高的棋力。功能簡(jiǎn)述如下:a. 選擇人機(jī)對(duì)戰(zhàn)模式:電腦執(zhí)紅或電腦執(zhí)黑。b. 選擇電腦水平:簡(jiǎn)單、一般、困難和超級(jí)。c. 選擇電腦迭代加加深搜索。d. 點(diǎn)擊開始游戲。e. 游戲過程中可以悔棋。1.3.7服務(wù)器端功能描述服務(wù)器端程序是實(shí)現(xiàn)中國(guó)象棋服務(wù)器對(duì)戰(zhàn)模式的必要組成部分。 它使所有客戶端的網(wǎng)絡(luò)信息通信都集中在服務(wù)器上, 使游戲玩家的選擇更方便快捷。

13、具體功能描述如下:a. 接受每一個(gè)客房端的連接,并維護(hù)網(wǎng)絡(luò)資源,向客房端發(fā)送房間信息。b. 當(dāng)已經(jīng)滿座的棋桌雙方提示可以開始下棋。c. 為已經(jīng)進(jìn)入對(duì)戰(zhàn)的客房端傳送下棋信息。1.3.8其他功能需求描述軟件還有其他的附加功能需求,具體描述如下:a. 選擇棋子、走動(dòng)棋子、吃子和判斷勝負(fù)時(shí)播放不同的聲音。b. 游戲過程中,可以更換棋子和棋盤的樣式。游戲過程中,可以表示出信息。第二章網(wǎng)絡(luò) /單機(jī)中國(guó)象棋總體設(shè)計(jì)2.1軟件簡(jiǎn)介及總體框架2.1.1軟件簡(jiǎn)要說明本軟件是基于端對(duì)端 (P2P)、客戶 /服務(wù)器 (C/S)和單機(jī)模式的中國(guó)象棋博弈軟件,是一個(gè)綜合性的棋類網(wǎng)絡(luò)游戲軟件。 主要包括了網(wǎng)絡(luò)信息傳輸管理,

14、 面向?qū)ο筌浖O(shè)計(jì), 服務(wù)器并發(fā)訪問和人工智能等技術(shù)。 實(shí)現(xiàn)了點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)對(duì)戰(zhàn), 服務(wù)器網(wǎng)絡(luò)對(duì)戰(zhàn)和人機(jī)對(duì)戰(zhàn)功能。2.1.2總體框架圖本系統(tǒng)采用端到端 (P2P)、客戶 /服務(wù)器 (C/S)和單機(jī)模式的應(yīng)用軟件。其框架圖如下:客戶端 1客戶端 2客戶端 3客戶端 4圖 2.1 端到端 (P2P) 用例框架圖客戶端 1客戶端 2服務(wù)器客戶端 3客戶端 4圖 2.2客戶 / 服務(wù)器 (C/S) 模式用例框架圖2.1.3各功能模塊框架圖網(wǎng)絡(luò) /單機(jī)中國(guó)象棋資源模塊棋盤、棋子模塊棋房間、棋桌模塊網(wǎng)絡(luò)模塊人工智能模棋盤類棋房間類服務(wù)客戶塊端網(wǎng)端網(wǎng)棋盤棋子聲音絡(luò)模絡(luò)模圖片圖片塊塊資源資源資源模塊棋子類棋桌類模

15、塊模塊圖 2.3網(wǎng)絡(luò) / 單機(jī)中國(guó)象棋各功能模塊圖網(wǎng)絡(luò)中國(guó)象棋服務(wù)器程序棋棋網(wǎng)網(wǎng)絡(luò)絡(luò)觀房桌監(jiān)客察間模戶者模塊聽端通模塊模信塊塊端圖 2.4網(wǎng)絡(luò)中國(guó)象棋服務(wù)器端功能模塊圖2.2系統(tǒng)靜態(tài)模型2.2.1定義系統(tǒng)對(duì)象類A. 棋盤和棋子圖片資源模塊為了方便軟件的維護(hù)和軟件界面的多樣化發(fā)展, 故將軟件中所涉及到的棋盤和棋子圖片資源都統(tǒng)一用單獨(dú)的模塊進(jìn)行維護(hù)。把圖片資源編譯到動(dòng)態(tài)連接庫(kù)中,并用庫(kù)中的一個(gè)導(dǎo)出類向外部提供資源。棋盤圖片資源模塊只有一個(gè)靜態(tài)類:CBoardImageManager;棋子圖片資源模塊一個(gè)靜態(tài)類:CChessImageManager。B. 聲音資源模塊為了方便軟件的維護(hù)和軟件運(yùn)行時(shí)與

16、用戶互動(dòng)的多樣化發(fā)展,故將軟件所涉及到的聲音資源都統(tǒng)一用單獨(dú)的模塊進(jìn)行維護(hù)。把聲音資源編譯到動(dòng)態(tài)連接庫(kù)中,并用庫(kù)中的一個(gè)導(dǎo)出類向外部提供資源。聲音資源模塊只有一個(gè)靜態(tài)類:CSoundManager 。C. 棋盤、棋子模塊棋盤、棋子模塊是程序中重要的部分, 它將界面和棋子運(yùn)行的邏輯分離開來。界面只要有一個(gè)棋盤的對(duì)象, 使用棋盤類的接口就可以了, 而不用去管棋盤內(nèi)部的處理過程。這樣就大大的降低了模塊間的耦合程序。所有棋子的基類: CChess;CChess 類的子類:CBingzu、CJiangshuai、CJu、CMa、CPao、CShiwei 和 CXiang。處理下棋邏輯的部分就是棋盤類:C

17、ChessBoard。D. 棋房間、棋桌模塊棋房間中有很多棋桌, 每個(gè)棋桌有兩個(gè)位置可以供客戶連接。棋房間的信息都是用服務(wù)器管理, 而客戶端只是接受服務(wù)器發(fā)送過來的房間信息并進(jìn)行相應(yīng)的處理;客戶端可以選擇一個(gè)位置座下, 如果對(duì)面也有人入座就可以進(jìn)行對(duì)弈活動(dòng)了。由于棋房間、 棋桌在客戶端程序和服務(wù)端程序都會(huì)用到, 所以也單獨(dú)做成一個(gè)模塊,這樣可以利用代碼的復(fù)用。棋子房間類:CChessRoom;棋桌類:CChessTable。E. 網(wǎng)絡(luò)模塊網(wǎng)絡(luò)模塊是本軟件進(jìn)行網(wǎng)絡(luò)對(duì)戰(zhàn)的必要模塊,主要處理網(wǎng)絡(luò)連接, 網(wǎng)絡(luò)信息傳輸?shù)摹W鳛榉?wù)端,則有一個(gè)用于網(wǎng)絡(luò)監(jiān)聽的SOCKET 對(duì)象來監(jiān)聽客戶端的連接請(qǐng)求,當(dāng)接受

18、了客戶端的連接請(qǐng)求之后,就創(chuàng)建一個(gè)SOCKET 對(duì)方與客戶端的連接綁定。作為客戶端,直接創(chuàng)建一個(gè) SOCKET 對(duì)方,通過服務(wù)端的地址和端口連接。網(wǎng)絡(luò)監(jiān)聽 SOCKET 類:CListenSocket;用于點(diǎn)對(duì)點(diǎn)客戶端通信類:CClientSocket;用于服務(wù)器模式客戶端通信類:CClientSocketForServer。F. 人工智能模塊人工智能模塊就是實(shí)現(xiàn)計(jì)算機(jī)博弈功能的部分, 運(yùn)用了現(xiàn)在比較流行的計(jì)算機(jī)博弈算法和數(shù)據(jù)結(jié)構(gòu), 使計(jì)算機(jī)具有了一定的棋力。 所用到的技術(shù)點(diǎn)有: 棋盤表示、走法生成、搜索技術(shù)、局面評(píng)估、置換表、殺手啟發(fā)和靜態(tài)搜索等技術(shù)。計(jì)算機(jī)博弈類: CAIPlayer。G.

19、 服務(wù)器模塊服務(wù)器模塊是整個(gè)軟件的服務(wù)器部分, 實(shí)現(xiàn)了客戶端的并發(fā)訪問控制, 讓所有的客戶端玩家都在統(tǒng)一的平臺(tái)進(jìn)行游戲, 只要知道服務(wù)器地址, 而不用去管其他玩家所在的客戶端地址。 客戶端與服務(wù)器的通信有兩個(gè)網(wǎng)絡(luò)連接, 一個(gè)用于下棋另一個(gè)用于接受房間信息。當(dāng)服務(wù)器接受到一個(gè)客戶端的連接就創(chuàng)建一個(gè) SOCKET 對(duì)方與之綁定,如果再的客戶端連接就再創(chuàng)建。監(jiān)聽客戶端連接的類:CListenSocket;用于同客戶端 連接的通信類: CClientSocket;棋房間類:CServerChessRoom(繼承于 CChessRoom);棋桌類: CServerChessTable(繼承于CChess

20、Table);用于向各個(gè)客戶端分發(fā)房間消息的觀察者類: CPostInfoThread。2.2.2分析類圖通過上一節(jié)分析得到了系統(tǒng)中的類,如下圖所示:ChessSoundChessBoardImageChessImageCSoundManagerCBoardImageManagerCChessImageManager(from Ches sSound)(from Ches sImage)(from Ches sBoardImage)ChineseChessChessClassesCChessBoardCChessCChineseChessView(from Ches sImage)(from

21、Ches sImage)(from ChineseChess)CChessPointerListCClientSocketCClientSocketForServer(from ChessImage)(from ChineseChess)(from ChineseChess)CJiangshuaiCJu(from ChessImage)(from ChessImage)CListenSocketChessRoomTableComputerChessPlayerCChessTableCChessRoomCAIPlayer(from Ches sRoomTable)(from Ches sRoom

22、Table)(from ComputerChessPlayer)圖 2.5網(wǎng)絡(luò) / 單機(jī)中國(guó)象棋類圖ChineseChessServerCPostInfoThreadCChineseChessServerViewCListenSocket(from ChineseChessServer)(from ChineseChessServer)(from ChineseChessServer)CServerChessRoomCServerChessTableCClientSocket(from ChineseChessServer)圖 2.6服務(wù)器類圖2.3系統(tǒng)動(dòng)態(tài)模型2.3.1端到端 (P2P)進(jìn)行

23、象棋對(duì)戰(zhàn)端到端進(jìn)行象棋對(duì)戰(zhàn), 是兩個(gè)玩家直接進(jìn)行連接游戲。 首先,是作為服務(wù)端的一方創(chuàng)建一個(gè)網(wǎng)絡(luò)監(jiān)聽端, 并打開一個(gè)網(wǎng)絡(luò)端口, 等待客戶端的連接。 客戶端則創(chuàng)建一個(gè)網(wǎng)絡(luò)客戶端, 通過服務(wù)端的網(wǎng)絡(luò)地址和端口進(jìn)行連接。 服務(wù)端同意客戶端連接請(qǐng)求之后也創(chuàng)建一個(gè)網(wǎng)絡(luò)客戶商同請(qǐng)求連接的客戶端進(jìn)行綁定。 這樣就建立了網(wǎng)絡(luò)連接,就可以進(jìn)行游戲了。時(shí)序圖如下:終端1終端21:創(chuàng)建網(wǎng)絡(luò)監(jiān)聽2: 創(chuàng)建客戶端連接3: 通過 IP 和端口進(jìn)行連接4: 接受對(duì)連接請(qǐng)求5: 開始對(duì)弈6: 走子圖 2.7端到端對(duì)弈時(shí)序圖2.3.2客戶 / 服務(wù)器 (C/S)模式對(duì)戰(zhàn)客戶 / 服務(wù)器模式進(jìn)行對(duì)戰(zhàn),就需要有一個(gè)獨(dú)立的服務(wù)器供客

24、戶端的連接。服務(wù)器要管理好每一個(gè)客戶端的連接,并且正確處理它們之間正確的信息通信。首先服務(wù)器打開兩個(gè)服務(wù)端的網(wǎng)絡(luò)監(jiān)聽:一個(gè)是用來監(jiān)聽客戶端房間信息連接,另一個(gè)是用來對(duì)客戶端對(duì)弈信息連接。 客戶端通過服務(wù)器地址和端口與服務(wù)器進(jìn)行連接。服務(wù)器監(jiān)聽到網(wǎng)絡(luò)連接之后就是創(chuàng)建兩個(gè)網(wǎng)絡(luò)通信客戶端分別與客戶端的兩個(gè)連接請(qǐng)求相綁定, 并把房間信息發(fā)送到客戶端。 當(dāng)客戶端選擇了一個(gè)位置坐下,那么這個(gè)客戶端的對(duì)弈通信連接就被綁定到該位置, 當(dāng)該位置的對(duì)面也有人時(shí),這個(gè)棋桌的雙方就可以開始對(duì)弈了。時(shí)序圖如下:客戶端 1服務(wù)器客戶端 21: 創(chuàng)建網(wǎng)絡(luò)監(jiān)聽等客戶端連接2: 通過地址和端口連接3: 通過地址和端口連接4:

25、創(chuàng)建 SOCKET 綁定5: 創(chuàng)建 SOCKET 綁定6: 發(fā)送房間信息7:發(fā)送房間信息8: 選擇 1桌左位9: 選擇 1桌右位10: 發(fā)送房間信息11: 發(fā)送房間信息12: 開始下棋13:開始下棋圖 2.8客戶 / 服務(wù)器模式對(duì)弈時(shí)序圖2.3.3人機(jī)對(duì)戰(zhàn)人機(jī)對(duì)戰(zhàn)是本設(shè)計(jì)的一個(gè)亮點(diǎn), 把人工智能同中國(guó)象棋結(jié)合起來, 讓計(jì)算機(jī)具有了下棋的能力。 用戶只要選擇好了電腦的執(zhí)棋方, 以及選擇好電腦的棋力水平,就可以同電腦對(duì)弈了。時(shí)序圖如下:GUI思考棋局1: 指定電腦執(zhí)紅 (黑 )方2: 設(shè)定電腦棋力水平3: 開始下棋4: 思考棋局5: 電腦走一步棋圖 2.9人機(jī)對(duì)弈時(shí)序圖第三章網(wǎng)絡(luò) /單機(jī)中國(guó)象棋詳

26、細(xì)設(shè)計(jì)3.1引言在使用程序設(shè)計(jì)語(yǔ)言編寫程序之前, 需要對(duì)所采用的算法的邏輯關(guān)系進(jìn)行分析并設(shè)計(jì)出全部必要的過程細(xì)節(jié), 并給予清晰的表達(dá), 使之成為編碼測(cè)試和測(cè)試的依據(jù)。3.2程序系統(tǒng)結(jié)構(gòu)采用層次方框圖和系統(tǒng)結(jié)構(gòu)圖的形式列出系統(tǒng)內(nèi)的每個(gè)模塊和子程序的名稱、標(biāo)識(shí)符和它們之間的層次結(jié)構(gòu)關(guān)系。3.2.1層次方框圖啟動(dòng)軟件模式選擇游戲控制外觀調(diào)節(jié)網(wǎng)絡(luò)單機(jī)調(diào)調(diào)模式模式悔求認(rèn)節(jié)節(jié)棋棋棋和輸子盤外外網(wǎng)絡(luò)初始觀觀連接電腦走子結(jié)束軟件對(duì)方走子圖 3.1 層次方框圖3.2.2系統(tǒng)結(jié)構(gòu)圖ComputerChessPlayerChessSoundChessImageChineseChessChessRoomTableChineseChessServerChessClassesChessBoardImage圖 3.2系統(tǒng)結(jié)構(gòu)圖3.3ChessSound模塊設(shè)計(jì)說明3.3.1模塊描述此模塊最終編譯為一個(gè)動(dòng)態(tài)連接庫(kù)文件

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論