freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文-基于vc的智能中國象棋系統(tǒng)的設(shè)計與實現(xiàn)(參考版)

2025-06-10 11:11本頁面
  

【正文】 } if (isValidMove(x, y, x, y 1)) { } if (isValidMove(x, y, 。 !isRed(ChessMan)) { continue。 } if (isRedGo amp。amp。 y++) { int ChessMan = ChessBoard[x][y]。 x++) { for (int y = 0。 for (int x = 0。 } 系統(tǒng)的最終目的是要實現(xiàn)人機對戰(zhàn),人機對戰(zhàn)的核心是使電腦具有人工智能。 if( ().equals(紅方顏色 )) { } if( ().equals(黑方顏色 )) { } (piece,startI,startJ,m,n) 。 } } else { 可否走棋 =false。 break。i=maxI1。 } } else if(startJ==endJ) { int i=0。 break。j=maxJ1。 if(().equals(車 ))//車的走棋規(guī)則 { if(startI==endI) { int j=0。 int maxI=(startI,endI)。本系統(tǒng)通過對象棋規(guī)則的定義以及圖形化的棋子如何在棋盤中消失來實現(xiàn)人人對戰(zhàn)這一功能: public boolean movePieceRule(ChessPiece piece,int startI,int startJ,int endI,int endJ) { =piece。 對弈功能的實現(xiàn) 對弈是用戶對象棋游戲最基本的需求,本系統(tǒng)的對弈功能包括人人對戰(zhàn)和人機對戰(zhàn)。 point[2][10].setPiece(紅馬 1,this)。 紅車 棋子類別 (紅方顏色 )。 紅車 棋子類別 (紅方顏色 )。 y 軸長 =c。 unitHeight=h。 Color bc=getBackground()。 addMouseListener(this)。 ChessPiece 黑車 1,黑車 2,黑馬 1,黑馬 2,黑將 ,黑士 1,黑士 2, 黑卒 1,黑卒 2,黑卒 3,黑卒 4,黑卒 5,黑象 1,黑象 2,黑炮 1,黑炮 2。 } } /*棋子的類別 */ public String 紅方顏色 =紅色 ,黑方顏色 =黑色 。c++) { (+c,unitWidth/4,j*unitHeight)。c=39。 for(char c=39。i++) { (+i,i*unitWidth,unitHeight/2)。 for(int i=1。 (point[4][8].x,point[4][8].y,point[6][y 軸長 ].x,point[6][y 軸長 ].y)。 } } (point[4][1].x,point[4][1].y,point[6][3].x,point[6][3].y)。 (point[i][y 軸長 4].x,point[i][y 軸長 4].y,point[i][y 軸長 ].x,point[i][y 軸長 ].y)。amp。i=x 軸長 。j++) { (point[1][j].x,point[1][j].y,point[x 軸長 ][j].x,point[x 軸長 ][j].y)。 for(int j=1。 } public String 棋子類別 () { return 顏色類別 。 } public Color 獲取棋子顏色 () { return foreColor。 } public int getHeight() { return height。 (2,2,width2,height2)。 (name,7,height8)。 ()。 } public void paint(Graphics g) { (foreColor)。 addMouseMotionListener(board)。 setSize(width,height)。 ...... foreColor=fc。 int width,height。 String 顏色類別 =null。首先定義一個棋子類( ChessPiece),來獲取棋子的顏色以及類別: public class ChessPiece extends JLabel { String name。界面的設(shè)計是供用戶與電腦進行交互,無論是人機對戰(zhàn)還是制作、演示棋譜都是在界面中實現(xiàn)的。 (b)查詢后續(xù)局面 這種開局庫查詢是與搜索結(jié)合在一起的,并不是查詢當前局面是否在開局庫中,而是展開根節(jié)點的所有走法,也就是當前局面下所有可能走法 。對于當前局面,查詢數(shù)據(jù)庫的函數(shù)使用庫中的隨機數(shù)組計算出其哈希值,然后在庫中察看是否有此值所代表的局面。它只存放某局面的一個哈希值以及對應(yīng)的走法。雖然二者查詢的形 式完全相同,但是存儲的內(nèi)容卻大不相同。 這種方法是使用置換表來統(tǒng)計開局 庫中的一些走法的優(yōu)劣。不管紅還是黑,第一步時總是以 1 表示,以后黑方每走一步數(shù)字就加 1。這個是為了適應(yīng) 50 步和棋規(guī)則而定。而且,這 個標記是且只是在該局面緊接的上一步棋是某方剛走兵推進兩格的情況下出現(xiàn) 。小寫 \“ w\”表示紅方走棋;小寫 \“ b\”表示黑方走棋;因為起初局面是紅先,所以上面就是 \“ w\” . (5) 吃過路兵目標格( En Passant Target Square) 如果沒有,就用 \“ \”表示。 上面的那 P1PlP1PlP,就是表示黑方在第 7 橫線上排有 5 只兵 ; 后面那兩個數(shù)字 9, 就是表示從第 6 到第 5 橫線,雙方一個棋子都不在,是空格 ; 9 個反斜杠 \“ ∧ ” 將第一區(qū)域分成 8 段,因為棋盤有 10 條橫線 ; 其它的照著圖完全可 以類推。規(guī)則是從第 10 橫線開始順序數(shù)到第 1橫線 (紅方在下,從上數(shù)到下 ),從 a 線開始順次數(shù)到 h 線 ; 紅方棋子以大寫字母 \“ RNBAKABNR\” 功表示,黑方棋子以小寫 \“ rnbakabnr\” 表示,這是英文表示法,每個字母代表的意義與常規(guī)規(guī)定相同。 所有這一切用一行文字符號表示就行了而且非常容易讀。單純的 FEN 記錄文件后綴應(yīng)該是“ .fen”,比如 :,在中國象棋開局庫的 fen 串形式的開局庫文件后綴為 .DAT。一份標準的局面記號對需要大量交換共享局面數(shù)據(jù)的國際象棋程序設(shè)計等工作具有尤其重要的作用。福斯夫設(shè)計的記錄局面的標準基礎(chǔ)上的。 FEN 是建立在 19世紀由報社記者 S下面我們來看看什么是 fen 串。 實現(xiàn)開局庫的主要方法 實現(xiàn)開局庫的方法一般有兩種:一種是用 FEN 的形式表示的開局庫;另一種是哈希值表示的開局庫。但另一方面,如果開局庫本身不好或部分不好,程序也可能被盲目引到劣勢的局面甚至很快失利。無庸多說,這對于程序節(jié)省思考時間有重大幫助。所 以中國象棋開局階段是整個對弈過程中變化最多的階段,開局的好壞對之后的中、殘局意義重大?!昂门谖弧?,即炮要占住子力疏密適中的要點,封鎖對方進攻路線,配合其他子力展開進攻。 開局庫設(shè)計 中國象棋的開局變化極多,每一種走法都能產(chǎn)生出一種新的變化,單就中炮對屏風馬、中炮對反宮馬、中炮對左三步虎等數(shù)十種變化,其格個開局又都有自身的變化,這些開局都遵循開局的規(guī)律 :“明車”,即車路要通 。 另外,空著搜索 (Null Move)也是搜索算法中一種很有效的搜索策略,它的思想是放棄本方的走棋權(quán)利,讓對方連續(xù)走棋,如果得到的分數(shù)還大于原來的 β值,就可以簡單地返回 β值,在此分枝下的搜索意義不大,免于搜索。 置換表 (TransposilionTable)是用一張表把搜索過的信息記錄下來,在后續(xù)的搜索中,察看記錄在表中的這些信息,如果將要搜索的某個節(jié)點已經(jīng)有記錄,就直接利用記錄下來的結(jié)果引入到當前的搜索中,以減少搜索。 殺手啟發(fā) (Killer Heuristic)是基于這樣的思想 :在搜索過程中,有許多走法一經(jīng)搜索就引發(fā)了剪枝,且這些走法通常是同一個走法,這樣,為每一層記錄引發(fā)剪枝最多的走法即殺手走法,當下一次搜索到同樣的深度時,如果殺手走法是該局的一個合法走法,就優(yōu)先搜索殺手走法。根據(jù)經(jīng)驗,一些以前經(jīng)過搜索認為最佳的走法,其后續(xù)走法仍然有很大可能成為最優(yōu)的走法。圍繞著法排序,己經(jīng)出現(xiàn)了許多優(yōu)秀的搜索算法與舉措,例如歷史啟發(fā),殺手啟發(fā),置換表等等。 在 αβ剪枝搜索中,剪枝效率幾乎完全取決于節(jié)點的排列順序,如何調(diào)整待展開的走法的 順序,是提高搜索效率的關(guān)鍵。 高級搜索算法 極大極小值搜索是所有搜索算法的基礎(chǔ),而 αβ剪枝搜索是所有剪枝算法的基礎(chǔ)。圖 中通過剪枝,最后得到如粗箭頭所示的最佳路徑片斷。同理搜索右路分枝,進行剪枝操作。顯然此 β值可作為 MIN 方可能實現(xiàn)著法指標的上界。圖 中通過剪枝,最后得到如粗箭頭所示的最佳路徑片斷。同理搜索右路分枝,也可以進行剪枝操作。 圖 和圖 給 出兩個剪枝示意圖 : MAX MIN MAX 圖 α剪枝示意圖 MIN MAX MIN 圖 β剪枝示意圖 在圖 所示的極大極小樹片段中,按照極大極小值搜索規(guī)則, 從左路分枝的葉節(jié)點倒推得到第一層 MAX 節(jié)點的值為 5,可表示此時的著法最佳值,記為 α,顯然此 α值可作為 MAX 方著法指標的下界。這個技術(shù)叫αβ剪枝搜索。 上述極 大極小值搜索過程中,遍歷了整個的博弈樹,這樣的搜索算法效率低,搜 索量非常大,如果要減少搜索量,又可能影響搜索效果。圖 表示了一個極大極小搜索過程,粗箭頭為最佳路徑片段。在這一方走棋的時候,選擇價值最大的子節(jié)點走法,即實行“ Max 搜索”,另一方走棋則選擇價值最小的子節(jié)點走法,即實行“ Min 搜索”,這就是象棋博弈中的一個極大極小過程。 極大極小值算法的原則是 :博弈雙方所要達到的目的相反,一方要尋找的利益是另一 方失去 的利益,博弈的一方總是希望下一步是子節(jié)點中取值最大者,而另一方 希望下一步是子節(jié)點中取值最小者。 基本搜索算法 極大極小值 方法 (Minimax Algorithm)是解決博弈樹問題的基本方法。 (3)啟發(fā)式搜索 (Heuristic search)利用象棋領(lǐng)域的知識 (啟發(fā)信息 )設(shè)計搜索算法,著重對走法排序,以簡化和加快搜索過程。 (
點擊復制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1