中國(guó)象棋java源碼.doc

中國(guó)象棋java源碼.doc

ID:58424731

大?。?07.00 KB

頁(yè)數(shù):59頁(yè)

時(shí)間:2020-05-12

中國(guó)象棋java源碼.doc_第1頁(yè)
中國(guó)象棋java源碼.doc_第2頁(yè)
中國(guó)象棋java源碼.doc_第3頁(yè)
中國(guó)象棋java源碼.doc_第4頁(yè)
中國(guó)象棋java源碼.doc_第5頁(yè)
資源描述:

《中國(guó)象棋java源碼.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、《面向?qū)ο蟪绦蛟O(shè)計(jì)1》實(shí)驗(yàn)報(bào)告班級(jí)信管151學(xué)號(hào)3姓名陳玉仲指導(dǎo)教師伍良啟完成時(shí)間2017.01.06評(píng)閱成績(jī):教師簽名:一、設(shè)計(jì)題目中國(guó)象棋。二、設(shè)計(jì)說明2.1引言象棋水平的發(fā)展是需要靠信息技術(shù)來推動(dòng)的,國(guó)際象棋有兩個(gè)很好的范例,一個(gè)是象棋棋譜編輯和對(duì)弈程序的公共平臺(tái)——WinBoard平臺(tái),另一個(gè)是商業(yè)的國(guó)際象棋數(shù)據(jù)庫(kù)和對(duì)弈軟件——ChessBase,他們?yōu)閲?guó)際象棋愛好者和研究者提供了極大的便利。國(guó)際象棋軟件有著成功的商業(yè)運(yùn)作,已發(fā)展成一種產(chǎn)業(yè)。然而,電腦在中國(guó)象棋上的運(yùn)用還剛剛起步,盡管國(guó)內(nèi)

2、涌現(xiàn)出一大批中國(guó)象棋的專業(yè)網(wǎng)站和專業(yè)軟件,但是由于缺乏必要的基礎(chǔ)工作,電腦技術(shù)在中國(guó)象棋上的應(yīng)用優(yōu)勢(shì)還無法體現(xiàn)出來。在設(shè)計(jì)中國(guó)象棋軟件過程中,國(guó)際象棋軟件有很多值得借鑒的成功經(jīng)驗(yàn)和優(yōu)秀的思想。例如B.Moreland,微軟(Microsoft)的程序設(shè)計(jì)師,業(yè)余從事國(guó)際象棋引擎Ferret的開發(fā),他的一系列關(guān)于國(guó)際象棋程序設(shè)計(jì)的文章非常值得其他棋類程序設(shè)計(jì)人員借鑒。然而,中國(guó)象棋與國(guó)際象棋存在著很大的差異,因此國(guó)際象棋的某些成熟技術(shù),無法直接應(yīng)用于中國(guó)象棋,需要對(duì)其加以改進(jìn)和創(chuàng)新。本文針對(duì)中國(guó)象棋

3、程序設(shè)計(jì)的一系列問題,總結(jié)出一些搜索引擎的設(shè)計(jì)方法,并給出java語(yǔ)言的實(shí)現(xiàn)2.2程序的設(shè)計(jì)及實(shí)現(xiàn)本系統(tǒng)主要有以下4個(gè)模塊,每個(gè)模塊對(duì)應(yīng)一個(gè)程序包:1、engine:搜索引擎包,系統(tǒng)的核心部分。2、message:網(wǎng)絡(luò)對(duì)戰(zhàn)過程中各種消息及其傳遞機(jī)制的類實(shí)現(xiàn)包。3、main:主界面實(shí)現(xiàn)包。4、pieces:棋子及其相關(guān)類實(shí)現(xiàn)包?,F(xiàn)就各個(gè)包中的要點(diǎn)給與說明。2.2.1搜索引擎的實(shí)現(xiàn)(engine包)(1)BitBoard.java:位棋盤的實(shí)現(xiàn),見2.4節(jié)。(2)CCEvalue.java:評(píng)價(jià)函數(shù)知

4、識(shí)類。本程序使用開源軟件“夢(mèng)入神蛋”的快速評(píng)價(jià)函數(shù)。該函數(shù)包含子力價(jià)值和棋子所在位置的獎(jiǎng)勵(lì)值。子力價(jià)值分別是:帥-0,仕-40,象-40,馬-88,車-200,炮-96,兵-9。帥是無價(jià)的,用0表示。以馬為例,位置的獎(jiǎng)勵(lì)值如下:0,-3,5,4,2,2,5,4,2,2,-3,2,4,6,10,12,20,10,8,2,2,4,6,10,13,11,12,11,15,2,0,5,7,7,14,15,19,15,9,8,2,-10,4,10,15,16,12,11,6,2,0,5,7,7,14,15,

5、19,15,9,8,2,4,6,10,13,11,12,11,15,2,-3,2,4,6,10,12,20,10,8,2,0,-3,5,4,2,2,5,4,2,2上面的每行代表棋盤的一條縱線。其中,-10所在的位置是“窩心馬”,所以要罰10分。(3)ChessPosition.java:動(dòng)態(tài)局面類包含對(duì)局過程中的動(dòng)態(tài)信息,主要實(shí)現(xiàn)的是2.4節(jié)的各類位棋盤和移子函數(shù)。(4)MoveStruct.java:著法表示類。(5)PreMove.java:偽合法著法生成模塊,見4.1。(6)MoveSort

6、Struct.java:合法著法的生成及其排序算法,見4.2。(7)SearchMove.java:搜索算法,實(shí)現(xiàn)如下功能:1)主置換表及開局庫(kù)2)Alpha-Beta搜索算法3)針對(duì)吃子著法的靜態(tài)搜索算法4)適應(yīng)性空著裁剪算法:見5.5.2,根據(jù)不同情況來調(diào)整R值的做法,稱為“適應(yīng)性空著裁剪”(AdaptiveNull-MovePruning),它首先由ErnstHeinz發(fā)表在1999年的ICCA雜志上。其內(nèi)容可以概括為:a.深度小于或等于6時(shí),用R=2的空著裁剪進(jìn)行搜索b.深度大于8時(shí),用R

7、=3;c.深度是6或7時(shí),如果每方棋子都大于或等于3個(gè),則用R=3,否則用R=2。5)帶時(shí)間控制的迭代加深搜索算法:每次加深搜索都判斷時(shí)間是否夠用。6)“將軍”擴(kuò)展(加深)搜索算法:當(dāng)搜索到己方被“將”時(shí),增加搜索的深度。7)主要變例搜索算法2.2.2信息傳輸機(jī)制(message包)在對(duì)弈過程中(主要是網(wǎng)絡(luò)對(duì)弈)需要在對(duì)弈雙方之間傳輸各類信息,抽象為各類消息。如時(shí)間規(guī)則的協(xié)定、各方的走子信息等。每方都有消息接收、消息處理和消息發(fā)送程序(OuterMsgReceiver、LocalMsgReceiv

8、er,QzMessageHandler,MessageSender)。己方的MessageSender與對(duì)方的OuterMsgReceiver通過接口SrConnection連接。所有接收的消息放入消息隊(duì)列QzMsgQueue中,等待消息處理進(jìn)程QzMessageHandler來處理。所有的消息都封裝在QzMessage類對(duì)象中,消息的類型通過消息的Header類型(以靜態(tài)常量存放在MsgHeader類中)來區(qū)分。2.2.3棋子(pieces包)Qizi.java包含棋子的信息,如

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。