【畢業(yè)學(xué)位論文】(Word原稿)網(wǎng)絡(luò)五子棋游戲算法和技術(shù)的研究-計(jì)算機(jī)科學(xué)與技術(shù)_第1頁
【畢業(yè)學(xué)位論文】(Word原稿)網(wǎng)絡(luò)五子棋游戲算法和技術(shù)的研究-計(jì)算機(jī)科學(xué)與技術(shù)_第2頁
【畢業(yè)學(xué)位論文】(Word原稿)網(wǎng)絡(luò)五子棋游戲算法和技術(shù)的研究-計(jì)算機(jī)科學(xué)與技術(shù)_第3頁
【畢業(yè)學(xué)位論文】(Word原稿)網(wǎng)絡(luò)五子棋游戲算法和技術(shù)的研究-計(jì)算機(jī)科學(xué)與技術(shù)_第4頁
【畢業(yè)學(xué)位論文】(Word原稿)網(wǎng)絡(luò)五子棋游戲算法和技術(shù)的研究-計(jì)算機(jī)科學(xué)與技術(shù)_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

海 南 大 學(xué) 畢 業(yè) 論 文(設(shè)計(jì)) 題 目: 網(wǎng)絡(luò)五子棋 學(xué) 號(hào): 姓 名: 甘祥 年 級(jí): 07 級(jí)計(jì)科( 2)班 學(xué) 院: 信息科學(xué)技術(shù)學(xué)院 系 別: 計(jì)算機(jī)科學(xué)與技術(shù) 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 指導(dǎo)教師: 李紅蕾 完成日期: 2011 年 5 月 1 日 網(wǎng)絡(luò)五子棋 - 2 - 摘 要 通過對(duì)網(wǎng)絡(luò)五子棋游戲算法和技術(shù)的研究,以 開發(fā)平臺(tái),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于 C/S 模式的網(wǎng)絡(luò)五子棋對(duì)戰(zhàn)游戲。本 設(shè)計(jì) 將一般的單機(jī)五子棋程序開發(fā)成了一種網(wǎng)絡(luò)游戲,其主要樂趣是實(shí)現(xiàn)人與人之間的對(duì)戰(zhàn),而不僅僅是人與事先設(shè)置的各種程序的對(duì)戰(zhàn),所以比普通的人機(jī)對(duì)戰(zhàn)游戲更加具有生命力和趣味性。 系統(tǒng)采用面向連接的 議作為主要通信協(xié)議,運(yùn)用絡(luò)編程 技術(shù)實(shí)現(xiàn)游戲客戶端和游戲服務(wù)器端之間的通訊,最后對(duì)程序?qū)崿F(xiàn)的功能進(jìn)行測試。 本文首先闡述網(wǎng)絡(luò)游戲的歷史、現(xiàn)狀及發(fā)展趨勢(shì)以及目前基于 序語言設(shè)計(jì)的網(wǎng)絡(luò)游戲的現(xiàn)狀;其次,詳細(xì)描述網(wǎng)絡(luò)五子棋的實(shí)現(xiàn);最后,通過對(duì)網(wǎng)絡(luò)五子棋游戲的進(jìn)行功能測試,達(dá)到預(yù)期目標(biāo)。本 設(shè)計(jì) 主要功能模塊 包括 服務(wù)器端模塊和客戶端模塊。 關(guān)鍵詞 :五子棋;網(wǎng)絡(luò)游戲; C/S 模式;網(wǎng)絡(luò)編程;測試 網(wǎng)絡(luò)五子棋 - 3 - on of IR I IR is / S a IR is to to a of so of a CP as of of of of on of of a of on to of C / S - 4 - 目 錄 摘 要 2 3 目 錄 4 1. 前言 6 2. 系統(tǒng)分析 9 求分析 9 行性分析 9 發(fā)環(huán)境分析 10 輯環(huán)境分析 11 行環(huán)境分析 11 3. 總體分析 12 計(jì)目標(biāo) 12 目規(guī)劃 12 4. 服務(wù)器端設(shè)計(jì) 14 務(wù)器端總體設(shè)計(jì) 14 務(wù)器端主界面設(shè)計(jì) 17 作事件的處理 18 務(wù)器的啟動(dòng)設(shè)計(jì) 19 于服務(wù)器端異常處理 21 5. 客戶端設(shè)計(jì) 23 盤界面的設(shè)計(jì) 23 盤規(guī)則的實(shí)現(xiàn) 25 接服務(wù)器端模塊設(shè)計(jì) 28 常情況的處理 29 網(wǎng)絡(luò)五子棋 - 5 - 6. 程序演示 31 7. 總結(jié) 37 致 謝 38 參考文獻(xiàn) 39 網(wǎng)絡(luò)五子棋 - 6 - 1. 前言 隨著網(wǎng)絡(luò)的發(fā)展和技術(shù)的進(jìn)步,各種編程語言隨之產(chǎn)生,發(fā)展卻是及其飛快的。 又是一種網(wǎng)絡(luò)程序設(shè)計(jì)語言。 實(shí)證明了它非常適合于開發(fā)大型軟件。當(dāng) 抽象、可讀性強(qiáng)的優(yōu)勢(shì)就體現(xiàn)出來了。這對(duì)于規(guī)模越來越龐大的游戲軟件來說,有著不小的誘惑。 本次課題就是一種基于 游戲是基于 C絡(luò)五子棋游戲不僅可以使 網(wǎng)絡(luò)上的兩個(gè)人進(jìn)行對(duì)弈,而且其他人也可以連接進(jìn)來對(duì)話。游戲分為服務(wù)器端和客戶端,通過創(chuàng)建通信協(xié)議來保證客戶機(jī)與服務(wù)器之間的正常通信。 游戲的主要模塊如下 表所示 : 網(wǎng)絡(luò)五子棋 - 7 - 表 1 絡(luò)五子棋模塊一覽表 模塊名 類 名 功能描述 用戶面板模塊 戶列表面板 戶聊天面板 戶輸入面板 戶操作面板 棋盤面板模塊 棋類 棋類 盤面板類 盤多線程類 服務(wù)器模塊 務(wù)器信息輸出面板 務(wù)器多線程類 務(wù)器端類 客戶端模塊 戶端類 戶端多線程類 國際比賽規(guī)則規(guī)定:對(duì)局中如黑方出現(xiàn)禁手,白方應(yīng)立即指出禁手點(diǎn),黑方即負(fù)。如白方在黑方出現(xiàn)禁手后,又落一步白子,黑棋禁手則不成立了。 所以在 有禁手 的房間里,如果黑方出現(xiàn)禁手,白方應(yīng)立即按下 禁手 按鈕。程序會(huì)判黑方 負(fù)。如果這時(shí)白方又在棋盤上落一子,黑棋禁手則不成立了。為了簡化用戶對(duì) 禁手 按鈕的使用,也有 走禁手就輸 和 禁手不能落子 規(guī)則的房間,顧名思義不多介紹。雖然采取了禁手的限制,黑棋先行仍有優(yōu)勢(shì),黑棋仍可以必勝。所以如果用戶是高段位的棋手 ,或者想成為高手一定要選擇國際上比賽選用的比賽標(biāo)準(zhǔn),即“三手網(wǎng)絡(luò)五子棋 - 8 - 交換,五手兩打”。 ( 1) 五子棋棋盤 棋盤正中一點(diǎn)為“天元”。棋盤兩端的橫線稱端線。棋盤左右最外邊的兩條縱線稱邊線。從兩條端線和兩條邊線向正中發(fā)展而縱橫交叉在第四條線形成的四個(gè)點(diǎn)稱為“星”。天元和星應(yīng)在棋盤上用直徑約 為 以持黑方為準(zhǔn),棋盤上的縱軸線從左到右用英文字母 A行線從近到遠(yuǎn)用阿拉伯?dāng)?shù)字 115標(biāo)記??v橫軸上的橫縱線交叉點(diǎn)分別用橫縱線標(biāo)記的名稱合寫成。如“天元” 個(gè)“星”分別為 ( 2) 五子棋比賽規(guī)則 行棋順序 黑先、白后,從天元開始相互順序落子。 判斷勝負(fù) 最先在棋盤橫向、豎向、斜向形成連續(xù)的相同色五個(gè)棋子的一方為勝。 黑棋禁手判負(fù) (白棋無禁手。黑棋禁手包括“三、三”(包括“四、三、三” )、“四、四” (包括“四、四、三” )、“長連” (黑棋只能以“四、三”取勝。 如分不出勝負(fù),則定為平局 ( 對(duì)局中中途退場判為負(fù)。 五連與禁手同時(shí)形成,先五為勝。 黑方禁手形成時(shí),白方應(yīng)立即指出。若白方未發(fā)現(xiàn)或發(fā)現(xiàn)后未指明而繼續(xù)應(yīng)子,則不能判黑方負(fù)。 網(wǎng)絡(luò)五子棋 - 9 - 2. 系統(tǒng)分析 求分析 對(duì)于普通五子棋博弈而言,需實(shí)現(xiàn)以下功能:有黑白兩種棋子,兩位棋手各執(zhí)一棋,率先五珠相連的獲勝。為此,需要設(shè)計(jì)黑白兩種棋子類及棋盤類并設(shè)計(jì)判斷獲勝的算法等。 對(duì)于網(wǎng)絡(luò)五子棋而言,在普通五子棋的基 礎(chǔ)上還需添加以下功能:擁有服務(wù)器端和客戶端,用戶通過客戶端登錄服務(wù)器后可與其他登錄的用戶進(jìn)行對(duì)弈;服務(wù)器支持多組用戶同時(shí)進(jìn)行對(duì)弈;用戶可以在服務(wù)器上創(chuàng)建新游戲或加入已創(chuàng)建的游戲;用戶在下棋的時(shí)候可以進(jìn)行聊天交流等。 綜上所述,將需要實(shí)現(xiàn)的網(wǎng)絡(luò)五子棋的功能羅列如下。 提供服務(wù)器和客戶端的功能。 服務(wù)器將監(jiān)視客戶端的登錄情況并允許多個(gè)客戶端進(jìn)行登錄。 用戶通過客戶端可以登錄服務(wù)器,之后可以看到服務(wù)器當(dāng)天在線的其他用戶,并與他們進(jìn)行聊天交流。 用戶登錄服務(wù)器后,可以創(chuàng)建新的五子棋游戲或加入已創(chuàng)建的五子棋游戲。 用 戶通過客戶端可以像普通五子棋那樣與其他用戶對(duì)弈。 行性分析 為了給游戲的設(shè)計(jì)提供依據(jù),對(duì)需求的分析進(jìn)行了總結(jié),對(duì)軟件的可行性分析如下: 網(wǎng)絡(luò)五子棋 - 10 - 1. 編寫的目的:對(duì)于計(jì)算機(jī)這一行業(yè),需要的是高技術(shù)和堅(jiān)忍不拔的意志,這一點(diǎn)在編程方面有所體現(xiàn)。學(xué)習(xí)使用 中定會(huì)受益匪淺。 2. 可行性分析的前提:網(wǎng)絡(luò)五子棋游戲必須對(duì)網(wǎng)絡(luò)的斷開和鏈接有著嚴(yán)格的控制,更要嚴(yán)格的遵守游戲的規(guī)則,必須對(duì)游戲的勝負(fù) 做 出相應(yīng)。網(wǎng)絡(luò)五子棋游戲的開發(fā)目的是為了讓多個(gè)用戶同時(shí) 在線,自由選擇對(duì)手進(jìn)行對(duì)弈,同時(shí)嚴(yán)格按照五子棋游戲的規(guī)則進(jìn)行游戲,滿足五子棋游戲愛好者的需求。 3. 對(duì)技術(shù)的支持分析:通過對(duì)游戲性質(zhì)的分析,該游戲可以開發(fā)為 C/S 的架構(gòu),同時(shí)該游戲可以通過網(wǎng)絡(luò)套接字的知識(shí)開發(fā)。 發(fā)環(huán)境分析 本次的網(wǎng)絡(luò)五子棋游戲開發(fā)所使用的語言選用 言是由于 一種高級(jí)面向?qū)ο笮偷某绦蛟O(shè)計(jì)語言。使用 到手持電話都有 發(fā)的程序和游戲, 序可以在任何的計(jì)算機(jī)、操作系統(tǒng)和支持 硬件設(shè)備上運(yùn)行。 ) ) 2370 2 2046存, 120G 硬盤 P 網(wǎng)絡(luò)五子棋 - 11 - 輯環(huán)境分析 程序的編輯環(huán)境其實(shí)只需記事本就可以了,但是一個(gè)好的編輯開發(fā)軟件可以大大的縮減編輯開發(fā)的時(shí)間,由于通過各方面觀察決定使用目前比較流行的 發(fā)軟件 。一個(gè)綜合開發(fā)環(huán)境( 是一個(gè)功能完整且成熟的軟件,由 001 年首次推出, 一個(gè)開放源代碼、基于 行環(huán)境分析 2 及以上處理器 ,32M 以上內(nèi)存, 4G 以上硬盤 9X/作系統(tǒng) 800*600 或以上的屏幕分辨率 網(wǎng)絡(luò)五子棋 - 12 - 3. 總體分析 計(jì)目標(biāo) 1. 實(shí)現(xiàn)需求分析階段所要求的功能 2. 服務(wù)器端要求 能 及時(shí)顯示客戶連接情況 3. 客戶端的信息交流完全通過服務(wù)器 端來傳遞 4. 客戶端游戲功能齊全 及 能對(duì)客戶的各個(gè)事件 做出 響應(yīng) 目規(guī)劃 游戲服務(wù)器端程序模塊實(shí)現(xiàn) . 游戲客戶端程序模塊實(shí)現(xiàn) . 游戲棋盤模塊實(shí)現(xiàn) . 該游戲主要分為服務(wù)器端和客戶端,其具體的功能模塊如下 : 圖 3軟件設(shè)計(jì)圖 作為服務(wù)器角色所具有的功能: 戶端 服務(wù)器 客戶端 網(wǎng)絡(luò)五子棋 - 13 - 圖 3服務(wù)器功能圖 作為客戶端所具有的功能: 圖 3客戶端功 能圖 角色 請(qǐng)求加入 作為白棋玩家 第一輪不可先下棋 角色 等待加入. 作為黑棋玩家 第一輪可以先下棋 網(wǎng)絡(luò)五子棋 - 14 - 4. 服務(wù)器端設(shè)計(jì) 網(wǎng)絡(luò)五子棋游戲服務(wù)器端主要是有 3 個(gè)類來完成: (主類 )、 (線程類 )和。 務(wù)器端總體設(shè)計(jì) 服務(wù)器端主要通過建立流連接來連接客戶端,與客戶端進(jìn)行相互通信、轉(zhuǎn)發(fā)信息。接收一客戶端的信息,接收信息后按照此客戶端的要求將信息發(fā)送到相應(yīng)的客戶端,服務(wù)器端起到了中介的作用。 繼承了 集成了服務(wù)器端的所有功能,包括與各客戶端之間的相互通信,轉(zhuǎn)發(fā)信息。 在主類 最重要的函數(shù)在此方法中初始化: 在循環(huán) 中不斷接受客戶端的信息,并啟動(dòng)了線程 對(duì)象,為每一個(gè)客戶端啟動(dòng)了一個(gè)線程,減輕了服務(wù)器端的承受能力。 在方法 e)實(shí)現(xiàn)了按鈕的控制功能, 鈕主要功能清空文本區(qū)的服務(wù)器信息。 鈕顯示服務(wù)器信息在文本區(qū)。 網(wǎng)絡(luò)五子棋 - 15 - 鈕關(guān)閉服務(wù)器,與客戶端斷開連接。 線程是由 來實(shí)現(xiàn)的, 的對(duì)象不僅可以獲取套接字、輸入輸出流,而且它還提供了有關(guān)客戶機(jī)的信息,例如客戶機(jī)的名稱、房間號(hào)、游戲的開始和結(jié)束等??蛻舳讼⒌膫鬟f處理主要是負(fù)責(zé)接收和發(fā)送客戶端的信息。 圖 4服務(wù)器通信的原理 在多線程的情況下,由于同一進(jìn)程的多個(gè)線程共享同一片存儲(chǔ)空間,在帶來方便的同時(shí),也帶來了訪問沖突這個(gè)嚴(yán)重的問題。 言提供了專門機(jī)制以解決這種沖突,有效避免了同一個(gè)數(shù)據(jù)對(duì)象被多個(gè)線程同時(shí)訪問。 由于可以通過 鍵字來保證數(shù)據(jù)對(duì)象只能被方法訪問,所以我們只需針對(duì)方法提出一套機(jī)制,這套機(jī)制就是 鍵字, 這里我們使用 。 控制對(duì)類成員變量的訪問:每個(gè)類實(shí)例對(duì)應(yīng)一把鎖,每個(gè) 都必須獲得調(diào)用該 塊 的類實(shí)例的鎖方能執(zhí)行,否則所屬線程阻塞,方法一旦執(zhí)行,就獨(dú)占P:絡(luò)五子棋 - 16 - 該鎖,直到從該方法返回時(shí)才將鎖釋放,此后被阻塞的線程方能獲得該鎖,重新進(jìn)入可執(zhí)行狀態(tài)。這種機(jī)制確保了同一時(shí)刻對(duì)于每一個(gè)類實(shí)例,其所有聲明為 成員函數(shù)中至多只有一個(gè)處于可執(zhí)行狀態(tài)(因?yàn)橹炼嘀挥幸粋€(gè)能夠獲得該類實(shí)例對(duì)應(yīng)的鎖),從而有效避免了類成員變量的訪問沖突(只要所有可能訪問類成員變量的方法均被聲明為 在 ,不光是類實(shí)例,每一個(gè)類也對(duì)應(yīng) 一把鎖,這樣我們也可將類的靜態(tài)成員函數(shù)聲明為 以控制其對(duì)類的靜態(tài)成員變量的訪問。 :通過 鍵字來聲明。 代碼 如下: /加新映射 ); /除舊映射 ; /發(fā)送新名字到客戶端 +(/+(+); /發(fā)送 戶端 (/+; 是這樣一個(gè)代碼塊,其中的代碼必須獲得對(duì)象 如前所述,可以是類實(shí)例或類)的鎖方能執(zhí)行,具體機(jī)制同前所述。由于可以針對(duì)任意代碼塊,且可任網(wǎng)絡(luò)五子棋 - 17 - 意指定上鎖的對(duì)象,故靈活性較高。 務(wù) 器 端主界面設(shè)計(jì) 圖 4五子棋服務(wù)器 繼承 面板類的子類,主要來實(shí)現(xiàn)服務(wù)器端的界面布局,在面板類的子類里添加了一個(gè)標(biāo)簽和一個(gè)文本區(qū)。標(biāo)簽: 本區(qū): 定義了兩個(gè)面板類 將整個(gè)面板類的子類的布局設(shè)為 布局設(shè)為 布局設(shè)為 ); 網(wǎng)絡(luò)五子棋 - 18 - ); ); 然后將標(biāo)簽: 本區(qū): 加到。最后在主類里添加了三個(gè)按鈕加到了窗體中,在主類的構(gòu)造函數(shù)中對(duì)整個(gè)服務(wù)器端的界面進(jìn)行了布局。 作事件的處理 上面的主界面設(shè)計(jì)完了后,對(duì)于上面的控件需要注冊(cè)動(dòng)作事件后才能實(shí)現(xiàn)一定的功能。通過分析主界面中只有按鈕需要進(jìn)行動(dòng)作事件的處理。 ); 按鈕事件執(zhí)行: if(= +:+n); n); ); 網(wǎng)絡(luò)五子棋 - 19 - 務(wù)器的啟動(dòng)設(shè)計(jì) 服務(wù)器的啟動(dòng)分以下幾步: (1)新建服務(wù)器對(duì)象 ) ; (2)啟動(dòng)服務(wù)器流程 +); ); ; ; ; 網(wǎng)絡(luò)五子棋 - 20 - 以上設(shè)計(jì)中的 類 對(duì)象,于表示服務(wù)器套接字。服務(wù)器套接字通過指定的端口號(hào)來等待連接的套接字。服務(wù)器套接字一次只能和一個(gè)套接字連接。 表示套接字,使用 ,需要指定待連接服務(wù)器的 址及端口號(hào)。 服務(wù)器套接字等待客戶機(jī)的連接請(qǐng)求,并創(chuàng)建新的套接字使其與客戶機(jī)的套接字連接, 而本身繼續(xù)等待其他的客戶機(jī)的連接請(qǐng)求。 圖 4接字連接 對(duì)于客戶端消息處理機(jī)制 為了保證服務(wù)器和客戶機(jī)間正常的通 信,我們需要確定所(1) 服務(wù)器套接字 (2) (3) 服務(wù)器套接字 套接字 客戶端套接字 連 接 試圖連 接 客戶端套接字 服務(wù)器套接字 網(wǎng)絡(luò)五子棋 - 21 - 有交換的信息屬于何種類型。假設(shè)兩個(gè)玩家同時(shí)連接上服務(wù)器 ,要求進(jìn)行對(duì)弈。首先,一名玩家點(diǎn)擊開始按鈕,向服務(wù)器發(fā)送 “ 消息,另一個(gè)玩家也向服務(wù)器發(fā)送“ 消息 ,然后服務(wù)器將會(huì)認(rèn)為兩名玩家要進(jìn)行對(duì)弈。 于服務(wù)器端異常處理 首先是對(duì)于服務(wù)器端的啟動(dòng),當(dāng)啟動(dòng)發(fā)生異常時(shí)系統(tǒng)將會(huì)拋出異常 ,所以需要對(duì)異常情況進(jìn)行處理。 于異常的處理是通過 句來實(shí)現(xiàn)的。使用句可以保證程序在發(fā)生異常的時(shí)候能繼續(xù)的執(zhí)行下去,而不是中斷退出。下面是實(shí)現(xiàn)異常捕獲的功能代碼: ); ; ; ; 網(wǎng)絡(luò)五子棋 - 22 - 對(duì)于服務(wù)器異常的處理使用彈出提示框的形式實(shí)現(xiàn),下面是其功能代碼: 經(jīng)過以上設(shè)計(jì)服務(wù)器端已基本實(shí)現(xiàn)了。 網(wǎng)絡(luò)五子棋 - 23 - 5. 客戶端設(shè)計(jì) 客戶端設(shè)計(jì)主要包括兩個(gè)模塊的設(shè)計(jì),棋盤類的設(shè)計(jì)和連接服務(wù)器端的設(shè)計(jì)。棋盤類不僅要設(shè)計(jì)出棋盤界面來而且需要對(duì)下棋的規(guī)則進(jìn)行設(shè)計(jì),需要對(duì)鼠標(biāo)事 件進(jìn)行設(shè)計(jì)。連接服務(wù)器的設(shè)計(jì)需要設(shè)計(jì)出如何與服務(wù)器端連接的線程出來。 盤界面的設(shè)計(jì) ( 1) 首先不管動(dòng)作事件,要設(shè)計(jì)出棋盤界面出來 : 圖 5五子棋客戶端 、 、 、 、都繼承 是 子類。 網(wǎng)絡(luò)五子棋 - 24 - 在主類 ,將其布局方式設(shè)為 義 對(duì)象添加進(jìn)去 ); 定義 對(duì)象, 對(duì)象添加進(jìn)去 定義 對(duì)象添加進(jìn)去, 棋盤類的實(shí)現(xiàn)是正把整個(gè)棋盤抽象為一個(gè)二維數(shù)組,棋子類的實(shí)現(xiàn)通過在 方法中畫圓設(shè)置背景色來區(qū)別黑白棋子。 黑棋子: ,0,14,14); 白棋子: ,0,14,14); 向組件繪制圖形時(shí),并不是直接向其繪制圖形,而是先將待繪制圖形繪制到緩沖區(qū)中,然后再將已經(jīng)繪制于緩沖區(qū)圖網(wǎng)絡(luò)五子棋 - 25 - 形繪制到組件上。這種繪制圖形的技術(shù)稱為雙緩沖,用于消除圖像閃爍現(xiàn)象。 g) i=40;i=380;i=i+20) 0,i,400,i); 0,400,400,400); j=40;j=380;j=j+20) j,40,j,400); 00,40,400,400); 7,97,6,6); 37,97,6,6); 7,337,6,6); 37,337,6,6); 17,217,6,6); 盤規(guī)則的實(shí)現(xiàn) 程序中最 重要的部分是如何決定勝負(fù)。橫豎、或是對(duì)角線方向上擁有五顆同顏色的棋子時(shí),及為勝利。 方法是用于查找并計(jì)算連在一起的五顆棋子。下面是 代碼的總體框架: /判斷當(dāng)前狀態(tài)是否為勝利狀態(tài) a,b, ,; if(1) ; /以 下每對(duì) 環(huán)語句為一組,因?yàn)檫@樣使得下 棋 的位置能網(wǎng)絡(luò)五子棋 - 26 - 中間而非兩端 ;4;) /遍歷相鄰 4 個(gè)網(wǎng)絡(luò) ;) /遍歷棋盤上所有黑棋子 (a+20= & (b*20)=) /判斷當(dāng)前下的棋子的右邊 4 個(gè)棋子是 否都為黑棋 ; if(5) /五子相連時(shí),勝利 if() ; /若中間有一個(gè)棋子非黑棋,則會(huì)進(jìn)入此分支,此時(shí)無需再遍歷 依次再判斷當(dāng)前下的棋子的左邊、上邊、下邊、左上方向、右下方向、右上方向、左下方向 4 個(gè)棋子是否都為黑棋 ,代碼如下: (20= & (b*20=) a*20= & (b+20=) ) 網(wǎng)絡(luò)五子棋 - 27 - a*20= & (20=) (20= & (b+20=) (a+20= & (20=) (a+20= & (b+20=) (20= & (20=) (a+20= & (b*20=) (20= & (b*20=) a*20= & (b+20=) 網(wǎng)絡(luò)五子棋 - 28 - a*20= & (20=) (20= & (b+20=) (a+20= & (20=) (a+20= & (b+20=) (20= & (20=) 接服務(wù)器端模塊設(shè)計(jì) 服務(wù)器端主要通過建立流連接來連接客戶端,與客戶端進(jìn)行相互通信、轉(zhuǎn)發(fā)信息。接收一客戶端的信息,接收信息后按照此客戶端的要求將信息發(fā)送到相應(yīng)的客戶端,服務(wù)器端起到了中介的作用。 繼承了 集成了服務(wù)器端的所有功能,包括與各客戶端之間的相互通信,轉(zhuǎn)發(fā)信息。 在主類 最重要的函數(shù)在此方法中初始化: 網(wǎng)絡(luò)五子棋 - 29 - 在循環(huán) 中不斷接受客戶端的信息,并啟動(dòng)了線程 對(duì)象,為每一個(gè)客戶端啟動(dòng)了一個(gè)線程,減輕了服務(wù)器端的承受能力。 在方法 e)實(shí)現(xiàn)了按鈕的控制功能, 鈕主要功能清空文本區(qū)的服務(wù)器信息。 鈕顯示服務(wù)器信息在文本區(qū)。 鈕關(guān)閉服務(wù)器,與客戶端斷開連接。 常情況的處理 對(duì)于一些動(dòng)作事件可能會(huì)出現(xiàn)異常而導(dǎo)致程序中斷,所以要對(duì)異常情況進(jìn)行處理。對(duì)于異常的處理是使用 句。 首先對(duì)于客戶機(jī)連接的情況來說當(dāng)客戶機(jī)連接不上的時(shí)候,需要將有關(guān)的信息返回給客戶 。 網(wǎng)絡(luò)五子棋 - 30 - 圖 5連接服務(wù)器失敗 至此已經(jīng)大致的介紹了客戶端的設(shè)計(jì),服務(wù)器端和客戶端已經(jīng)基本實(shí)現(xiàn)了它們所需要的功能。 網(wǎng)絡(luò)五子棋 - 31 - 6. 程序演示 此小 節(jié)將演示創(chuàng)建的網(wǎng)絡(luò)五子棋。首先啟動(dòng)服務(wù)器,件,在文件中的任一行單擊鼠標(biāo)右鍵,在彈出的菜單中單擊“運(yùn)行方式”命令,并選擇“ 用程序”命令,若成功運(yùn)行則出現(xiàn)如圖所示的五子棋服務(wù)器界面。 圖 6五子棋服務(wù)器 成功運(yùn)行 接著打開 件,按上述方法運(yùn)行,若成功運(yùn)行則出現(xiàn)如圖所示的五子棋客戶端界面。 網(wǎng)絡(luò)五子棋 - 32 - 圖 6打開 五子棋客戶端 單擊客戶端界面上的“連接服務(wù)器”按鈕,連接到主機(jī),若成功連接則會(huì)出現(xiàn)如圖所示的提示信息。 網(wǎng)絡(luò)五子棋 - 33 - 圖 6連接服務(wù)器成功 此時(shí),單擊界面上的“創(chuàng)建游戲”按鈕創(chuàng)建游戲,若成功則會(huì)給信息要求等待對(duì)手加入,如圖所示。 網(wǎng)絡(luò)五子棋 - 34 - 圖 6建游戲成功 再次運(yùn)行 開一個(gè)新的客戶端,單擊“連接服務(wù)器”按鈕,成功的話會(huì)看到已經(jīng)創(chuàng)建游戲的用戶,如圖所示。 網(wǎng)絡(luò)五子棋 - 35 - 圖 6打開 另一個(gè)五子棋服務(wù)器 選擇剛才創(chuàng)建游戲的用戶名后,單擊界面上的“加入游戲”按鈕加入游戲,若成功則等待對(duì)方下棋,此時(shí)之前創(chuàng)建游戲的用戶界面將提示開始下棋,一場五子棋賽就此拉開帷幕。用戶將輪流下棋直到?jīng)Q出勝負(fù),如圖所示。 網(wǎng)絡(luò)五子棋 - 36 - 圖 6五子棋對(duì)戰(zhàn)界面 這里介紹了創(chuàng)建 絡(luò)五子棋的方法,由于網(wǎng)絡(luò)五子棋同時(shí)涉及 絡(luò)編程、多線程編程及五子棋勝利算法設(shè)計(jì)等方面,所以本工程有一定的復(fù)雜度。為了實(shí)現(xiàn)網(wǎng)絡(luò)功能,用到了 創(chuàng)建套接口,使用數(shù)據(jù)輸入輸出流的相關(guān)方法來監(jiān)聽網(wǎng)絡(luò)信號(hào)并發(fā)送相應(yīng)信息。為了支持多組用戶同時(shí)下棋,對(duì)棋盤、服務(wù)器及客戶端增添了多線程功能。 網(wǎng)絡(luò)五子棋 - 37 - 7. 總結(jié) 通過本次畢業(yè)設(shè)計(jì)的練習(xí),我對(duì)這種實(shí)時(shí)性要求高的游戲開發(fā)有了詳細(xì)的了解,通過該游戲的模型,我對(duì) 言程序設(shè)計(jì)有了更進(jìn)一步的了解。 1 數(shù)組的巧 妙應(yīng)用法:本程序的棋盤就利用了數(shù)組,將棋子的代號(hào)放進(jìn)數(shù)組中,這樣有利于確定棋子位置狀態(tài)。 2 網(wǎng)絡(luò)套接字的開發(fā)方法:該技術(shù)是 序員必備的一項(xiàng)技術(shù),也是進(jìn)行桌面版游戲開發(fā)所必不可少的一項(xiàng)技術(shù),特別是對(duì)于一些實(shí)時(shí)性要求高的應(yīng)用。 3 游戲通信方法:本程序是通過字符串傳遞信息的,傳遞時(shí)應(yīng)該遵循一定的通信協(xié)議。 4 相關(guān)知識(shí):其中比較重要的是抗鋸齒的使用方法。通過抗鋸齒這個(gè)特點(diǎn),使棋子變得更加平滑美觀。 5 線程的使用方法:本程序中到處是通過線程工

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論