JAVA課程設(shè)計(jì)圍棋對(duì)弈(含代碼).doc_第1頁(yè)
JAVA課程設(shè)計(jì)圍棋對(duì)弈(含代碼).doc_第2頁(yè)
JAVA課程設(shè)計(jì)圍棋對(duì)弈(含代碼).doc_第3頁(yè)
JAVA課程設(shè)計(jì)圍棋對(duì)弈(含代碼).doc_第4頁(yè)
JAVA課程設(shè)計(jì)圍棋對(duì)弈(含代碼).doc_第5頁(yè)
已閱讀5頁(yè),還剩47頁(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)介

摘要 圍棋作為一個(gè)棋類競(jìng)技運(yùn)動(dòng),在民間十分流行,為了熟悉五子棋規(guī)則及技 巧,以及研究簡(jiǎn)單的人工智能,決定用Java開發(fā)五子棋游戲。主要完成了人機(jī)對(duì) 戰(zhàn)和玩家之間聯(lián)網(wǎng)對(duì)戰(zhàn)2個(gè)功能。網(wǎng)絡(luò)連接部分為Socket編程應(yīng)用,客戶端和服 務(wù)器端的交互用Class Message定義,有很好的可擴(kuò)展性,客戶端負(fù)責(zé)界面維護(hù)和收集用戶輸入的信息 ,及錯(cuò)誤處理。服務(wù)器維護(hù)在線用戶的基本信息和任意兩個(gè)對(duì)戰(zhàn)用戶的棋盤信息 ,動(dòng)態(tài)維護(hù)用戶列表。在人機(jī)對(duì)弈中通過(guò)深度搜索和估值模塊,來(lái)提高電腦棋手 的智能。分析估值模塊中的影響精準(zhǔn)性的幾個(gè)要素,以及提出若干提高精準(zhǔn)性的 辦法,以及對(duì)它們搜索的節(jié)點(diǎn)數(shù)進(jìn)行比較,在這些算法的基礎(chǔ)上分析一些提高電 腦AI方案,如遞歸算法、電腦學(xué)習(xí)等。算法的研究有助于理解程序結(jié)構(gòu),增強(qiáng)邏 輯思維能力,在其他人工智能方面也有很大的參考作用。 關(guān)鍵詞關(guān)鍵詞:圍棋,信息自動(dòng)化,游戲,java ABSTRACT As a chess athletic sports, the folk very popular, to familiar with renju rules and skills, and research simple artificial intelligence, decided to use Java development renju game. Main completed the man-machine against and between players networking against two functions. Network connection parts for Socket programming application, the client and the server interaction with scale-up macro definition, have very good scalability, the client is responsible for maintenance and collect user interface input, and error handling. Server maintenance, online users of the basic information and any two against the user board information, dynamic maintenance user list. In the man-machine right through the depth search and valuations module, to improve the intelligent computer player. Analyses the influence of valuation module precision of several elements, and puts forward some measures of improving precision, and they search number of nodes in the comparison, in these algorithm is analyzed on the basis of some improve computer AI scheme, such as recursion algorithm, computer learning, etc. The algorithm for help to understand the program structure, strengthen the logical thinking ability, in other artificial intelligence also have very great reference role. KeywordsKeywords: information automation , games , Java 目目 錄錄 ABSTRACT.II 目目 錄錄.III 第第1章章 引言引言.1 1.1 背景.1 1.2 課程設(shè)計(jì)內(nèi)容.2 1.3 任務(wù)分工.3 第第2章章 圍棋對(duì)弈系統(tǒng)圍棋對(duì)弈系統(tǒng).3 2.1 圍棋概述.3 2.1.1圍棋定義.4 2.1.2 開發(fā)圍棋的任務(wù)及目的.5 2.2 主要系統(tǒng)介紹.6 第第3章章 圍棋對(duì)弈系統(tǒng)的設(shè)計(jì)圍棋對(duì)弈系統(tǒng)的設(shè)計(jì).7 3.1 系統(tǒng)需求分析.7 用戶登陸界面圖.7 3.2 系統(tǒng)開發(fā)及運(yùn)行環(huán)境.9 3.3 系統(tǒng)主要功能要求.10 3.4.系統(tǒng)總體結(jié)構(gòu).11 第第4章章 圍棋對(duì)弈系統(tǒng)的具體實(shí)現(xiàn)圍棋對(duì)弈系統(tǒng)的具體實(shí)現(xiàn).12 4.1界面設(shè)計(jì).12 4.1.1用戶登陸界面圖.12 4.1.2用戶注冊(cè)界面圖.13 4.1.3 系統(tǒng)主界面.16 第第5章章 結(jié)束語(yǔ)結(jié)束語(yǔ).19 致謝致謝.19 參考文獻(xiàn)參考文獻(xiàn).19 第第1章章 引言引言 1.11.1 背景背景 圍棋是一種智力游戲,起源于中國(guó)。中日韓是現(xiàn)今圍棋的三大支柱,但近年來(lái)日本圍棋逐步衰弱,形成了中 韓爭(zhēng)霸的局面。 圍棋是中華民族傳統(tǒng)文化中的瑰寶,它體現(xiàn)了中華民族對(duì)智慧的追求,古人常以“琴棋書畫”論及一個(gè)人的 才華和修養(yǎng),其中的“棋”指的就是圍棋。被人們形象地比喻為黑白世界的圍棋,是我國(guó)古人所喜愛(ài)的娛樂(lè) 競(jìng)技活動(dòng),同時(shí)也是人類歷史上最悠久的一種棋戲。由于它將科學(xué)、藝術(shù)和競(jìng)技三者融為一體,有著發(fā)展智 力,培養(yǎng)意志品質(zhì)和機(jī)動(dòng)靈活的戰(zhàn)略戰(zhàn)術(shù)思想意識(shí)的特點(diǎn),因而,幾千年來(lái)長(zhǎng)盛不衰, 并逐漸地發(fā)展成了一種國(guó)際性的文化競(jìng)技活動(dòng)。 圍棋是一種策略性二人棋類游戲,使用格狀棋盤及黑白二色棋子進(jìn)行對(duì)弈。目前圍棋流行于亞太,覆蓋世界 范圍,是一種非常流行的棋類游戲。 中國(guó)圍棋規(guī)則是數(shù)子法,圍棋的本質(zhì)是:誰(shuí)的占地面積大誰(shuí)獲勝。 圍棋的規(guī)則十分簡(jiǎn)單,卻擁有十分廣闊的落子空間,使得圍棋變化多端,比其它棋類復(fù)雜深?yuàn)W。這就是圍棋 的魅力所在。下圍棋對(duì)人腦的智力開發(fā)很有幫助,可增強(qiáng)一個(gè)人的計(jì)算能力、創(chuàng)造能力、思維能力、判斷能 力,也能提高人的注意力和控制力。下圍棋對(duì)兒童少年的智力發(fā)展起到積極作用,使他們能更好的分析事物 。 Java語(yǔ)言是當(dāng)今最為流行的程序設(shè)計(jì)語(yǔ)言之一 作為一門非常優(yōu)秀和極為健壯的編程語(yǔ)言,它同時(shí)具有的面向?qū)ο?,與平臺(tái)無(wú)關(guān) ,分布式應(yīng)用,安全,穩(wěn)定和多線程等優(yōu)良的特征,使用Java語(yǔ)言,不僅可以開 發(fā)出功能強(qiáng)大的大型應(yīng)用程序,而且Java語(yǔ)言本身突出的跨平臺(tái)的特性也使得它 特別適合于Internet上的應(yīng)用開發(fā),可以這樣說(shuō),Java的出現(xiàn)使得所開發(fā)的應(yīng)用程 序“一次編寫,處處可用”的實(shí)現(xiàn)成為了可能。 近來(lái)隨著計(jì)算機(jī)的快速發(fā)展,各種各樣的電腦游戲?qū)映霾桓F,使得我們能有更多 的娛樂(lè)項(xiàng)目,而棋類游戲能起到鍛煉人的思維和修身養(yǎng)性的作用,而且棋類游戲 水平頗高,大有與人腦分庭抗禮之勢(shì)。其中戰(zhàn)勝過(guò)國(guó)際象棋世界冠軍- 卡斯帕羅夫的“深藍(lán)”便是最具說(shuō)服力的代表。 越來(lái)越多的具有智能的機(jī)器進(jìn)入了人類的生活,人工智能的重要性如今顯而易見(jiàn) 。自己對(duì)人工智能比較感興趣,而圍棋游戲程序的開發(fā)實(shí)現(xiàn)這個(gè)課題,正好提供 給我這樣一個(gè)研究的機(jī)會(huì),通過(guò)對(duì)人工智能中博弈方面的研究(人機(jī)對(duì)弈),讓 我在簡(jiǎn)單的人機(jī)對(duì)弈全局設(shè)計(jì),以及具體到相關(guān)算法上有了深入的了解。人工智 能屬于計(jì)算機(jī)科學(xué)的領(lǐng)域,它以計(jì)算機(jī)技術(shù)為基礎(chǔ),近幾十年來(lái),它的理論和技 術(shù)已經(jīng)日益成熟,應(yīng)用領(lǐng)域也正在不斷擴(kuò)大,顯示出強(qiáng)大的生命力。人工智能大 致可以分成幾個(gè)學(xué)科,它們每一個(gè)都是獨(dú)特的,但是它們常常又互相結(jié)合起來(lái)完 成設(shè)計(jì)任務(wù),這時(shí),這些學(xué)科之間的差別就變的很模糊。人工智能在專家系統(tǒng), 自然語(yǔ)言理解,自動(dòng)定理證明,自動(dòng)程序設(shè)計(jì),人工智能在機(jī)器人學(xué)、模式識(shí)別 、物景分析、數(shù)據(jù)庫(kù)的智能檢索、機(jī)器下棋(實(shí)質(zhì)上是博弈論問(wèn)題)和家用電器 智能化等領(lǐng)域都有廣泛的應(yīng)用。而這個(gè)課題就是和人工智能中的博弈論領(lǐng)域緊密 相關(guān)的。 這個(gè)題目核心是人工智能和Socekt編程,。并且人工智能中的博弈部分,由于采 用了大量的搜索算法,其中很多被利用到各方面。它的概念、方法和技術(shù),正在 各行各業(yè)廣泛滲透。智能已經(jīng)成為當(dāng)今各種新產(chǎn)品、新裝備的發(fā)展方向。所以, 趁著這個(gè)機(jī)會(huì),對(duì)人工智能中比較容易實(shí)現(xiàn)的人機(jī)博弈進(jìn)行了解研究學(xué)習(xí),也是 很實(shí)用且很有必要的。 1.21.2 課程設(shè)計(jì)內(nèi)容課程設(shè)計(jì)內(nèi)容 此課程設(shè)計(jì)是一個(gè)小游戲(圍棋)的實(shí)現(xiàn),主要運(yùn)用了GUI(用戶圖形界面)API(應(yīng)用程序借口)來(lái)實(shí)現(xiàn)。此程 序沒(méi)有用到圖片的引用,棋盤和棋子的設(shè)計(jì)完全是應(yīng)用函數(shù)繪制, 再加入復(fù)選框,按鈕,標(biāo)簽及實(shí)現(xiàn)本游戲的用戶界面布局。 在頁(yè)面上通過(guò)單純的JCreator實(shí)現(xiàn)的下棋程序,能夠?qū)崿F(xiàn)提子,打劫等簡(jiǎn)單的下棋功能。更好的掌握java編程 以及布局和設(shè)計(jì)。通過(guò)課程設(shè)計(jì)把課堂上講的內(nèi)容融會(huì)貫通,學(xué)會(huì)設(shè)計(jì)程序、開發(fā)應(yīng)用軟件、開發(fā)系統(tǒng)軟件 等各項(xiàng)工作。通過(guò)實(shí)習(xí)掌握語(yǔ)言的語(yǔ)法結(jié)構(gòu),理解類和對(duì)象的概念,準(zhǔn)確的使用各種數(shù)據(jù)類型,對(duì)面向?qū)ο?中的繼承和多態(tài)的概念要理解、會(huì)使用,在程序中提高代碼的重用性,使設(shè)計(jì)的程序結(jié)構(gòu)清晰、易于維護(hù)。 一、棋盤 盤面有縱橫各十九條等距離、垂直交叉的平行線,共構(gòu)成1919361個(gè)交叉點(diǎn)(以下簡(jiǎn)稱為 “點(diǎn)”)。 在盤面上標(biāo)有幾 個(gè)小圓點(diǎn)。稱為星位,中央的星位又稱“天元”。 二、棋子 棋子分黑白兩色。均為扁圓形。 棋子的數(shù)量以黑子181、白子180個(gè)為宜。 三、圍棋的下法 一、對(duì)局雙方各執(zhí)一色棋子,黑先白后,交替下子,每次只能下一子。 二、棋子下在棋盤的點(diǎn)上。 三、棋子下定后,不得向其他點(diǎn)移動(dòng)。 四、輪流下子是雙方的權(quán)利,但允許任何一方放棄下子權(quán)。 四、棋子的氣 一個(gè)棋子在棋盤上,與它直線緊鄰的空點(diǎn)是這個(gè)棋子的“氣”。 棋子直線緊鄰的點(diǎn)上,如果有同色棋子存在,則它們便相互連接成一個(gè)不可分割的整體。它們的氣也應(yīng)一并 計(jì)算。 棋子直線緊鄰的點(diǎn)上,如果有異色棋子存在,這口氣就不復(fù)存在。如所有的氣均為對(duì)方所占據(jù),便呈無(wú)氣狀 態(tài)。無(wú)氣狀態(tài)的棋子不能在棋盤上存在,也就是第四條提子。 五、提子 把無(wú)氣之子提出盤外的手段叫“提子”。 提子有二種: 一、下子后,對(duì)方棋子無(wú)氣,應(yīng)立即提取。 二、下子后,雙方棋子都呈無(wú)氣狀態(tài),應(yīng)立即提取對(duì)方無(wú)氣之子。 六、計(jì)算勝負(fù) 1、貼3又3/4子的規(guī)則 第一步,把死子撿掉。第二步,只數(shù)一方圍得點(diǎn)(叫做目)并記錄下來(lái)(一般圍得點(diǎn)以整十目為單位),再 數(shù)剛才那一方的子數(shù)并記錄下來(lái),再把目數(shù)和子數(shù)加起來(lái)。第三步,如果數(shù)的是黑棋,再減去3又3/4子,如 果數(shù)的是白棋,再加上3又3/4子。第四步,結(jié)果和180又1/2(棋盤361個(gè)點(diǎn)的一半)比較,超過(guò)就算勝,否則 判負(fù)。 2、讓先與讓子 讓先不貼目,讓子要貼還讓子數(shù)的一半(就當(dāng)被讓方是預(yù)先收了單官)。 1.31.3 任務(wù)分工任務(wù)分工 第第2章章 圍棋對(duì)弈系統(tǒng)圍棋對(duì)弈系統(tǒng) 2.12.1 圍棋概圍棋概述述 網(wǎng)絡(luò)圍棋在中國(guó)的出現(xiàn)幾乎跟隨著互聯(lián)網(wǎng)同步成長(zhǎng),1998年, 聯(lián)眾率先推出了網(wǎng)絡(luò)圍棋對(duì)弈。幾年來(lái)各大網(wǎng)絡(luò)圍棋平臺(tái)先后 上線,出身各異,水平也參差不齊。根據(jù)網(wǎng)絡(luò)資料顯示,截止 2007年底,中國(guó)網(wǎng)絡(luò)圍棋平臺(tái)平均在線人數(shù)達(dá)6萬(wàn)人。 大型的游戲平臺(tái)如QQ游戲、聯(lián)眾游戲中都有圍棋游戲。也就是 說(shuō)QQ圍棋、聯(lián)眾圍棋都是鑲嵌在其游戲平臺(tái)之上。依靠游戲平 臺(tái)用戶人數(shù)的優(yōu)勢(shì),這兩個(gè)平臺(tái)圍棋用戶人數(shù)占據(jù)了網(wǎng)絡(luò)圍棋 用戶的半數(shù)之多。 但根據(jù)專業(yè)人士分析:這部分用戶無(wú)論在產(chǎn)品使用深度和對(duì)圍 棋的認(rèn)知上是絕對(duì)的新手,淺嘗輒止,他們大多是過(guò)客。同時(shí) 他們的圍棋軟件本身也不夠?qū)I(yè)。專業(yè)的網(wǎng)絡(luò)圍棋平臺(tái)才是中 國(guó)網(wǎng)絡(luò)圍棋普及和發(fā)展的出路。 目前國(guó)內(nèi)的專業(yè)網(wǎng)絡(luò)圍棋平臺(tái),大致可分使用韓產(chǎn)軟件和國(guó) 產(chǎn)軟件兩大類。國(guó)內(nèi)專業(yè)圍棋平臺(tái)的領(lǐng)軍人物弈城、TOM, 便 是使用韓產(chǎn)軟件的代表。兩平臺(tái)能夠?qū)崿F(xiàn)中韓對(duì)壘的特性,為 他們吸引了不少高水平的棋手,并受到棋友的廣泛認(rèn)可。但他 們同樣有一個(gè)死穴,就是兩家皆為購(gòu)買韓國(guó)軟件,不掌握主動(dòng) 權(quán),因此根本無(wú)法保證軟件的及時(shí)更新,容易受制于韓方?!稗?城事件”便將這個(gè)致命缺點(diǎn)暴露無(wú)疑。 經(jīng)典的圍棋系統(tǒng)有:Handtalk,Goemate,Wulu,他是陳志行的作品,曾多次獲得過(guò) 冠軍。在他的指導(dǎo)下一個(gè)研究小組編寫了烏鷺(WUIU),也在比賽中取得過(guò)亞軍。 Handtalk是用匯編語(yǔ)言編寫的,執(zhí)行速度快,程序本身也不大。由于程序并不大 ,可以推側(cè)出其所用到的模式資料也不多。Handtalk在大多數(shù)的情況下都不會(huì)失 誤,作者本人曾提到他是用到一種類似人類棋手在下圍棋時(shí)常用到的手割法來(lái)幫 助判斷的。Handtalk與其它的程序明顯不同的地方是它的攻殺能力特別強(qiáng),在大 多數(shù)的比賽中,都是通過(guò)吃掉對(duì)方幾塊棋而獲勝。這是由于程序的棋塊安危判斷 能力、形勢(shì)判斷能力、眼位判斷能力和模式匹配能力都很強(qiáng)的關(guān)系.這些系統(tǒng)的好 壞,跟設(shè)計(jì)者的棋力關(guān)系很大,作者本人具有近職業(yè)水準(zhǔn)的棋力,對(duì)Handtalk的 編寫很有 2.1.1圍棋定義圍棋定義 圍棋是人生的模擬。 開局時(shí),盤上一片空白,就好像一個(gè)剛剛有了自覺(jué)意識(shí)的小孩,睜開了懵懂 的雙眼,開始了自己的人生之路。開局時(shí),你可以有各種選擇,自由度最大,走 哪一步都不會(huì)讓你立刻輸?shù)簟?布局基本上是興趣的顯示,有喜歡大模樣的,那是寄希望于未來(lái)的做法;有 現(xiàn)實(shí)地?fù)瓶盏模挥许槕?yīng)對(duì)方的思路,不知不覺(jué)中達(dá)到自己目的的;也有處處與對(duì) 方作對(duì),即使自己不爽,也要給對(duì)方添堵的。 由于棋盤的廣大,不可能面面俱到地行棋。過(guò)程中,對(duì)局者不斷地在判斷、 取舍,好像人生開始在選擇自己的道路了??粗@里想要,那里也想要,可是沒(méi) 法面面俱到,終究只能選取一條路。有時(shí)候,你的招法對(duì)路,越走越暢,有的時(shí) 候就有問(wèn)題,想要的沒(méi)要到,越下越添堵。 優(yōu)勢(shì)時(shí),好比人生得意時(shí),心情很爽,最好一直就這么下去;劣勢(shì)時(shí),千方 百計(jì)尋找對(duì)手的破綻,伺機(jī)翻盤。心理毅力強(qiáng)的人,總能把弦繃得緊緊的,一直 像甲魚一樣咬住對(duì)手;心理軟弱的人,很早就放棄抵抗,認(rèn)輸投降。 優(yōu)勢(shì)時(shí)被對(duì)方翻盤了,就好像原本勝券在握的一件事情,被自己搞砸了,懊 悔痛恨都沒(méi)有用;大敗的棋,忽然找到對(duì)手的漏勺又贏了回來(lái),就好像本已被逼 到絕境,卻又咸魚翻生,大獲全勝,心情之爽,難以表達(dá)! 由于圍棋的棋盤相對(duì)比較廣大,過(guò)程也較反復(fù),一盤棋下來(lái),通常勢(shì)均力敵 的對(duì)手都會(huì)有不止一次的獲勝機(jī)會(huì)。這種翻來(lái)覆去的體驗(yàn),非常象人生經(jīng)歷的一 種濃縮、抽象。人生,是不可重復(fù)的,因此在邁出想要嘗試的一步時(shí),有可能隨 之而來(lái)的,是非常慘痛的代價(jià)。而圍棋的過(guò)程,可以讓你在做出種種嘗試后付出 最少的代價(jià)大不了輸一盤棋么?推掉再來(lái)就是了。 我想,這就是圍棋的魅力之所在吧。 2.1.2 開發(fā)圍棋的任務(wù)及目的開發(fā)圍棋的任務(wù)及目的 隨著 Intemet 的普及,網(wǎng)絡(luò)游戲己經(jīng)成為大家耳濡目染的新生事物。網(wǎng)絡(luò)游戲從出現(xiàn)到現(xiàn)在發(fā) 展的時(shí)間很短,但是其發(fā)展速度卻非常之快?,F(xiàn)在,可以說(shuō)網(wǎng)絡(luò)游戲已經(jīng)成為人 們休閑、娛樂(lè)的有效方式。網(wǎng)絡(luò)游戲種類很多,目前主要分戰(zhàn)略類、 RPG 類、棋牌類等幾種,常見(jiàn)的棋牌類游戲有中國(guó)象棋、國(guó)際象棋、圍棋、橋牌、拱 豬、麻將等。網(wǎng)絡(luò)游戲具有如下特征: (1)有一個(gè)或多個(gè)游戲服務(wù)器啟動(dòng)特定游戲服務(wù); (2)游戲者到游戲網(wǎng)站下載客戶端程序并申請(qǐng)游戲賬號(hào)。然后啟動(dòng)客戶端程序 通過(guò)某種網(wǎng)絡(luò)協(xié)議連接游戲服務(wù)器。 (3)客戶端負(fù)責(zé)處理客戶端顯示和操作界面,具有簡(jiǎn)單的邏輯處理功能力, 同時(shí)負(fù)責(zé)接收發(fā)送與服務(wù)器端交互的數(shù)據(jù)包。 (4)服務(wù)器程序負(fù)方處理服務(wù)器端邏輯、游戲邏輯、客戶之間的網(wǎng)絡(luò)信息傳遞 ,以及數(shù)據(jù)庫(kù)之間的數(shù)據(jù)讀取保存工作。 同時(shí)服務(wù)器端還要承擔(dān)客戶端數(shù)據(jù)的接收、轉(zhuǎn)發(fā)工作。 ( 5 ) 網(wǎng)絡(luò)游戲常用的網(wǎng)絡(luò)協(xié)議有Internet的 TCp / IP 協(xié)議、適用于局域網(wǎng)(如紅色警報(bào)聯(lián)網(wǎng)等采用)的IPX協(xié)議。 雖然目前很多圍棋游戲正在運(yùn)行,但是使用java平臺(tái)開發(fā)的游戲少之又少,這就 使得圍棋客戶端的運(yùn)行平臺(tái)十分有限,不能滿足今后發(fā)展的需求,如移動(dòng)客戶端 ,就基本上沒(méi)有。因此開發(fā)一套基于java的圍棋系統(tǒng)十分必要。 2.22.2 主要系統(tǒng)介紹主要系統(tǒng)介紹 主要功能包括: 用戶連接服務(wù)器之后: 1、新用戶可以注冊(cè)。 2、老用戶必須登陸,才可以玩游戲等其他動(dòng)作。 開始游戲之后: 1、用戶雙方選擇白棋和黑棋。 2、任何一方可以隨時(shí)隨地認(rèn)輸,游戲結(jié)束。 4、要實(shí)現(xiàn)圍棋最基本吃掉對(duì)方的法則。 此設(shè)計(jì)為本站原創(chuàng)作品。其中包括:源程序,可執(zhí)行程序,論文,錄像,使用說(shuō) 明。 第第3章章 圍棋對(duì)弈系統(tǒng)的設(shè)計(jì)圍棋對(duì)弈系統(tǒng)的設(shè)計(jì) 這一章時(shí)介紹開發(fā)環(huán)境和用到的開發(fā)工具,系統(tǒng)主要的功能設(shè)計(jì),系統(tǒng)的數(shù) 據(jù)流程圖。 3.13.1 系統(tǒng)需求分析系統(tǒng)需求分析 用戶登陸界面圖用戶登陸界面圖 用戶信息 輸入信息是否 合法 用戶登錄到主界面 是 彈出錯(cuò)誤信息 否 輸入 登錄界面 自 動(dòng) 跳 轉(zhuǎn) 驗(yàn) 證 3.設(shè)計(jì)流程(帶流程圖) 用用 戶戶 界界 面面 棋棋 盤盤 展展 示示 復(fù)復(fù) 選選 框框 : 白白 子子 先先 x 復(fù)復(fù) 選選 框框 : 黑黑 子子 先先 按按 鈕鈕 : 游游 戲戲 開開 始始 按按 鈕鈕 : 重重 置置 游游 戲戲 標(biāo)標(biāo) 簽簽 : 贏贏 或或 輸輸 3.設(shè)計(jì)流程(帶流程圖) 游戲初始化 白棋贏 黑棋贏 判斷 準(zhǔn)備就緒 3.23.2 系統(tǒng)開發(fā)及運(yùn)行環(huán)境系統(tǒng)開發(fā)及運(yùn)行環(huán)境 硬件平臺(tái): CPU:P41.8GHz。 內(nèi)存:256MB以上。 軟件平臺(tái): 運(yùn)行游戲運(yùn)行游戲 用戶界面用戶界面 白字先白字先黑子先黑子先 游戲開始游戲開始 落子落子 游游 戲戲 重重 置置 操作系統(tǒng):Windows XP。 開發(fā)工具包:JDK Version1.6.2。 JSP服務(wù)器:Tomcat 6.0。 瀏覽器:推薦使用IE6.0。 分辨率:最佳效果1024768像素。 3.33.3 系統(tǒng)主要功能要求系統(tǒng)主要功能要求 系統(tǒng)設(shè)計(jì)目標(biāo)如下: 主要功能包括: 1、能夠在局域網(wǎng)上實(shí)現(xiàn)多人在線對(duì)戰(zhàn)。 用戶連接服務(wù)器之后: 1、新用戶可以注冊(cè)。 2、老用戶必須登陸,才可以玩游戲等其他動(dòng)作。 3、登陸之后,用戶可以選擇跟哪個(gè)在線玩家對(duì)戰(zhàn),如果對(duì)方同意,游戲開始。 4、如果有以前沒(méi)有下完的棋譜,可以選擇讀取棋譜,看看每一部是怎么走的。 開始游戲之后: 1、用戶雙方選擇白棋和黑棋。 2、任何一方可以隨時(shí)隨地認(rèn)輸,游戲結(jié)束。 3、如果雙方?jīng)]有下完,可以保存棋盤。 4、要實(shí)現(xiàn)圍棋最基本吃掉對(duì)方的法則。 此設(shè)計(jì)為本站原創(chuàng)作品。其中包括:源程序,可執(zhí)行程序,論文,錄像,使用說(shuō) 明。 3.4.系統(tǒng)總體結(jié)構(gòu)系統(tǒng)總體結(jié)構(gòu) 圖圖3.1 系統(tǒng)功能結(jié)構(gòu)圖系統(tǒng)功能結(jié)構(gòu)圖 介紹:各功能模塊實(shí)現(xiàn)的功能為: 庫(kù)存管理功能模塊圖如圖3.2所示。 圖圖3.2庫(kù)存管理功能模塊圖庫(kù)存管理功能模塊圖 圍棋數(shù)據(jù)管理 黑子入庫(kù)新增模塊 黑子入庫(kù)提子模塊 白子入庫(kù)新增模塊 修改入庫(kù)單和入庫(kù)報(bào)表模塊 庫(kù)存查詢模塊 第第4章章 圍棋對(duì)弈系統(tǒng)的具體實(shí)現(xiàn)圍棋對(duì)弈系統(tǒng)的具體實(shí)現(xiàn) 界面是系統(tǒng)之間最直接的交互界面,界面的友好性體現(xiàn)了軟件設(shè)計(jì)的質(zhì)量, 并在很大程度上決定了軟件是否成功。 4.14.1界面設(shè)計(jì)界面設(shè)計(jì) 4.1.1用戶登陸界面圖用戶登陸界面圖 用戶信息 輸入信息是否 合法 用戶登錄到主界面 是 彈出錯(cuò)誤信息 否 輸入 登錄界面 自 動(dòng) 跳 轉(zhuǎn) 驗(yàn) 證 圖圖4.1.1 用戶登錄模塊框圖用戶登錄模塊框圖 圖圖4.14.1 用戶登陸界面用戶登陸界面 此loginDialog函數(shù)的作用是檢測(cè)用戶登陸的合法性,并確認(rèn)用戶輸入了合法的 登錄名和口令。 部分代碼: login = new JDialog(); login.setTitle(登錄); /設(shè)置標(biāo)題 login.setLayout(new FlowLayout(); /利用流布局來(lái)設(shè)置窗口的布局 login.add(new JLabel(用戶名:); /添加標(biāo)簽為用戶名的對(duì)象 final JTextField name = new JTextField(10); /設(shè)置文本框中字符不得超過(guò)10個(gè) login.add(name); login.add(new JLabel(密 碼:); final JPasswordField password = new JPasswordField(10); /設(shè)置密碼框中字符不得多于10個(gè) password.setEchoChar(*); /設(shè)置顯示密碼對(duì)應(yīng)的字符為* 4.1.2用戶注冊(cè)用戶注冊(cè)界面圖界面圖 圖圖4.24.2 用戶注冊(cè)界面用戶注冊(cè)界面 private void registerDialog(final JDialog regDialog) Box box1 = Box.createVerticalBox(); box1.add(new JLabel(用戶名:, JLabel.RIGHT); /添加用戶名標(biāo)簽,用戶名在標(biāo)簽中靠右對(duì)齊 box1.add(Box.createVerticalStrut(10); box1.add(new JLabel(性別:, JLabel.RIGHT); /添加性別標(biāo)簽,性別在標(biāo)簽中靠右對(duì)齊 box1.add(Box.createVerticalStrut(10); box1.add(new JLabel(密碼:, JLabel.RIGHT), -1); /添加密碼標(biāo)簽,密碼在標(biāo)簽中靠右對(duì)齊 box1.add(Box.createVerticalStrut(10); box1.add(new JLabel(確認(rèn)密碼:, JLabel.RIGHT); /添加確認(rèn)密碼標(biāo)簽,確認(rèn)密碼在標(biāo)簽中靠右對(duì)齊 Box box2 = Box.createVerticalBox(); final JTextField nameTextField = new JTextField(10); /設(shè)置用戶名文本框字符不得超過(guò)10個(gè),且文本框不能被繼承 box2.add(nameTextField); box2.add(Box.createVerticalStrut(8); final CheckboxGroup cbg = new CheckboxGroup(); Box box21 = Box.createHorizontalBox(); final Checkbox cb1 = new Checkbox(男, cbg, true); /復(fù)選框默認(rèn)狀態(tài)選定為男性 box21.add(cb1); box21.add(new Checkbox(女, cbg, false); /當(dāng)鼠標(biāo)點(diǎn)擊女性復(fù)選框時(shí),flase自動(dòng)變?yōu)閠rue box2.add(box21); box2.add(Box.createVerticalStrut(8); /定義密碼框中的字符長(zhǎng)度小于10個(gè) final JPasswordField pass1 = new JPasswordField(10); box2.add(pass1); box2.add(Box.createVerticalStrut(8); final JPasswordField pass2 = new JPasswordField(10); box2.add(pass2); Box baseBox = Box.createHorizontalBox(); baseBox.add(box1); baseBox.add(box2); regDialog.setLayout(new FlowLayout(); regDialog.add(baseBox); JButton confirm = new JButton(確定); /創(chuàng)建并聲明確定按鈕 JButton cancel = new JButton(取消); /創(chuàng)建并聲明取消按鈕 regDialog.add(confirm); regDialog.add(cancel); regDialog.setSize(200, 200); /設(shè)置大小 regDialog.setResizable(false); regDialog.setLocationRelativeTo(null); confirm.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) String sex = null; if (cbg.getSelectedCheckbox() = cb1) sex = 男; else sex = 女; if (saveUserData(nameTextField.getText().trim(), sex, new String(pass1.getPassword(), new String(pass2.getPassword() regDialog.setVisible(false); else JOptionPane.showMessageDialog(regDialog, 輸入有誤,請(qǐng)檢查, 錯(cuò)誤提示, JOptionPane.ERROR_MESSAGE); ); /獲取監(jiān)聽器 cancel.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) regDialog.setVisible(false); ); /獲取監(jiān)聽器 4.1.3 系統(tǒng)主界面系統(tǒng)主界面 主界主界面面 修改修改前前 主界面修改后主界面修改后 圖圖4.34.3 系統(tǒng)主界面系統(tǒng)主界面 關(guān)鍵代碼: void initMyHash(Point startPoint,int interval) One one; Point key; /邏輯點(diǎn)標(biāo)志 int i,j; /定義i,j for(i=1;i=19;i+) for(j=1;j=19;j+) /循環(huán) key=new Point(i,j); one=new One(); /創(chuàng)建對(duì)象 one.posX=startPoint.x+(i- 1)*interval;/相鄰點(diǎn)處理,獲取 one.posY=startPoint.y+(j- 1)*interval;/相鄰點(diǎn)處理。獲取/獲取相鄰點(diǎn) one.pointAround0=new Point(i,j-1); /上 one.pointAround1=new Point(i,j+1); /下 one.pointAround2=new Point(i-1,j); /左 one.pointAround3=new Point(i+1,j); /右 if(i=1)one.pointAround2=one.OUT; /左的周圍 if(i=19)one.pointAround3=one.OUT; /右的周圍 if(j=1)one.pointAround0=one.OUT; /上的周圍 if(j=19)one.pointAround1=one.OUT; /下的周圍 myHash.put(key,one); /我的我的哈希表并且在里鍵入關(guān)鍵字 /更新盤面 public void paint(Graphics g) Point startPoint=STARTPOINT; /創(chuàng)建對(duì)象,開始點(diǎn) int interval=INTERVAL; /定義成員變量 this.paintChessboard(g,startPoint,interval); /棋盤的操作 this.paintChessman(g,startPoint,interval); /棋子的操作 /畫棋盤 4.2程序設(shè)計(jì)及調(diào)試運(yùn)行 利用JSP“一次編寫,各處運(yùn)行”的編程優(yōu)點(diǎn),按功能模塊結(jié)構(gòu)設(shè)計(jì)菜單,布置各 明細(xì)模塊工作界面,編寫各個(gè)模塊的程序代碼,進(jìn)行編譯連接運(yùn)行,經(jīng)過(guò)反復(fù)調(diào) 試修改,以達(dá)到系統(tǒng)功能要求。這個(gè)過(guò)程具有大量的工作量,應(yīng)仔細(xì)對(duì)每個(gè)程序 細(xì)節(jié)進(jìn)行分析思考、編寫程序并調(diào)試,做到程序簡(jiǎn)潔清楚,盡量避免可能潛在的 程序錯(cuò)誤,并在必要的地方加以注釋,以便于程序閱讀和修改。 4.3 本章小結(jié) 本章介紹了系統(tǒng)的具體實(shí)現(xiàn)和部分關(guān)鍵代碼,其中包括用戶登錄所要用到的 loginDialog函數(shù),主界面的框架設(shè)計(jì)。 第第5章章 結(jié)束語(yǔ)結(jié)束語(yǔ) Java語(yǔ)言是當(dāng)今最為流行的程序設(shè)計(jì)語(yǔ)言之一 作為一門非常優(yōu)秀和極為健壯的編程語(yǔ)言,它同時(shí)具有的面向?qū)ο螅c平臺(tái)無(wú)關(guān),分布式應(yīng)用,安全,穩(wěn)定 和多線程等優(yōu)良的特征,使用Java語(yǔ)言,不僅可以開發(fā)出功能強(qiáng)大的大型應(yīng)用程序,而且Java語(yǔ)言本身突出 的跨平臺(tái)的特性也使得它特別適合于Internet上的應(yīng)用開發(fā),可以這樣說(shuō),Java的出現(xiàn)使得所開發(fā)的應(yīng)用程序 “一次編寫,處處可用”的實(shí)現(xiàn)成為了可能。 人工智能屬于計(jì)算機(jī)科學(xué)的領(lǐng)域,它以計(jì)算機(jī)技術(shù)為基礎(chǔ),近幾十年來(lái),它的理論和技術(shù)已經(jīng)日益成熟,應(yīng) 用領(lǐng)域也正在不斷擴(kuò)大,顯示出強(qiáng)大的生命力。 近來(lái)隨著計(jì)算機(jī)的快速發(fā)展,各種各樣的電腦游戲?qū)映霾桓F,使得我們能有更多的娛樂(lè)項(xiàng)目,而棋類游戲能 起到鍛煉人的思維和修身養(yǎng)性的作用,而且棋類游戲水平頗高,大有與人腦分庭抗禮之勢(shì)。其中戰(zhàn)勝過(guò)國(guó)際 象棋世界冠軍-卡斯帕羅夫的“深藍(lán)”便是最具說(shuō)服力的代表。 致謝致謝 參考文獻(xiàn)參考文獻(xiàn) 1. 基于Java的遠(yuǎn)程圍棋對(duì)弈軟件的設(shè)計(jì) 華東交通大學(xué)學(xué)報(bào) 1999年01期 2. 美Rogers Cadenhead. Java編程入門經(jīng)典.梅興文譯.第4版.北京:人民郵電出版社,2007 3. 楊昭編著.二級(jí)Java語(yǔ)言程序設(shè)計(jì)教程.北京:中國(guó)水利水電出版社,2006 4. 李芝興,楊瑞龍編.Java程序設(shè)計(jì)之網(wǎng)絡(luò)編程.清華大學(xué)出版社,2006年3 5. 宛延闿等編著.實(shí)用Java程序設(shè)計(jì)教程.北京:機(jī)械工業(yè)出版社,2006 6. 陳國(guó)君等編著.Java2程序設(shè)計(jì)基礎(chǔ).北京:清華大學(xué)出版社,2006 7. 鄭莉.王行言.馬素霞編著.Java語(yǔ)言程序設(shè)計(jì).北京:清華大學(xué)出版社,2006 8. 丁振凡主編.Java語(yǔ)言實(shí)用教程.北京:北京郵電大學(xué)出版社,2005 9. 朱喜福等編.Java程序設(shè)計(jì).北京:人民郵電出版社,2005 10. (美)Bruce Eckel編.Java編程思想第3版.機(jī)械工業(yè)出版社, 2005年9月 11. (美)Doug Lea著.Java并發(fā)編程:設(shè)計(jì)原則與模式.中國(guó)電力出版社譯。2004年3月。 12. Java技術(shù)論壇:/ 13. 瘋狂Java聯(lián)盟:/digest.php 14. 中文Java技術(shù)網(wǎng):- 附錄附錄 源代碼源代碼 /*MainWindow*/ import java.awt.BorderLayout; import java.awt.Button; import java.awt.Checkbox; import java.awt.CheckboxGroup; import java.awt.Choice; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Graphics; /抽象類,不能用于構(gòu)造方法創(chuàng)建對(duì)象 import java.awt.GridLayout; import java.awt.Image; import java.awt.Label; import java.awt.Panel; import java.awt.Point; import java.awt.TextField; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.RandomAccessFile; import .ServerSocket; import .Socket; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; /負(fù)責(zé)創(chuàng)建標(biāo)簽對(duì)象,標(biāo)簽用來(lái)顯示信息,但沒(méi)有編輯功能 import javax.swing.JOptionPane; import javax.swing.JPasswordField; import javax.swing.JTextField; /利用import引用各類包 public class MainWindow extends Frame implements Runnable Go panelGo=new Go(); /用Go類聲明并創(chuàng)建一個(gè)panelGo對(duì)象 Image myImage; int PORT; Socket sendSocket; /主動(dòng)連接Socket PrintWriter writer; /用來(lái)發(fā)送messa

溫馨提示

  • 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ù)網(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)論