



版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、需求設(shè)計(jì)實(shí)現(xiàn)說(shuō)明書(shū)基于 Windows平臺(tái)的網(wǎng)絡(luò) / 單機(jī)中國(guó)象棋Based on Windows SystemNetwork/Single plane Chinese chess編寫(xiě) 作 者胡友謀專(zhuān)業(yè)軟件工程聯(lián)系 電 子 信 箱superfume個(gè)人 說(shuō) 明2009 屆本科畢業(yè) 兩年工作經(jīng)驗(yàn)?zāi)夸浀谝徽戮W(wǎng)絡(luò) /單機(jī)中國(guó)象棋需求分析 .11.1引言.11.1.1編寫(xiě)目的 .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)要說(shuō)明 .72.1.2總體框架圖 .72.1.3各功能模塊框架圖 .82.2系統(tǒng)靜態(tài)模型 .82.2.1定義系統(tǒng)對(duì)象類(lèi) .82.2.2分析類(lèi)圖 .102.3系統(tǒng)動(dòng)態(tài)模型 .112.3.1端到端 (P2P)進(jìn)行象棋對(duì)戰(zhàn) .112.3.2客戶(hù) / 服務(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ì)說(shuō)明 .153.3.1模塊描述 .153.3.2模塊類(lèi)圖 .153.3.3類(lèi)詳細(xì)說(shuō)明 .163.4ChessBoardImage模塊 .163.4.1模塊描述 .163.4.2模塊類(lèi)圖 .163.4.3類(lèi)詳細(xì)說(shuō)明 .173.5ChessImage模塊 .173.5.1模塊描述 .173.6ChessClasses模塊 .173.6.1模塊描述 .173.6.2模塊類(lèi)圖 .183.6.3類(lèi)詳細(xì)說(shuō)明 .183.7C
4、hessRoomTable模塊 .203.7.1模塊描述 .203.7.2模塊類(lèi)圖 .213.7.3類(lèi)詳細(xì)說(shuō)明 .213.8ComputerChessPlayer模塊 .223.8.1模塊描述 .223.8.2模塊類(lèi)圖 .233.8.3類(lèi)詳細(xì)說(shuō)明 .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客戶(hù)機(jī) /服務(wù)器模式 .264.1.5Windows Sockets 的實(shí)現(xiàn) .264.1.6套接字的類(lèi)型 .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棋盤(pán)局面表示 .325.3走法生成 .335.3.1判斷棋子是否在棋盤(pán)中 .335.3.1判斷棋子是否在九宮 .335.3.2走棋步長(zhǎng)設(shè)定 .345.4搜索算法 .345.4.1博弈樹(shù) .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編寫(xiě)目的在完成了針對(duì)網(wǎng)絡(luò) / 單機(jī)中國(guó)象棋軟件的前期調(diào)查,與很多游戲玩家進(jìn)行了全面深入地探討和分析, 同時(shí)參考了部分同類(lèi)型軟件的功能的基礎(chǔ)上, 提出了這份軟件需求規(guī)格說(shuō)明書(shū)。此需求規(guī)格說(shuō)明書(shū)對(duì)網(wǎng)絡(luò) / 單機(jī)中國(guó)象棋軟件做了全面細(xì)致的用戶(hù)需求分析,明確所要開(kāi)發(fā)的軟件應(yīng)具有的功能、 性能與界面, 使系統(tǒng)分析人員及軟件開(kāi)發(fā)人員能清楚地了解用戶(hù)的需求, 并在此基礎(chǔ)上進(jìn)一步提出概要設(shè)計(jì)說(shuō)明書(shū)和完成后續(xù)設(shè)計(jì)與開(kāi)發(fā)工作。 本說(shuō)明的預(yù)期讀者為用戶(hù)、 業(yè)務(wù)或需求分析人員、 測(cè)試人員、用戶(hù)文檔編寫(xiě)者、項(xiàng)目管理人員。1.
7、1.2項(xiàng)目背景隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展和普及, 網(wǎng)絡(luò)游戲也有了長(zhǎng)足的發(fā)展; 網(wǎng)絡(luò)棋類(lèi)游戲作為其獨(dú)特的一個(gè)分支, 也倍受廣大網(wǎng)游玩家的喜歡。 通過(guò)網(wǎng)絡(luò),人們可以在更大的范圍內(nèi)和他人對(duì)弈, 可以增強(qiáng)棋藝的技術(shù)文化交流, 也可以增加玩家的棋藝水平。種個(gè)企業(yè)集團(tuán)或團(tuán)體都有自己的局域網(wǎng), 大家在工作之余也很想進(jìn)行些有意義的娛樂(lè)活動(dòng),下中國(guó)象棋應(yīng)該是首選吧。 同時(shí)計(jì)算機(jī)發(fā)展也是非常的迅速,計(jì)算機(jī)的計(jì)算速度和并行的能力都有了空前的提高, 人們自然也很希望可以和計(jì)算機(jī)比比智力的高低,與計(jì)算機(jī)進(jìn)行中國(guó)象棋對(duì)弈應(yīng)該就是最好的方式吧。通過(guò)以上的簡(jiǎn)單分析, 為了滿(mǎn)足各種用戶(hù)的需求, 既可以網(wǎng)絡(luò)對(duì)戰(zhàn), 又可以人機(jī)對(duì)戰(zhàn)的網(wǎng)
8、絡(luò) /單機(jī)中國(guó)象棋就有了開(kāi)發(fā)的必要。在這樣的背景下,我計(jì)劃開(kāi)發(fā)一款這樣多功能的象棋軟件。1.1.3定義C/S:客戶(hù)端 / 服務(wù)器模式P2P:端對(duì)端模式AI :人工智能OOD:面向?qū)ο笤O(shè)計(jì)1.2任務(wù)概述1.2.1目標(biāo)開(kāi)發(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ī)上。采用的開(kāi)發(fā)工具是Visual Studio 2005 開(kāi)發(fā)平臺(tái),使用的開(kāi)發(fā)語(yǔ)言為C+。1.3總體劃分1.3.1系統(tǒng)功能劃分網(wǎng)絡(luò) /單機(jī)中國(guó)象棋端到端模式服務(wù)器模式人機(jī)對(duì)戰(zhàn)模式游戲控制外
9、觀(guān)控制開(kāi)始電腦水平設(shè)置棋盤(pán)外觀(guān)設(shè)置結(jié)束電腦執(zhí)紅棋子外觀(guān)設(shè)置悔棋電腦執(zhí)黑顯示棋盤(pán)求和顯示房間認(rèn)輸連接斷開(kāi)連接托管圖 1.1網(wǎng)絡(luò) / 單機(jī)中國(guó)象棋功能劃分圖A. 端到端模式:用戶(hù)在選擇該模式之后,進(jìn)入端到端游戲模式。用戶(hù)首先通過(guò)對(duì)方的地址同對(duì)方相連接,或者等待對(duì)方的連接,當(dāng)連接成功以后就可以開(kāi)始下棋了。B. 服務(wù)器模式:用戶(hù)在選擇該模式之后,進(jìn)入服務(wù)器模式進(jìn)行游戲。用戶(hù)首先通過(guò)服務(wù)器地址同服務(wù)器相連接,連接成功以后可以看到服務(wù)器當(dāng)前的房間信息,并且可以選擇一個(gè)空位坐下,如果對(duì)面也有人坐下就可以開(kāi)始下棋了。C. 人機(jī)對(duì)戰(zhàn)模式:用戶(hù)在選擇該模式之后,進(jìn)行人機(jī)對(duì)戰(zhàn)模式。用戶(hù)首先選擇電腦執(zhí)紅或執(zhí)黑,就可以
10、開(kāi)始下棋了。D. 游戲控制:控制游戲過(guò)程中的全動(dòng)作。E. 外觀(guān)控制:更改程序在外界,或者顯示內(nèi)容。1.3.2端到端模式 (P2P)功能詳細(xì)描述端到端模式的特別是兩個(gè)客戶(hù)端程序直接通過(guò)網(wǎng)絡(luò)相互連通進(jìn)行游戲, 參于中國(guó)象棋對(duì)弈的玩家只有兩人。 這時(shí)客戶(hù)端程序也可以作為服務(wù)端, 具體操作如下:a.選擇游戲模式為點(diǎn)對(duì)點(diǎn)模式。b.作為客戶(hù)端的一方點(diǎn)擊連接按鈕在彈出的對(duì)話(huà)框中輸入對(duì)方的IP 地址進(jìn)行連接。c.作為服務(wù)器的一方會(huì)監(jiān)聽(tīng)客戶(hù)端的連接請(qǐng)求,并對(duì)來(lái)到的請(qǐng)求進(jìn)行響應(yīng)。d. 待服務(wù)端用戶(hù)同意連接請(qǐng)求后,雙方中的任意一方都可以點(diǎn)擊開(kāi)始按鈕進(jìn)行游戲,點(diǎn)擊開(kāi)始游戲的一方為紅方。e. 游戲過(guò)程中可以悔棋、求和和
11、認(rèn)輸?shù)炔僮?,同時(shí)程序自動(dòng)判斷勝負(fù)。1.3.3端到端模式用例端到端模式用例選擇點(diǎn)對(duì)點(diǎn)模式連接服務(wù)端服務(wù)端用戶(hù)客戶(hù)端用戶(hù)接受或拒絕請(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. 客戶(hù)端點(diǎn)擊連接,填入服務(wù)器所在的地址,連接成功點(diǎn)擊顯示房間。d. 雙擊一個(gè)空位準(zhǔn)備游戲。e. 待對(duì)面的位置有玩家入坐就可以開(kāi)始游戲,過(guò)程同端到端模式。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)擊開(kāi)始游戲。e. 游戲過(guò)程中可以悔棋。1.3.7服務(wù)器端功能描述服務(wù)器端程序是實(shí)現(xiàn)中國(guó)象棋服務(wù)器對(duì)戰(zhàn)模式的必要組成部分。 它使所有客戶(hù)端的網(wǎng)絡(luò)信息通信都集中在服務(wù)器上, 使游戲玩家的選擇更方便快捷。
13、具體功能描述如下:a. 接受每一個(gè)客房端的連接,并維護(hù)網(wǎng)絡(luò)資源,向客房端發(fā)送房間信息。b. 當(dāng)已經(jīng)滿(mǎn)座的棋桌雙方提示可以開(kāi)始下棋。c. 為已經(jīng)進(jìn)入對(duì)戰(zhàn)的客房端傳送下棋信息。1.3.8其他功能需求描述軟件還有其他的附加功能需求,具體描述如下:a. 選擇棋子、走動(dòng)棋子、吃子和判斷勝負(fù)時(shí)播放不同的聲音。b. 游戲過(guò)程中,可以更換棋子和棋盤(pán)的樣式。游戲過(guò)程中,可以表示出信息。第二章網(wǎng)絡(luò) /單機(jī)中國(guó)象棋總體設(shè)計(jì)2.1軟件簡(jiǎn)介及總體框架2.1.1軟件簡(jiǎn)要說(shuō)明本軟件是基于端對(duì)端 (P2P)、客戶(hù) /服務(wù)器 (C/S)和單機(jī)模式的中國(guó)象棋博弈軟件,是一個(gè)綜合性的棋類(lèi)網(wǎng)絡(luò)游戲軟件。 主要包括了網(wǎng)絡(luò)信息傳輸管理,
14、 面向?qū)ο筌浖O(shè)計(jì), 服務(wù)器并發(fā)訪(fǎng)問(wèn)和人工智能等技術(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)、客戶(hù) /服務(wù)器 (C/S)和單機(jī)模式的應(yīng)用軟件。其框架圖如下:客戶(hù)端 1客戶(hù)端 2客戶(hù)端 3客戶(hù)端 4圖 2.1 端到端 (P2P) 用例框架圖客戶(hù)端 1客戶(hù)端 2服務(wù)器客戶(hù)端 3客戶(hù)端 4圖 2.2客戶(hù) / 服務(wù)器 (C/S) 模式用例框架圖2.1.3各功能模塊框架圖網(wǎng)絡(luò) /單機(jī)中國(guó)象棋資源模塊棋盤(pán)、棋子模塊棋房間、棋桌模塊網(wǎng)絡(luò)模塊人工智能模棋盤(pán)類(lèi)棋房間類(lèi)服務(wù)客戶(hù)塊端網(wǎng)端網(wǎng)棋盤(pán)棋子聲音絡(luò)模絡(luò)模圖片圖片塊塊資源資源資源模塊棋子類(lèi)棋桌類(lèi)模
15、塊模塊圖 2.3網(wǎng)絡(luò) / 單機(jī)中國(guó)象棋各功能模塊圖網(wǎng)絡(luò)中國(guó)象棋服務(wù)器程序棋棋網(wǎng)網(wǎng)絡(luò)絡(luò)觀(guān)房桌監(jiān)客察間模戶(hù)者模塊聽(tīng)端通模塊模信塊塊端圖 2.4網(wǎng)絡(luò)中國(guó)象棋服務(wù)器端功能模塊圖2.2系統(tǒng)靜態(tài)模型2.2.1定義系統(tǒng)對(duì)象類(lèi)A. 棋盤(pán)和棋子圖片資源模塊為了方便軟件的維護(hù)和軟件界面的多樣化發(fā)展, 故將軟件中所涉及到的棋盤(pán)和棋子圖片資源都統(tǒng)一用單獨(dú)的模塊進(jìn)行維護(hù)。把圖片資源編譯到動(dòng)態(tài)連接庫(kù)中,并用庫(kù)中的一個(gè)導(dǎo)出類(lèi)向外部提供資源。棋盤(pán)圖片資源模塊只有一個(gè)靜態(tài)類(lèi):CBoardImageManager;棋子圖片資源模塊一個(gè)靜態(tài)類(lèi):CChessImageManager。B. 聲音資源模塊為了方便軟件的維護(hù)和軟件運(yùn)行時(shí)與
16、用戶(hù)互動(dòng)的多樣化發(fā)展,故將軟件所涉及到的聲音資源都統(tǒng)一用單獨(dú)的模塊進(jìn)行維護(hù)。把聲音資源編譯到動(dòng)態(tài)連接庫(kù)中,并用庫(kù)中的一個(gè)導(dǎo)出類(lèi)向外部提供資源。聲音資源模塊只有一個(gè)靜態(tài)類(lèi):CSoundManager 。C. 棋盤(pán)、棋子模塊棋盤(pán)、棋子模塊是程序中重要的部分, 它將界面和棋子運(yùn)行的邏輯分離開(kāi)來(lái)。界面只要有一個(gè)棋盤(pán)的對(duì)象, 使用棋盤(pán)類(lèi)的接口就可以了, 而不用去管棋盤(pán)內(nèi)部的處理過(guò)程。這樣就大大的降低了模塊間的耦合程序。所有棋子的基類(lèi): CChess;CChess 類(lèi)的子類(lèi):CBingzu、CJiangshuai、CJu、CMa、CPao、CShiwei 和 CXiang。處理下棋邏輯的部分就是棋盤(pán)類(lèi):C
17、ChessBoard。D. 棋房間、棋桌模塊棋房間中有很多棋桌, 每個(gè)棋桌有兩個(gè)位置可以供客戶(hù)連接。棋房間的信息都是用服務(wù)器管理, 而客戶(hù)端只是接受服務(wù)器發(fā)送過(guò)來(lái)的房間信息并進(jìn)行相應(yīng)的處理;客戶(hù)端可以選擇一個(gè)位置座下, 如果對(duì)面也有人入座就可以進(jìn)行對(duì)弈活動(dòng)了。由于棋房間、 棋桌在客戶(hù)端程序和服務(wù)端程序都會(huì)用到, 所以也單獨(dú)做成一個(gè)模塊,這樣可以利用代碼的復(fù)用。棋子房間類(lèi):CChessRoom;棋桌類(lèi):CChessTable。E. 網(wǎng)絡(luò)模塊網(wǎng)絡(luò)模塊是本軟件進(jìn)行網(wǎng)絡(luò)對(duì)戰(zhàn)的必要模塊,主要處理網(wǎng)絡(luò)連接, 網(wǎng)絡(luò)信息傳輸?shù)?。作為服?wù)端,則有一個(gè)用于網(wǎng)絡(luò)監(jiān)聽(tīng)的SOCKET 對(duì)象來(lái)監(jiān)聽(tīng)客戶(hù)端的連接請(qǐng)求,當(dāng)接受
18、了客戶(hù)端的連接請(qǐng)求之后,就創(chuàng)建一個(gè)SOCKET 對(duì)方與客戶(hù)端的連接綁定。作為客戶(hù)端,直接創(chuàng)建一個(gè) SOCKET 對(duì)方,通過(guò)服務(wù)端的地址和端口連接。網(wǎng)絡(luò)監(jiān)聽(tīng) SOCKET 類(lèi):CListenSocket;用于點(diǎn)對(duì)點(diǎn)客戶(hù)端通信類(lèi):CClientSocket;用于服務(wù)器模式客戶(hù)端通信類(lèi):CClientSocketForServer。F. 人工智能模塊人工智能模塊就是實(shí)現(xiàn)計(jì)算機(jī)博弈功能的部分, 運(yùn)用了現(xiàn)在比較流行的計(jì)算機(jī)博弈算法和數(shù)據(jù)結(jié)構(gòu), 使計(jì)算機(jī)具有了一定的棋力。 所用到的技術(shù)點(diǎn)有: 棋盤(pán)表示、走法生成、搜索技術(shù)、局面評(píng)估、置換表、殺手啟發(fā)和靜態(tài)搜索等技術(shù)。計(jì)算機(jī)博弈類(lèi): CAIPlayer。G.
19、 服務(wù)器模塊服務(wù)器模塊是整個(gè)軟件的服務(wù)器部分, 實(shí)現(xiàn)了客戶(hù)端的并發(fā)訪(fǎng)問(wèn)控制, 讓所有的客戶(hù)端玩家都在統(tǒng)一的平臺(tái)進(jìn)行游戲, 只要知道服務(wù)器地址, 而不用去管其他玩家所在的客戶(hù)端地址。 客戶(hù)端與服務(wù)器的通信有兩個(gè)網(wǎng)絡(luò)連接, 一個(gè)用于下棋另一個(gè)用于接受房間信息。當(dāng)服務(wù)器接受到一個(gè)客戶(hù)端的連接就創(chuàng)建一個(gè) SOCKET 對(duì)方與之綁定,如果再的客戶(hù)端連接就再創(chuàng)建。監(jiān)聽(tīng)客戶(hù)端連接的類(lèi):CListenSocket;用于同客戶(hù)端 連接的通信類(lèi): CClientSocket;棋房間類(lèi):CServerChessRoom(繼承于 CChessRoom);棋桌類(lèi): CServerChessTable(繼承于CChess
20、Table);用于向各個(gè)客戶(hù)端分發(fā)房間消息的觀(guān)察者類(lèi): CPostInfoThread。2.2.2分析類(lèi)圖通過(guò)上一節(jié)分析得到了系統(tǒng)中的類(lèi),如下圖所示: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ó)象棋類(lèi)圖ChineseChessServerCPostInfoThreadCChineseChessServerViewCListenSocket(from ChineseChessServer)(from ChineseChessServer)(from ChineseChessServer)CServerChessRoomCServerChessTableCClientSocket(from ChineseChessServer)圖 2.6服務(wù)器類(lèi)圖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)聽(tīng)端, 并打開(kāi)一個(gè)網(wǎng)絡(luò)端口, 等待客戶(hù)端的連接。 客戶(hù)端則創(chuàng)建一個(gè)網(wǎng)絡(luò)客戶(hù)端, 通過(guò)服務(wù)端的網(wǎng)絡(luò)地址和端口進(jìn)行連接。 服務(wù)端同意客戶(hù)端連接請(qǐng)求之后也創(chuàng)建一個(gè)網(wǎng)絡(luò)客戶(hù)商同請(qǐng)求連接的客戶(hù)端進(jìn)行綁定。 這樣就建立了網(wǎng)絡(luò)連接,就可以進(jìn)行游戲了。時(shí)序圖如下:終端1終端21:創(chuàng)建網(wǎng)絡(luò)監(jiān)聽(tīng)2: 創(chuàng)建客戶(hù)端連接3: 通過(guò) IP 和端口進(jìn)行連接4: 接受對(duì)連接請(qǐng)求5: 開(kāi)始對(duì)弈6: 走子圖 2.7端到端對(duì)弈時(shí)序圖2.3.2客戶(hù) / 服務(wù)器 (C/S)模式對(duì)戰(zhàn)客戶(hù) / 服務(wù)器模式進(jìn)行對(duì)戰(zhàn),就需要有一個(gè)獨(dú)立的服務(wù)器供客
24、戶(hù)端的連接。服務(wù)器要管理好每一個(gè)客戶(hù)端的連接,并且正確處理它們之間正確的信息通信。首先服務(wù)器打開(kāi)兩個(gè)服務(wù)端的網(wǎng)絡(luò)監(jiān)聽(tīng):一個(gè)是用來(lái)監(jiān)聽(tīng)客戶(hù)端房間信息連接,另一個(gè)是用來(lái)對(duì)客戶(hù)端對(duì)弈信息連接。 客戶(hù)端通過(guò)服務(wù)器地址和端口與服務(wù)器進(jìn)行連接。服務(wù)器監(jiān)聽(tīng)到網(wǎng)絡(luò)連接之后就是創(chuàng)建兩個(gè)網(wǎng)絡(luò)通信客戶(hù)端分別與客戶(hù)端的兩個(gè)連接請(qǐng)求相綁定, 并把房間信息發(fā)送到客戶(hù)端。 當(dāng)客戶(hù)端選擇了一個(gè)位置坐下,那么這個(gè)客戶(hù)端的對(duì)弈通信連接就被綁定到該位置, 當(dāng)該位置的對(duì)面也有人時(shí),這個(gè)棋桌的雙方就可以開(kāi)始對(duì)弈了。時(shí)序圖如下:客戶(hù)端 1服務(wù)器客戶(hù)端 21: 創(chuàng)建網(wǎng)絡(luò)監(jiān)聽(tīng)等客戶(hù)端連接2: 通過(guò)地址和端口連接3: 通過(guò)地址和端口連接4:
25、創(chuàng)建 SOCKET 綁定5: 創(chuàng)建 SOCKET 綁定6: 發(fā)送房間信息7:發(fā)送房間信息8: 選擇 1桌左位9: 選擇 1桌右位10: 發(fā)送房間信息11: 發(fā)送房間信息12: 開(kāi)始下棋13:開(kāi)始下棋圖 2.8客戶(hù) / 服務(wù)器模式對(duì)弈時(shí)序圖2.3.3人機(jī)對(duì)戰(zhàn)人機(jī)對(duì)戰(zhàn)是本設(shè)計(jì)的一個(gè)亮點(diǎn), 把人工智能同中國(guó)象棋結(jié)合起來(lái), 讓計(jì)算機(jī)具有了下棋的能力。 用戶(hù)只要選擇好了電腦的執(zhí)棋方, 以及選擇好電腦的棋力水平,就可以同電腦對(duì)弈了。時(shí)序圖如下:GUI思考棋局1: 指定電腦執(zhí)紅 (黑 )方2: 設(shè)定電腦棋力水平3: 開(kāi)始下棋4: 思考棋局5: 電腦走一步棋圖 2.9人機(jī)對(duì)弈時(shí)序圖第三章網(wǎng)絡(luò) /單機(jī)中國(guó)象棋詳
26、細(xì)設(shè)計(jì)3.1引言在使用程序設(shè)計(jì)語(yǔ)言編寫(xiě)程序之前, 需要對(duì)所采用的算法的邏輯關(guān)系進(jìn)行分析并設(shè)計(jì)出全部必要的過(guò)程細(xì)節(jié), 并給予清晰的表達(dá), 使之成為編碼測(cè)試和測(cè)試的依據(jù)。3.2程序系統(tǒng)結(jié)構(gòu)采用層次方框圖和系統(tǒng)結(jié)構(gòu)圖的形式列出系統(tǒng)內(nèi)的每個(gè)模塊和子程序的名稱(chēng)、標(biāo)識(shí)符和它們之間的層次結(jié)構(gòu)關(guān)系。3.2.1層次方框圖啟動(dòng)軟件模式選擇游戲控制外觀(guān)調(diào)節(jié)網(wǎng)絡(luò)單機(jī)調(diào)調(diào)模式模式悔求認(rèn)節(jié)節(jié)棋棋棋和輸子盤(pán)外外網(wǎng)絡(luò)初始觀(guān)觀(guān)連接電腦走子結(jié)束軟件對(duì)方走子圖 3.1 層次方框圖3.2.2系統(tǒng)結(jié)構(gòu)圖ComputerChessPlayerChessSoundChessImageChineseChessChessRoomTableChineseChessServerChessClassesChessBoardImage圖 3.2系統(tǒng)結(jié)構(gòu)圖3.3ChessSound模塊設(shè)計(jì)說(shuō)明3.3.1模塊描述此模塊最終編譯為一個(gè)動(dòng)態(tài)連接庫(kù)文件
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 借款保證合同與借款保證擔(dān)保合同
- 瀝青攤鋪勞務(wù)合同
- 廈門(mén)軟件職業(yè)技術(shù)學(xué)院《會(huì)計(jì)手工實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 長(zhǎng)春理工大學(xué)《醫(yī)學(xué)微生物學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 大連財(cái)經(jīng)學(xué)院《CoreDraw圖像設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇科技大學(xué)蘇州理工學(xué)院《影視文學(xué)研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇海洋大學(xué)《材料與加工工藝》2023-2024學(xué)年第二學(xué)期期末試卷
- 大慶醫(yī)學(xué)高等專(zhuān)科學(xué)?!夺t(yī)學(xué)免疫學(xué)與病原生物學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊科技信息職業(yè)學(xué)院《流體傳動(dòng)及控制》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川現(xiàn)代職業(yè)學(xué)院《農(nóng)業(yè)相關(guān)政策培訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025年中國(guó)鋰電池隔膜行業(yè)未來(lái)發(fā)展趨勢(shì)分析及投資規(guī)劃建議研究報(bào)告
- 軟件系統(tǒng)項(xiàng)目實(shí)施方案(共3篇)
- 2025年山東藥品食品職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年恩施市福牛物業(yè)有限公司招聘筆試參考題庫(kù)含答案解析
- 《滾動(dòng)軸承-》課件
- 2025年中國(guó)CAR-T免疫細(xì)胞治療行業(yè)市場(chǎng)發(fā)展前景研究報(bào)告-智研咨詢(xún)發(fā)布
- 妊娠期用藥安全課件
- 月子會(huì)所護(hù)理人員禮儀
- GB/T 44958-2024化工設(shè)備安全管理規(guī)范
- 《化妝品包裝材料相容性試驗(yàn)評(píng)估指南》
- 2025年軋鋼原料工技能考試題庫(kù)
評(píng)論
0/150
提交評(píng)論