




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Good is good, but better carries it.精益求精,善益求善。JAVA課程設(shè)計圍棋對弈含代碼Java程序課程設(shè)計任務(wù)書主要任務(wù)與目標(biāo)創(chuàng)建一個圍棋對弈平臺?;赑anel類定義一個面板子類,在其中利用Graphics類的drawLine()方法繪制棋盤格線,利用fillOval()方法繪制棋盤四角的星位。為面板注冊MouseEvent監(jiān)聽器,為一個按鈕注冊ActionEvent事件監(jiān)聽器,實(shí)現(xiàn)單擊鼠標(biāo)布子、單機(jī)一個重新開局等操作。黑白棋子基于Canvas類的子類,其中,paint()方法用來繪制棋子,通過為棋子注冊MouseEvent事件監(jiān)聽器實(shí)現(xiàn)雙擊棋子吃子、右擊
2、棋子悔棋操作。Canvas組件表示屏幕上一個空白矩形區(qū)域,應(yīng)用程序可以在該區(qū)域內(nèi)繪圖,或者從該區(qū)域捕獲用戶的輸入事件。必須重寫paint方法,以便在Canvas上執(zhí)行自定義圖形。主類為Frame的子類,前面創(chuàng)建的棋盤被置入其中。主要內(nèi)容與基本要求系統(tǒng)的功能要求:1.要求有黑白兩色棋子,保存所有已下的棋子,包括在棋盤上的所有棋子和被踢掉的,若某一次落子沒有造成踢子,包括所有被這個棋子提掉的棋子及這個棋子本身。如果踢子,則保存所有被踢掉的棋子。保證實(shí)現(xiàn)下棋的基本操作如:可以允許悔棋,落子,提示信息,重新開始游戲等功能。2.熟悉JAVA中swing的組件運(yùn)用,基本工具的熟練掌握。學(xué)習(xí)并掌握以下技術(shù):
3、Java;熟練使用以下開發(fā)工具:JCreator等三、計劃進(jìn)度112月28日-12月29日:搜集資料、查閱文獻(xiàn),確定選題212月29日-01月02日:需求分析,系統(tǒng)設(shè)計,系統(tǒng)功能模塊完善301月02日-01月06日:編程實(shí)現(xiàn)系統(tǒng)、系統(tǒng)測試與修改401月05日-01月07日:課程設(shè)計報告撰寫501月07日-01月07日:課程設(shè)計報告答辯主要參考文獻(xiàn):陳軼.姚曉昆編著.Java程序設(shè)計實(shí)驗(yàn)指導(dǎo).北京:清華大學(xué)出版社,2006趙文靖編著.Java程序設(shè)計基礎(chǔ)與上機(jī)指導(dǎo).北京:清華大學(xué)出版社,2006吳其慶編著.Java程序設(shè)計實(shí)例教程.北京:冶金工業(yè)出版社,2006陳國君等編著.Java2程序設(shè)計基
4、礎(chǔ).北京:清華大學(xué)出版社,20065.Java網(wǎng)絡(luò)編程實(shí)例教程,清華大學(xué)出版社,馮博等,2005.1摘要圍棋作為一個棋類競技運(yùn)動,在民間十分流行,為了熟悉五子棋規(guī)則及技巧,以及研究簡單的人工智能,決定用Java開發(fā)五子棋游戲。主要完成了人機(jī)對戰(zhàn)和玩家之間聯(lián)網(wǎng)對戰(zhàn)2個功能。網(wǎng)絡(luò)連接部分為Socket編程應(yīng)用,客戶端和服務(wù)器端的交互用ClassMessage定義,有很好的可擴(kuò)展性,客戶端負(fù)責(zé)界面維護(hù)和收集用戶輸入的信息,及錯誤處理。服務(wù)器維護(hù)在線用戶的基本信息和任意兩個對戰(zhàn)用戶的棋盤信息,動態(tài)維護(hù)用戶列表。在人機(jī)對弈中通過深度搜索和估值模塊,來提高電腦棋手的智能。分析估值模塊中的影響精準(zhǔn)性的幾個要
5、素,以及提出若干提高精準(zhǔn)性的辦法,以及對它們搜索的節(jié)點(diǎn)數(shù)進(jìn)行比較,在這些算法的基礎(chǔ)上分析一些提高電腦AI方案,如遞歸算法、電腦學(xué)習(xí)等。算法的研究有助于理解程序結(jié)構(gòu),增強(qiáng)邏輯思維能力,在其他人工智能方面也有很大的參考作用。關(guān)鍵詞:圍棋,信息自動化,游戲,javaABSTRACTAsachessathleticsports,thefolkverypopular,tofamiliarwithrenjurulesandskills,andresearchsimpleartificialintelligence,decidedtouseJavadevelopmentrenjugame.Maincompl
6、etedtheman-machineagainstandbetweenplayersnetworkingagainsttwofunctions.NetworkconnectionpartsforSocketprogrammingapplication,theclientandtheserverinteractionwithscale-upmacrodefinition,haveverygoodscalability,theclientisresponsibleformaintenanceandcollectuserinterfaceinput,anderrorhandling.Serverma
7、intenance,onlineusersofthebasicinformationandanytwoagainsttheuserboardinformation,dynamicmaintenanceuserlist.Intheman-machinerightthroughthedepthsearchandvaluationsmodule,toimprovetheintelligentcomputerplayer.Analysestheinfluenceofvaluationmoduleprecisionofseveralelements,andputsforwardsomemeasureso
8、fimprovingprecision,andtheysearchnumberofnodesinthecomparison,inthesealgorithmisanalyzedonthebasisofsomeimprovecomputerAIscheme,suchasrecursionalgorithm,computerlearning,etc.Thealgorithmforhelptounderstandtheprogramstructure,strengthenthelogicalthinkingability,inotherartificialintelligencealsohaveve
9、rygreatreferencerole.Keywords:informationautomation,games,Java目錄TOCo1-3hzuHYPERLINKl_Toc20195Java程序課程設(shè)計任務(wù)書PAGEREF_Toc20195IIHYPERLINKl_Toc29628摘要PAGEREF_Toc29628IVHYPERLINKl_Toc25563ABSTRACTPAGEREF_Toc25563VHYPERLINKl_Toc7405目錄PAGEREF_Toc7405VIHYPERLINKl_Toc9495第1章引言PAGEREF_Toc94951HYPERLINKl_Toc172
10、591.1背景PAGEREF_Toc172591HYPERLINKl_Toc43921.2課程設(shè)計內(nèi)容PAGEREF_Toc43922HYPERLINKl_Toc15841.3任務(wù)分工PAGEREF_Toc15844HYPERLINKl_Toc17167第2章圍棋對弈系統(tǒng)PAGEREF_Toc171675HYPERLINKl_Toc216312.1圍棋概述PAGEREF_Toc216315HYPERLINKl_Toc133682.1.1圍棋定義PAGEREF_Toc133686HYPERLINKl_Toc216052.1.2開發(fā)圍棋的任務(wù)及目的PAGEREF_Toc216057HYPERLIN
11、Kl_Toc9022.2主要系統(tǒng)介紹PAGEREF_Toc9027HYPERLINKl_Toc77052.3本章小結(jié)PAGEREF_Toc77058HYPERLINKl_Toc4527第3章圍棋對弈系統(tǒng)的設(shè)計PAGEREF_Toc45279HYPERLINKl_Toc315943.1系統(tǒng)需求分析PAGEREF_Toc315949HYPERLINKl_Toc1394用戶登陸界面圖PAGEREF_Toc13949HYPERLINKl_Toc50273.2系統(tǒng)開發(fā)及運(yùn)行環(huán)境PAGEREF_Toc502710HYPERLINKl_Toc77823.3系統(tǒng)主要功能要求PAGEREF_Toc778211H
12、YPERLINKl_Toc285553.4.系統(tǒng)總體結(jié)構(gòu)PAGEREF_Toc2855512HYPERLINKl_Toc131823.5本章小結(jié)PAGEREF_Toc1318213HYPERLINKl_Toc24173第4章圍棋對弈系統(tǒng)的具體實(shí)現(xiàn)PAGEREF_Toc2417314HYPERLINKl_Toc252064.1界面設(shè)計PAGEREF_Toc2520614HYPERLINKl_Toc195294.1.1用戶登陸界面圖PAGEREF_Toc1952914HYPERLINKl_Toc245074.1.2用戶注冊界面圖PAGEREF_Toc2450715HYPERLINKl_Toc231
13、924.1.3系統(tǒng)主界面PAGEREF_Toc2319218HYPERLINKl_Toc47554.2程序設(shè)計及調(diào)試運(yùn)行PAGEREF_Toc475521HYPERLINKl_Toc226174.3本章小結(jié)PAGEREF_Toc2261721HYPERLINKl_Toc18322第5章結(jié)束語PAGEREF_Toc1832222HYPERLINKl_Toc23348致謝PAGEREF_Toc2334823HYPERLINKl_Toc21404參考文獻(xiàn)PAGEREF_Toc2140424HYPERLINKl_Toc2800附錄源代碼PAGEREF_Toc280025第1章引言1.1背景圍棋是一種H
14、YPERLINK/view/632914.htmt_blank智力游戲,起源于HYPERLINK/view/61891.htmt_blank中國。中日韓是現(xiàn)今圍棋的三大支柱,但近年來HYPERLINK/view/980831.htmt_blank日本圍棋逐步衰弱,形成了中韓爭霸的局面。圍棋是中華民族HYPERLINK/view/29087.htmt_blank傳統(tǒng)文化中的瑰寶,它體現(xiàn)了中華民族對智慧的追求,古人常以“HYPERLINK/view/206289.htmt_blank琴棋書畫”論及一個人的才華和修養(yǎng),其中的“棋”指的就是圍棋。被人們形象地比喻為黑白世界的圍棋,是我國古人所喜愛的娛樂
15、競技活動,同時也是人類歷史上最悠久的一種棋戲。由于它將科學(xué)、藝術(shù)和競技三者融為一體,有著發(fā)展智力,培養(yǎng)意志品質(zhì)和機(jī)動靈活的戰(zhàn)略戰(zhàn)術(shù)思想意識的特點(diǎn),因而,幾千年來長盛不衰,并逐漸地發(fā)展成了一種國際性的文化競技活動。圍棋是一種策略性二人棋類游戲,使用格狀HYPERLINK/view/385157.htmt_blank棋盤及黑白二色HYPERLINK/view/316813.htmt_blank棋子進(jìn)行HYPERLINK/view/17808.htmt_blank對弈。目前圍棋流行于HYPERLINK/view/398058.htmt_blank亞太,覆蓋世界范圍,是一種非常流行的棋類游戲。HYPE
16、RLINK/view/299139.htmt_blank中國圍棋規(guī)則是數(shù)子法,圍棋的本質(zhì)是:誰的占地面積大誰獲勝。圍棋的規(guī)則十分簡單,卻擁有十分廣闊的落子空間,使得圍棋變化多端,比其它棋類復(fù)雜深奧。這就是圍棋的HYPERLINK/view/92575.htmt_blank魅力所在。下圍棋對人腦的HYPERLINK/view/2646.htmt_blank智力開發(fā)很有幫助,可增強(qiáng)一個人的計算能力、創(chuàng)造能力、思維能力、判斷能力,也能提高人的HYPERLINK/view/970468.htmt_blank注意力和控制力。下圍棋對兒童少年的智力發(fā)展起到積極作用,使他們能更好的分析事物。Java語言是當(dāng)
17、今最為流行的程序設(shè)計語言之一作為一門非常優(yōu)秀和極為健壯的編程語言,它同時具有的面向?qū)ο?,與平臺無關(guān),分布式應(yīng)用,安全,穩(wěn)定和多線程等優(yōu)良的特征,使用Java語言,不僅可以開發(fā)出功能強(qiáng)大的大型應(yīng)用程序,而且Java語言本身突出的跨平臺的特性也使得它特別適合于Internet上的應(yīng)用開發(fā),可以這樣說,Java的出現(xiàn)使得所開發(fā)的應(yīng)用程序“一次編寫,處處可用”的實(shí)現(xiàn)成為了可能。近來隨著計算機(jī)的快速發(fā)展,各種各樣的電腦游戲?qū)映霾桓F,使得我們能有更多的娛樂項(xiàng)目,而棋類游戲能起到鍛煉人的思維和修身養(yǎng)性的作用,而且棋類游戲水平頗高,大有與人腦分庭抗禮之勢。其中戰(zhàn)勝過國際象棋世界冠軍-卡斯帕羅夫的“深藍(lán)”便是最
18、具說服力的代表。越來越多的具有智能的機(jī)器進(jìn)入了人類的生活,人工智能的重要性如今顯而易見。自己對人工智能比較感興趣,而圍棋游戲程序的開發(fā)實(shí)現(xiàn)這個課題,正好提供給我這樣一個研究的機(jī)會,通過對人工智能中博弈方面的研究(人機(jī)對弈),讓我在簡單的人機(jī)對弈全局設(shè)計,以及具體到相關(guān)算法上有了深入的了解。人工智能屬于計算機(jī)科學(xué)的領(lǐng)域,它以計算機(jī)技術(shù)為基礎(chǔ),近幾十年來,它的理論和技術(shù)已經(jīng)日益成熟,應(yīng)用領(lǐng)域也正在不斷擴(kuò)大,顯示出強(qiáng)大的生命力。人工智能大致可以分成幾個學(xué)科,它們每一個都是獨(dú)特的,但是它們常常又互相結(jié)合起來完成設(shè)計任務(wù),這時,這些學(xué)科之間的差別就變的很模糊。人工智能在專家系統(tǒng),自然語言理解,自動定理證
19、明,自動程序設(shè)計,人工智能在機(jī)器人學(xué)、模式識別、物景分析、數(shù)據(jù)庫的智能檢索、機(jī)器下棋(實(shí)質(zhì)上是博弈論問題)和家用電器智能化等領(lǐng)域都有廣泛的應(yīng)用。而這個課題就是和人工智能中的博弈論領(lǐng)域緊密相關(guān)的。這個題目核心是人工智能和Socekt編程,。并且人工智能中的博弈部分,由于采用了大量的搜索算法,其中很多被利用到各方面。它的概念、方法和技術(shù),正在各行各業(yè)廣泛滲透。智能已經(jīng)成為當(dāng)今各種新產(chǎn)品、新裝備的發(fā)展方向。所以,趁著這個機(jī)會,對人工智能中比較容易實(shí)現(xiàn)的人機(jī)博弈進(jìn)行了解研究學(xué)習(xí),也是很實(shí)用且很有必要的。1.2課程設(shè)計內(nèi)容此課程設(shè)計是一個小游戲(圍棋)的實(shí)現(xiàn),主要運(yùn)用了GUI(用戶圖形界面)API(應(yīng)用
20、程序借口)來實(shí)現(xiàn)。此程序沒有用到圖片的引用,棋盤和棋子的設(shè)計完全是應(yīng)用函數(shù)繪制,再加入復(fù)選框,按鈕,標(biāo)簽及實(shí)現(xiàn)本游戲的用戶界面布局。在頁面上通過單純的JCreator實(shí)現(xiàn)的下棋程序,能夠?qū)崿F(xiàn)提子,打劫等簡單的下棋功能。更好的掌握java編程以及布局和設(shè)計。通過課程設(shè)計把課堂上講的內(nèi)容融會貫通,學(xué)會設(shè)計程序、開發(fā)應(yīng)用軟件、開發(fā)系統(tǒng)軟件等各項(xiàng)工作。通過實(shí)習(xí)掌握語言的語法結(jié)構(gòu),理解類和對象的概念,準(zhǔn)確的使用各種數(shù)據(jù)類型,對面向?qū)ο笾械睦^承和多態(tài)的概念要理解、會使用,在程序中提高代碼的重用性,使設(shè)計的程序結(jié)構(gòu)清晰、易于維護(hù)。一、棋盤盤面有縱橫各十九條等HYPERLINK/view/21812.htmt
21、_blank距離、垂直交叉的HYPERLINK/view/67614.htmt_blank平行線,共構(gòu)成1919361個交叉點(diǎn)(以下簡稱為“點(diǎn)”)。在盤面上標(biāo)有幾個小圓點(diǎn)。稱為HYPERLINK/view/1511736.htmt_blank星位,中央的星位又稱“HYPERLINK/view/365548.htmt_blank天元”。二、棋子棋子分黑白兩色。均為扁圓形。棋子的數(shù)量以黑子181、白子180個為宜。三、圍棋的下法一、對局雙方各執(zhí)一色棋子,黑先白后,交替下子,每次只能下一子。二、棋子下在HYPERLINK/view/385157.htmt_blank棋盤的點(diǎn)上。三、棋子下定后,不得向
22、其他點(diǎn)移動。四、輪流下子是雙方的權(quán)利,但允許任何一方放棄下子權(quán)。四、棋子的氣一個棋子在棋盤上,與它直線緊鄰的空點(diǎn)是這個棋子的“氣”。棋子直線緊鄰的點(diǎn)上,如果有同色棋子存在,則它們便相互連接成一個不可分割的整體。它們的氣也應(yīng)一并計算。棋子直線緊鄰的點(diǎn)上,如果有異色棋子存在,這口氣就不復(fù)存在。如所有的氣均為對方所占據(jù),便呈無氣狀態(tài)。無氣狀態(tài)的棋子不能在棋盤上存在,也就是第四條HYPERLINK/view/618470.htmt_blank提子。五、提子把無氣之子提出盤外的手段叫“提子”。提子有二種:一、下子后,對方棋子無氣,應(yīng)立即提取。二、下子后,雙方棋子都呈無氣狀態(tài),應(yīng)立即提取對方無氣之子。六、
23、計算勝負(fù)1、貼3又3/4子的規(guī)則第一步,把死子撿掉。第二步,只數(shù)一方圍得點(diǎn)(叫做目)并記錄下來(一般圍得點(diǎn)以整十目為單位),再數(shù)剛才那一方的子數(shù)并記錄下來,再把目數(shù)和子數(shù)加起來。第三步,如果數(shù)的是黑棋,再減去3又3/4子,如果數(shù)的是白棋,再加上3又3/4子。第四步,結(jié)果和180又1/2(棋盤361個點(diǎn)的一半)比較,超過就算勝,否則判負(fù)。2、讓先與讓子讓先不貼目,讓子要貼還讓子數(shù)的一半(就當(dāng)被讓方是預(yù)先收了單官)。1.3任務(wù)分工第2章圍棋對弈系統(tǒng)2.1圍棋概述網(wǎng)絡(luò)圍棋在中國的出現(xiàn)幾乎跟隨著互聯(lián)網(wǎng)同步成長,1998年,聯(lián)眾率先推出了網(wǎng)絡(luò)圍棋對弈。幾年來各大網(wǎng)絡(luò)圍棋平臺先后上線,出身各異,水平也參差
24、不齊。根據(jù)網(wǎng)絡(luò)資料顯示,截止2007年底,中國網(wǎng)絡(luò)圍棋平臺平均在線人數(shù)達(dá)6萬人。大型的游戲平臺如QQ游戲、聯(lián)眾游戲中都有圍棋游戲。也就是說QQ圍棋、聯(lián)眾圍棋都是鑲嵌在其游戲平臺之上。依靠游戲平臺用戶人數(shù)的優(yōu)勢,這兩個平臺圍棋用戶人數(shù)占據(jù)了網(wǎng)絡(luò)圍棋用戶的半數(shù)之多。但根據(jù)專業(yè)人士分析:這部分用戶無論在產(chǎn)品使用深度和對圍棋的認(rèn)知上是絕對的新手,淺嘗輒止,他們大多是過客。同時他們的圍棋軟件本身也不夠?qū)I(yè)。專業(yè)的網(wǎng)絡(luò)圍棋平臺才是中國網(wǎng)絡(luò)圍棋普及和發(fā)展的出路。目前國內(nèi)的專業(yè)網(wǎng)絡(luò)圍棋平臺,大致可分使用韓產(chǎn)軟件和國產(chǎn)軟件兩大類。國內(nèi)專業(yè)圍棋平臺的領(lǐng)軍人物弈城、TOM,便是使用韓產(chǎn)軟件的代表。兩平臺能夠?qū)崿F(xiàn)中韓
25、對壘的特性,為他們吸引了不少高水平的棋手,并受到棋友的廣泛認(rèn)可。但他們同樣有一個死穴,就是兩家皆為購買韓國軟件,不掌握主動權(quán),因此根本無法保證軟件的及時更新,容易受制于韓方?!稗某鞘录北銓⑦@個致命缺點(diǎn)暴露無疑。經(jīng)典的圍棋系統(tǒng)有:Handtalk,Goemate,Wulu,他是陳志行的作品,曾多次獲得過冠軍。在他的指導(dǎo)下一個研究小組編寫了烏鷺(WUIU),也在比賽中取得過亞軍。Handtalk是用匯編語言編寫的,執(zhí)行速度快,程序本身也不大。由于程序并不大,可以推側(cè)出其所用到的模式資料也不多。Handtalk在大多數(shù)的情況下都不會失誤,作者本人曾提到他是用到一種類似人類棋手在下圍棋時常用到的手割
26、法來幫助判斷的。Handtalk與其它的程序明顯不同的地方是它的攻殺能力特別強(qiáng),在大多數(shù)的比賽中,都是通過吃掉對方幾塊棋而獲勝。這是由于程序的棋塊安危判斷能力、形勢判斷能力、眼位判斷能力和模式匹配能力都很強(qiáng)的關(guān)系.這些系統(tǒng)的好壞,跟設(shè)計者的棋力關(guān)系很大,作者本人具有近職業(yè)水準(zhǔn)的棋力,對Handtalk的編寫很有2.1.1圍棋定義圍棋是人生的模擬。開局時,盤上一片空白,就好像一個剛剛有了自覺意識的小孩,睜開了懵懂的雙眼,開始了自己的人生之路。開局時,你可以有各種選擇,自由度最大,走哪一步都不會讓你立刻輸?shù)?。布局基本上是興趣的顯示,有喜歡大模樣的,那是寄希望于未來的做法;有現(xiàn)實(shí)地?fù)瓶盏模挥许槕?yīng)對方
27、的思路,不知不覺中達(dá)到自己目的的;也有處處與對方作對,即使自己不爽,也要給對方添堵的。由于棋盤的廣大,不可能面面俱到地行棋。過程中,對局者不斷地在判斷、取舍,好像人生開始在選擇自己的道路了??粗@里想要,那里也想要,可是沒法面面俱到,終究只能選取一條路。有時候,你的招法對路,越走越暢,有的時候就有問題,想要的沒要到,越下越添堵。優(yōu)勢時,好比人生得意時,心情很爽,最好一直就這么下去;劣勢時,千方百計尋找對手的破綻,伺機(jī)翻盤。心理毅力強(qiáng)的人,總能把弦繃得緊緊的,一直像甲魚一樣咬住對手;心理軟弱的人,很早就放棄抵抗,認(rèn)輸投降。優(yōu)勢時被對方翻盤了,就好像原本勝券在握的一件事情,被自己搞砸了,懊悔痛恨都
28、沒有用;大敗的棋,忽然找到對手的漏勺又贏了回來,就好像本已被逼到絕境,卻又咸魚翻生,大獲全勝,心情之爽,難以表達(dá)!由于圍棋的棋盤相對比較廣大,過程也較反復(fù),一盤棋下來,通常勢均力敵的對手都會有不止一次的獲勝機(jī)會。這種翻來覆去的體驗(yàn),非常象人生經(jīng)歷的一種濃縮、抽象。人生,是不可重復(fù)的,因此在邁出想要嘗試的一步時,有可能隨之而來的,是非常慘痛的代價。而圍棋的過程,可以讓你在做出種種嘗試后付出最少的代價大不了輸一盤棋么?推掉再來就是了。我想,這就是圍棋的魅力之所在吧。2.1.2開發(fā)圍棋的任務(wù)及目的隨著Intemet的普及,網(wǎng)絡(luò)游戲己經(jīng)成為大家耳濡目染的新生事物。網(wǎng)絡(luò)游戲從出現(xiàn)到現(xiàn)在發(fā)展的時間很短,但
29、是其發(fā)展速度卻非常之快。現(xiàn)在,可以說網(wǎng)絡(luò)游戲已經(jīng)成為人們休閑、娛樂的有效方式。網(wǎng)絡(luò)游戲種類很多,目前主要分戰(zhàn)略類、RPG類、棋牌類等幾種,常見的棋牌類游戲有中國象棋、國際象棋、圍棋、橋牌、拱豬、麻將等。網(wǎng)絡(luò)游戲具有如下特征:(1)有一個或多個游戲服務(wù)器啟動特定游戲服務(wù);(2)游戲者到游戲網(wǎng)站下載客戶端程序并申請游戲賬號。然后啟動客戶端程序通過某種網(wǎng)絡(luò)協(xié)議連接游戲服務(wù)器。(3)客戶端負(fù)責(zé)處理客戶端顯示和操作界面,具有簡單的邏輯處理功能力,同時負(fù)責(zé)接收發(fā)送與服務(wù)器端交互的數(shù)據(jù)包。(4)服務(wù)器程序負(fù)方處理服務(wù)器端邏輯、游戲邏輯、客戶之間的網(wǎng)絡(luò)信息傳遞,以及數(shù)據(jù)庫之間的數(shù)據(jù)讀取保存工作。同時服務(wù)器端還
30、要承擔(dān)客戶端數(shù)據(jù)的接收、轉(zhuǎn)發(fā)工作。(5)網(wǎng)絡(luò)游戲常用的網(wǎng)絡(luò)協(xié)議有Internet的TCp/IP協(xié)議、適用于局域網(wǎng)(如紅色警報聯(lián)網(wǎng)等采用)的IPX協(xié)議。雖然目前很多圍棋游戲正在運(yùn)行,但是使用java平臺開發(fā)的游戲少之又少,這就使得圍棋客戶端的運(yùn)行平臺十分有限,不能滿足今后發(fā)展的需求,如移動客戶端,就基本上沒有。因此開發(fā)一套基于java的圍棋系統(tǒng)十分必要。2.2主要系統(tǒng)介紹主要功能包括:用戶連接服務(wù)器之后:1、新用戶可以注冊。2、老用戶必須登陸,才可以玩游戲等其他動作。開始游戲之后:1、用戶雙方選擇白棋和黑棋。2、任何一方可以隨時隨地認(rèn)輸,游戲結(jié)束。4、要實(shí)現(xiàn)圍棋最基本吃掉對方的法則。此設(shè)計為本站
31、原創(chuàng)作品。其中包括:源程序,可執(zhí)行程序,論文,錄像,使用說明。2.3本章小結(jié)這一章介紹了當(dāng)前圍棋應(yīng)該具備的功能模塊,并提供了市面上比較流行的圍棋系統(tǒng)作為參考。在這一章中,我們可以了解什么是圍棋系統(tǒng),當(dāng)前圍棋系統(tǒng)的市場需求,還有一個圍棋系統(tǒng)應(yīng)該的開發(fā)目標(biāo)。第3章圍棋對弈系統(tǒng)的設(shè)計這一章時介紹開發(fā)環(huán)境和用到的開發(fā)工具,系統(tǒng)主要的功能設(shè)計,系統(tǒng)的數(shù)據(jù)流程圖。3.1系統(tǒng)需求分析用戶登陸界面圖3.設(shè)計流程(帶流程圖)用戶界面棋盤展示復(fù)選框:白子先x復(fù)選框:黑子先按鈕:游戲開始按鈕:重置游戲標(biāo)簽:贏或輸3.設(shè)計流程(帶流程圖)運(yùn)行游戲游戲重置游戲初始化用戶界面白棋贏黑棋贏白字先黑子先判斷準(zhǔn)備就緒游戲開始落
32、子3.2系統(tǒng)開發(fā)及運(yùn)行環(huán)境硬件平臺:CPU:P41.8GHz。內(nèi)存:256MB以上。軟件平臺:操作系統(tǒng):WindowsXP。開發(fā)工具包:JDKVersion1.6.2。JSP服務(wù)器:Tomcat6.0。瀏覽器:推薦使用IE6.0。分辨率:最佳效果1024768像素。3.3系統(tǒng)主要功能要求系統(tǒng)設(shè)計目標(biāo)如下:主要功能包括:1、能夠在局域網(wǎng)上實(shí)現(xiàn)多人在線對戰(zhàn)。用戶連接服務(wù)器之后:1、新用戶可以注冊。2、老用戶必須登陸,才可以玩游戲等其他動作。3、登陸之后,用戶可以選擇跟哪個在線玩家對戰(zhàn),如果對方同意,游戲開始。4、如果有以前沒有下完的棋譜,可以選擇讀取棋譜,看看每一部是怎么走的。開始游戲之后:1、用
33、戶雙方選擇白棋和黑棋。2、任何一方可以隨時隨地認(rèn)輸,游戲結(jié)束。3、如果雙方?jīng)]有下完,可以保存棋盤。4、要實(shí)現(xiàn)圍棋最基本吃掉對方的法則。此設(shè)計為本站原創(chuàng)作品。其中包括:源程序,可執(zhí)行程序,論文,錄像,使用說明。3.4.系統(tǒng)總體結(jié)構(gòu)圖3.1系統(tǒng)功能結(jié)構(gòu)圖介紹:各功能模塊實(shí)現(xiàn)的功能為:圍棋數(shù)據(jù)管理黑子入庫新增模塊黑子入庫提子模塊白子入庫新增模塊修改入庫單和入庫報表模塊庫存查詢模塊庫存管理功能模塊圖如圖3.2所示。圖3.2庫存管理功能模塊圖3.5本章小結(jié)通過對圍棋游戲的編寫,使自己對java語言有了更深的了解。讓我漸漸體會到了JAVA的博大精深。以及怎么學(xué)習(xí)JAVA,怎么學(xué)習(xí)計算機(jī)語言,怎樣對問題進(jìn)行
34、解決和運(yùn)用JAVAGUI,查找JAVAAPI的使用都用了更進(jìn)一步的理解。也更加熟悉和了解了java開發(fā)工具Eclipse的使用同時,程序在編寫完畢之后還有很多地方需要完善。例如:可以把另一方選擇為電腦方,讓電腦自動下,也可以給游戲添加背景音樂;甚至可以修改成網(wǎng)絡(luò)游戲,用戶可以在網(wǎng)上對戰(zhàn)。總之,有很多地方可以擴(kuò)充和完善。在此次設(shè)計過程中我也學(xué)到了許多了關(guān)于計算機(jī)方面的知識,編程能力有了很大的提高。第4章圍棋對弈系統(tǒng)的具體實(shí)現(xiàn)界面是系統(tǒng)之間最直接的交互界面,界面的友好性體現(xiàn)了軟件設(shè)計的質(zhì)量,并在很大程度上決定了軟件是否成功。4.1界面設(shè)計4.1.1用戶登陸界面圖圖4.1.1用戶登錄模塊框圖圖4.1
35、用戶登陸界面此loginDialog函數(shù)的作用是檢測用戶登陸的合法性,并確認(rèn)用戶輸入了合法的登錄名和口令。部分代碼:login=newJDialog();login.setTitle(登錄);/設(shè)置標(biāo)題login.setLayout(newFlowLayout();/利用流布局來設(shè)置窗口的布局login.add(newJLabel(用戶名:);/添加標(biāo)簽為用戶名的對象finalJTextFieldname=newJTextField(10);/設(shè)置文本框中字符不得超過10個login.add(name);login.add(newJLabel(密碼:);finalJPasswordFieldp
36、assword=newJPasswordField(10);/設(shè)置密碼框中字符不得多于10個password.setEchoChar(*);/設(shè)置顯示密碼對應(yīng)的字符為*4.1.2用戶注冊界面圖圖4.2用戶注冊界面privatevoidregisterDialog(finalJDialogregDialog)Boxbox1=Box.createVerticalBox();box1.add(newJLabel(用戶名:,JLabel.RIGHT);/添加用戶名標(biāo)簽,用戶名在標(biāo)簽中靠右對齊box1.add(Box.createVerticalStrut(10);box1.add(newJLabel(
37、性別:,JLabel.RIGHT);/添加性別標(biāo)簽,性別在標(biāo)簽中靠右對齊box1.add(Box.createVerticalStrut(10);box1.add(newJLabel(密碼:,JLabel.RIGHT),-1);/添加密碼標(biāo)簽,密碼在標(biāo)簽中靠右對齊box1.add(Box.createVerticalStrut(10);box1.add(newJLabel(確認(rèn)密碼:,JLabel.RIGHT);/添加確認(rèn)密碼標(biāo)簽,確認(rèn)密碼在標(biāo)簽中靠右對齊Boxbox2=Box.createVerticalBox();finalJTextFieldnameTextField=newJTextF
38、ield(10);/設(shè)置用戶名文本框字符不得超過10個,且文本框不能被繼承box2.add(nameTextField);box2.add(Box.createVerticalStrut(8);finalCheckboxGroupcbg=newCheckboxGroup();Boxbox21=Box.createHorizontalBox();finalCheckboxcb1=newCheckbox(男,cbg,true);/復(fù)選框默認(rèn)狀態(tài)選定為男性box21.add(cb1);box21.add(newCheckbox(女,cbg,false);/當(dāng)鼠標(biāo)點(diǎn)擊女性復(fù)選框時,flase自動變?yōu)閠
39、ruebox2.add(box21);box2.add(Box.createVerticalStrut(8);/定義密碼框中的字符長度小于10個finalJPasswordFieldpass1=newJPasswordField(10);box2.add(pass1);box2.add(Box.createVerticalStrut(8);finalJPasswordFieldpass2=newJPasswordField(10);box2.add(pass2);BoxbaseBox=Box.createHorizontalBox();baseBox.add(box1);baseBox.add
40、(box2);regDialog.setLayout(newFlowLayout();regDialog.add(baseBox);JButtonconfirm=newJButton(確定);/創(chuàng)建并聲明確定按鈕JButtoncancel=newJButton(取消);/創(chuàng)建并聲明取消按鈕regDialog.add(confirm);regDialog.add(cancel);regDialog.setSize(200,200);/設(shè)置大小regDialog.setResizable(false);regDialog.setLocationRelativeTo(null);confirm.ad
41、dActionListener(newActionListener()publicvoidactionPerformed(ActionEventarg0)Stringsex=null;if(cbg.getSelectedCheckbox()=cb1)sex=男;elsesex=女;if(saveUserData(nameTextField.getText().trim(),sex,newString(pass1.getPassword(),newString(pass2.getPassword()regDialog.setVisible(false);elseJOptionPane.showM
42、essageDialog(regDialog,輸入有誤,請檢查,錯誤提示,JOptionPane.ERROR_MESSAGE););/獲取監(jiān)聽器cancel.addActionListener(newActionListener()publicvoidactionPerformed(ActionEventarg0)regDialog.setVisible(false););/獲取監(jiān)聽器4.1.3系統(tǒng)主界面主界面修改前主界面修改后圖4.3系統(tǒng)主界面關(guān)鍵代碼:voidinitMyHash(PointstartPoint,intinterval)Oneone;Pointkey;/邏輯點(diǎn)標(biāo)志inti,
43、j;/定義i,jfor(i=1;i=19;i+)for(j=1;j=19;j+)/循環(huán)key=newPoint(i,j);one=newOne();/創(chuàng)建對象one.posX=startPoint.x+(i-1)*interval;/相鄰點(diǎn)處理,獲取one.posY=startPoint.y+(j-1)*interval;/相鄰點(diǎn)處理。獲取/獲取相鄰點(diǎn)one.pointAround0=newPoint(i,j-1);/上one.pointAround1=newPoint(i,j+1);/下one.pointAround2=newPoint(i-1,j);/左one.pointAround3=n
44、ewPoint(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)鍵字/更新盤面publicvoidpaint(Graphicsg)PointstartPoint=STARTPOINT;/創(chuàng)建對象,開始點(diǎn)intinterval=INTERVAL;/定義成員變量t
45、his.paintChessboard(g,startPoint,interval);/棋盤的操作this.paintChessman(g,startPoint,interval);/棋子的操作/畫棋盤4.2程序設(shè)計及調(diào)試運(yùn)行利用JSP“一次編寫,各處運(yùn)行”的編程優(yōu)點(diǎn),按功能模塊結(jié)構(gòu)設(shè)計菜單,布置各明細(xì)模塊工作界面,編寫各個模塊的程序代碼,進(jìn)行編譯連接運(yùn)行,經(jīng)過反復(fù)調(diào)試修改,以達(dá)到系統(tǒng)功能要求。這個過程具有大量的工作量,應(yīng)仔細(xì)對每個程序細(xì)節(jié)進(jìn)行分析思考、編寫程序并調(diào)試,做到程序簡潔清楚,盡量避免可能潛在的程序錯誤,并在必要的地方加以注釋,以便于程序閱讀和修改。4.3本章小結(jié)本章介紹了系統(tǒng)的具體
46、實(shí)現(xiàn)和部分關(guān)鍵代碼,其中包括用戶登錄所要用到的loginDialog函數(shù),主界面的框架設(shè)計。第5章結(jié)束語Java語言是當(dāng)今最為流行的程序設(shè)計語言之一作為一門非常優(yōu)秀和極為健壯的編程語言,它同時具有的面向?qū)ο?,與平臺無關(guān),分布式應(yīng)用,安全,穩(wěn)定和多線程等優(yōu)良的特征,使用Java語言,不僅可以開發(fā)出功能強(qiáng)大的大型應(yīng)用程序,而且Java語言本身突出的跨平臺的特性也使得它特別適合于Internet上的應(yīng)用開發(fā),可以這樣說,Java的出現(xiàn)使得所開發(fā)的應(yīng)用程序“一次編寫,處處可用”的實(shí)現(xiàn)成為了可能。人工智能屬于計算機(jī)科學(xué)的領(lǐng)域,它以計算機(jī)技術(shù)為基礎(chǔ),近幾十年來,它的理論和技術(shù)已經(jīng)日益成熟,應(yīng)用領(lǐng)域也正在不
47、斷擴(kuò)大,顯示出強(qiáng)大的生命力。近來隨著計算機(jī)的快速發(fā)展,各種各樣的電腦游戲?qū)映霾桓F,使得我們能有更多的娛樂項(xiàng)目,而棋類游戲能起到鍛煉人的思維和修身養(yǎng)性的作用,而且棋類游戲水平頗高,大有與人腦分庭抗禮之勢。其中戰(zhàn)勝過國際象棋世界冠軍-卡斯帕羅夫的“深藍(lán)”便是最具說服力的代表。致謝參考文獻(xiàn)基于Java的遠(yuǎn)程圍棋對弈軟件的設(shè)計HYPERLINK/Journal/C-C6-HDJT-1999-01.htmt_blank華東交通大學(xué)學(xué)報1999年01期美RogersCadenhead.Java編程入門經(jīng)典.梅興文譯.第4版.北京:人民郵電出版社,2007楊昭編著.二級Java語言程序設(shè)計教程.北京:中國水
48、利水電出版社,2006李芝興,楊瑞龍編.Java程序設(shè)計之網(wǎng)絡(luò)編程.清華大學(xué)出版社,2006年3宛延闿等編著.實(shí)用Java程序設(shè)計教程.北京:機(jī)械工業(yè)出版社,2006陳國君等編著.Java2程序設(shè)計基礎(chǔ).北京:清華大學(xué)出版社,2006鄭莉.王行言.馬素霞編著.Java語言程序設(shè)計.北京:清華大學(xué)出版社,2006丁振凡主編.Java語言實(shí)用教程.北京:北京郵電大學(xué)出版社,2005朱喜福等編.Java程序設(shè)計.北京:人民郵電出版社,2005(美)BruceEckel編.Java編程思想第3版.機(jī)械工業(yè)出版社,2005年9月(美)DougLea著.Java并發(fā)編程:設(shè)計原則與模式.中國電力出版社譯。
49、2004年3月。Java技術(shù)論壇:HYPERLINK/瘋狂Java聯(lián)盟:HYPERLINK/digest.php/digest.php中文Java技術(shù)網(wǎng):/附錄源代碼/*MainWindow*/importjava.awt.BorderLayout;importjava.awt.Button;importjava.awt.Checkbox;importjava.awt.CheckboxGroup;importjava.awt.Choice;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.FlowLayout;import
50、java.awt.Frame;importjava.awt.Graphics;/抽象類,不能用于構(gòu)造方法創(chuàng)建對象importjava.awt.GridLayout;importjava.awt.Image;importjava.awt.Label;importjava.awt.Panel;importjava.awt.Point;importjava.awt.TextField;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.ev
51、ent.MouseEvent;importjava.awt.event.WindowEvent;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.io.RandomAccessFile;.ServerSocket;.Socket;importjavax.swing.Box;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.
52、swing.JLabel;/負(fù)責(zé)創(chuàng)建標(biāo)簽對象,標(biāo)簽用來顯示信息,但沒有編輯功能importjavax.swing.JOptionPane;importjavax.swing.JPasswordField;importjavax.swing.JTextField;/利用import引用各類包publicclassMainWindowextendsFrameimplementsRunnableGopanelGo=newGo();/用Go類聲明并創(chuàng)建一個panelGo對象ImagemyImage;intPORT;SocketsendSocket;/主動連接SocketPrintWriterwrite
53、r;/用來發(fā)送messagebooleanstopFlag;booleanisInitiative;PointmessagePoint;PointgoStartPoint=null;/初始化PointyellowPoint=null;booleanstepColor=true;PointLastPoint=null;/移除黃點(diǎn)時,判斷位置變動BorderLayoutborderLayout1=newBorderLayout();/用BorderLayout布局Panelpanel1=newPanel();/創(chuàng)建面板Panelpanel2=newPanel();BorderLayoutborde
54、rLayout2=newBorderLayout();Panelpanel3=newPanel();CheckboxGroupcheckboxGroup1=newCheckboxGroup();/選項(xiàng)框Checkboxcheckbox1=newCheckbox();/聲明創(chuàng)建Checkbox類的對象Checkboxcheckbox2=newCheckbox();Labellabel1=newLabel();TextFieldtextField1=newTextField();Buttonbutton1=newButton();Labellabel2=newLabel();Choicechoic
55、e1=newChoice();Buttonbutton2=newButton();GridLayoutgridLayout1=newGridLayout();/利用GridLayout布局BorderLayoutborderLayout3=newBorderLayout();publicMainWindow()/構(gòu)造MainWindow方法tryjbInit();/可能發(fā)生異常的語句catch(Exceptione)e.printStackTrace();/異常處理privatevoidjbInit()throwsException/用關(guān)鍵字throws聲明拋出異常choice1.setBac
56、kground(newColor(236,190,120);/設(shè)置棋盤底色button1.setBackground(newColor(236,190,120);this.setResizable(false);newThread(this).start();/啟動監(jiān)聽線程this.PORT=1976;this.isInitiative=false;/是否主動連接this.stopFlag=false;/是否繼續(xù)監(jiān)聽的標(biāo)志this.choice1.addItem(黑);this.choice1.addItem(白);LastPoint=newPoint();messagePoint=newPo
57、int();this.setSize(470,450);this.setTitle(圍棋程序作者:圍棋對弈小組);/設(shè)置標(biāo)題this.panelGo.setEnabled(false);/開始之前屏蔽掉盤面checkbox1.addMouseListener(newjava.awt.event.MouseAdapter()publicvoidmouseClicked(MouseEvente)checkbox1_mouseClicked(e););/獲取監(jiān)聽器this.goStartPoint=this.panelGo.getLocation();/this.setLayout(borderLa
58、yout1);/設(shè)置背景布局panel1.setLayout(borderLayout2);checkbox1.setCheckboxGroup(checkboxGroup1);checkbox1.setLabel(單機(jī));checkbox2.setCheckboxGroup(checkboxGroup1);checkbox2.setLabel(聯(lián)機(jī));/設(shè)置名為聯(lián)機(jī)的復(fù)選框checkbox2.addMouseListener(newjava.awt.event.MouseAdapter()publicvoidmouseClicked(MouseEvente)checkbox2_mouseCl
59、icked(e););/獲取監(jiān)聽器label1.setText(對方地址);/button1.setLabel(連接);/設(shè)置名為連接的按鈕button1.addActionListener(newjava.awt.event.ActionListener()publicvoidactionPerformed(ActionEvente)button1_actionPerformed(e););/告訴監(jiān)聽器所發(fā)生的事件,并執(zhí)行方法label2.setText();button2.setBackground(newColor(236,190,120);button2.setLabel(開始);/設(shè)
60、置名為開始的按鈕button2.addActionListener(newjava.awt.event.ActionListener()publicvoidactionPerformed(ActionEvente)button2_actionPerformed(e););/panel3.setLayout(gridLayout1);/設(shè)置布局gridLayout1.setRows(8);gridLayout1.setColumns(1);gridLayout1.setHgap(100);gridLayout1.setVgap(10);/panel2.setLayout(borderLayout
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位水渠維修合同范例
- 上海影樓勞動合同范例
- 勞動合同范本汽修
- 廠房中介居間合同范例
- 公墓定做合同范例
- 合約到期解約合同范例
- 合同范例范例細(xì)節(jié)
- 京東家裝合作合同范例
- 勞務(wù)合同范例2004版
- 傳承技術(shù)學(xué)習(xí)合同范例
- 建設(shè)工程檢測人員(地基基礎(chǔ)檢測)考試復(fù)習(xí)題庫400題(含各題型)
- 房地產(chǎn)開發(fā)公司建立質(zhì)量保證體系情況說明
- 谷氨酸的發(fā)酵工藝
- 商品庫存管理系統(tǒng)-數(shù)據(jù)庫課設(shè)
- 航拍中國第一季 文字稿
- 肺癌放療靶區(qū)的定義和勾畫
- 三年級美術(shù)下冊 曲曲直直 教學(xué)課件
- 團(tuán)員民主評議測評表
- 生產(chǎn)運(yùn)作管理備貨型與訂貨型生產(chǎn)
- 副井井筒永久鎖口安全技術(shù)措施
- GB/T 21994.4-2008氟化鎂化學(xué)分析方法第4部分:鎂含量的測定EDTA容量法
評論
0/150
提交評論