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

正文內(nèi)容

基于android技術(shù)的中國(guó)象棋人機(jī)對(duì)弈游戲的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文(編輯修改稿)

2025-07-25 00:30 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 { if(qizi[j][fromX] != 0){ count++。 / /返回false } } if(count!=1){ return false。 / /返回false } } }}break。卒、兵:一步只可以走過(guò)一個(gè)方格的距離。當(dāng)兵卒位于己方陣營(yíng)時(shí),只可以向前走動(dòng)。當(dāng)兵卒過(guò)河后到達(dá)對(duì)方陣營(yíng),可向前、向左、向右三個(gè)方向行走,即兵卒遵循的規(guī)律是絕不后退。 圖  卒的走法黑兵規(guī)則走法的介紹if(toY fromY){ / /不能回頭 return false。 / /返回false}if(fromY5 amp。amp。 fromY == toY){ / /過(guò)河前只能直走 return false。 / /返回false}if(toY fromY +(toX fromX) 1){ / /只能走一步并且是直線 return false。 / /返回false}break。//////////////////////////////////////////////////////紅卒規(guī)則走法的介紹if(toY fromY){ / /不能回頭 return false。 / /返回false}if(fromY4 amp。amp。 fromY == toY){ / /過(guò)河前只能直走 return false。 / /返回false}if(toY fromY +(toX fromX) 1){ / /只能走一步并且是直線 return false。 / /返回false}break。象、相:只可以在己方陣營(yíng)走動(dòng),且僅限于7個(gè)點(diǎn),即己方“田”字格上的7個(gè)點(diǎn),走的是斜線,走動(dòng)時(shí),起始點(diǎn)與目標(biāo)點(diǎn)構(gòu)成一條斜線,若該斜線的中點(diǎn)位置存在其他棋子,則被絆住無(wú)法走動(dòng)。 圖  象的走法黑象規(guī)則走法的介紹if(toY 4){ / /不能過(guò)河 return false。 / /返回false}if((fromXtoX) != 2||(fromY toY) != 2){ / /象走“田”字 return false。 / /返回false}if(qizi[(fromY+toY)/2][(fromX+toX)/2] != 0){ / /象眼處有棋子 return false。 / /返回false}break。///////////////////////////////////////////////////////紅相規(guī)則走法的介紹if(toY 5){ / /不能過(guò)河 return false。 / /返回false}if((fromXtoX) != 2||(fromY toY) != 2){ / /象走“田”字 return false。 //返回false}if(qizi[(fromY+toY)/2][(fromX+toX)/2] != 0){ / /象眼處有棋子 return false。 / /返回false}break。士、仕:只可以在己方陣營(yíng)走動(dòng),且僅限于5個(gè)點(diǎn),即己方棋盤上所繪的兩條斜線的四個(gè)頂點(diǎn)和交叉點(diǎn)。一步只可以走動(dòng)一個(gè)方格的斜線距離??蛇M(jìn)可退。 圖  士的走法黑士規(guī)則走法的介紹:if(toY 2 ||toX 3 || toX 5){ / /出了九宮格 return false。 / /返回false}if((fromYtoY) !=1|| (toXfromX)!=1){/ /走斜線 return false。 / /返回false}break。/////////////////////////////////////////////////////////////////////紅仕規(guī)則走法的介紹:if(toY 7 ||toX 3 || toX 5){ / /出了九宮格 return false。 / /返回false}if((fromYtoY) !=1|| (toXfromX)!=1){/ /走斜線 return false。 / /返回false}break。將、帥:只可以在己方陣營(yíng)走動(dòng),且僅限于9個(gè)點(diǎn),即己方底三行中三列形成的9個(gè)交叉點(diǎn),也就是俗稱的“九宮”,一步只可以走動(dòng)一個(gè)方格的直線距離作為本方的主將,鎮(zhèn)守大本營(yíng),雙方的主將是不能夠處于同一條直線而主將之間不存在其他的棋子進(jìn)行隔擋。                 圖  將帥的走法黑帥規(guī)則走法的介紹:if(toY 2 || toX 3 || toX 5){ / /出了九宮格 return false。 / /返回false}if(((fromY toY) +(toX from))1){ / /只能走一步 return false。 / /返回false}break。/////////////////////////////////////////////////////////////////////////////////紅將規(guī)則走法的介紹:if(toY 7 || toX 3 || toX 5){ / /出了九宮格 return false。 / /返回false}if(((fromY toY) +(toX from))1){ / /只能走一步 return false。 / /返回false}break。 針對(duì)棋盤的設(shè)計(jì),每一種棋子對(duì)應(yīng)一個(gè)固定的值用以識(shí)別該棋子的類型,那么設(shè)計(jì)就根據(jù)紅黑雙方的棋子以及每個(gè)類型的棋子,設(shè)計(jì)規(guī)則類(GuiZe類,調(diào)用其中的canMove方法用以判斷某一步走棋的是否可行。規(guī)則類的設(shè)計(jì)則采用了常規(guī)的辦法,因?yàn)槠遄拥姆N類只有7種,且紅黑雙方處于棋盤的兩端,某些棋子走動(dòng)時(shí)的方向不一樣,設(shè)計(jì)時(shí)就要進(jìn)行分類討論設(shè)計(jì),供存在14中不同的判別方法來(lái)對(duì)所以的棋子走法進(jìn)行判別是否可行,每一個(gè)判別方法都對(duì)應(yīng)于其獨(dú)有的判斷算法。棋盤上各種棋子以及棋盤的初始布局的設(shè)計(jì)采用10*9的數(shù)組來(lái)進(jìn)行標(biāo)識(shí), : 圖 棋盤初始布局各個(gè)數(shù)字的對(duì)應(yīng)關(guān)系如下:0無(wú)棋子;1黑方的帥;2黑方的車;3黑方的馬;4黑方的炮;5黑方的士;6黑方的象;7黑方的卒;8紅方的將;9紅方的車;10紅方的馬;11紅方的炮;12紅方的士;13紅方的相;14紅方的兵。坐標(biāo)(0,0)到坐標(biāo)(8,4)之間的坐標(biāo)代表楚河漢界的一方,坐標(biāo)(0,5)到坐標(biāo)(8,9)之間的坐標(biāo)代表楚河漢界的另一方,即紅黑雙方各自的領(lǐng)土。電腦走棋時(shí)通過(guò)構(gòu)造一個(gè)走法類ChessMove,創(chuàng)建一個(gè)對(duì)象調(diào)用NegamaxEngine類中的Search()函數(shù)根據(jù)當(dāng)前局勢(shì)查詢一個(gè)最好的走法記錄棋子的原有位置坐標(biāo)、目標(biāo)位置坐標(biāo)、棋子類型并對(duì)該對(duì)象進(jìn)行初始化。然后根據(jù)該對(duì)象記錄的原有位置坐標(biāo)和目標(biāo)位置坐標(biāo)進(jìn)行數(shù)據(jù)改變達(dá)到行棋目的。玩家走棋是通過(guò)對(duì)屏幕進(jìn)行監(jiān)聽(tīng),從而記錄棋子類型,原有位置坐標(biāo)和目標(biāo)位置坐標(biāo),通過(guò)調(diào)用規(guī)則類GuiZe中的CanMove判斷該棋子走法是否可行符合棋子走棋規(guī)則,可行就改變?cè)形恢煤湍繕?biāo)位置數(shù)據(jù),達(dá)到行棋的目的輪到走棋的一方,游戲界面當(dāng)前位置顯示走棋一方的“黑帥”或者“紅將”,將某個(gè)棋子從一個(gè)交叉點(diǎn)走到另一個(gè)交叉點(diǎn),或者吃掉對(duì)方的棋子而占領(lǐng)其交叉點(diǎn),這樣一方走棋結(jié)束當(dāng)前位置顯示改變輪到另一方走棋。任何棋子走動(dòng),如果目標(biāo)位置上有對(duì)方的棋子,就可以把對(duì)方的棋子拿出棋盤,即在10*9數(shù)組中相應(yīng)位置的數(shù)字變?yōu)樽约浩遄铀鶎?duì)應(yīng)的數(shù)字,自己棋子原來(lái)所在的位置對(duì)應(yīng)數(shù)組的數(shù)字變?yōu)?,刷幀線程不斷的刷新界面改變屏幕顯示,這樣對(duì)方的棋子就被吃掉,在屏幕上消失在對(duì)應(yīng)顯示自己的棋子;如果目標(biāo)位置上沒(méi)有對(duì)方棋子,10*9數(shù)組對(duì)應(yīng)目標(biāo)位置數(shù)字改變,原有位置數(shù)字變?yōu)?,刷幀線程更新界面改變顯示。 游戲人機(jī)會(huì)話的實(shí)現(xiàn) 著法的生成 在著法生成器中,采用的基本思想就是遍歷整個(gè)棋盤(一個(gè)接一個(gè)地查看棋盤上的每個(gè)位置點(diǎn)),當(dāng)發(fā)現(xiàn)有當(dāng)前下棋方的棋子時(shí)先判斷它是何種類型的棋子,然后根據(jù)其棋子類型而相應(yīng)地找出其所有合法著法并存入著法隊(duì)列。這里的合法著法是通過(guò)象棋的行棋規(guī)則來(lái)確定;產(chǎn)生了著法后要將其存入著法隊(duì)列以供搜索之用,由于搜索會(huì)搜索多層(即考慮雙方你來(lái)我往好幾步,這樣才有利于對(duì)局面進(jìn)行評(píng)估以盡可能避免“目光短淺”),所以在把著法存入著法隊(duì)列的時(shí)候還要同時(shí)存儲(chǔ)該著法所屬的搜索層數(shù)。因此可以將著法隊(duì)列定義為二維數(shù)組MoveList[10][100],其中第一個(gè)數(shù)組下標(biāo)為層數(shù),第二個(gè)數(shù)組下標(biāo)為每一層的全部著法數(shù)。關(guān)于搜索層數(shù),設(shè)定為4,實(shí)際使用的是1到3(在界面中將其限定為1—3)。搜索層數(shù)的增加會(huì)顯著提高電腦的下棋水平(當(dāng)然計(jì)算機(jī)的棋力在很大程度上也依賴于局面評(píng)估)。,512M內(nèi)存的計(jì)算機(jī)上最多只能搜索3層,再多將導(dǎo)致搜索時(shí)間達(dá)到令人無(wú)法容忍的地步(這里還需要特別說(shuō)明的是,搜索的速度也和著法生成的效率以及局面評(píng)估的復(fù)雜度有關(guān),因?yàn)槊糠治鲆粋€(gè)結(jié)點(diǎn)都要執(zhí)行這兩種操作)。對(duì)于每一層的著法數(shù),也就是當(dāng)前下棋方針對(duì)當(dāng)前局面的所有可選的合法著法,據(jù)有關(guān)數(shù)據(jù)統(tǒng)計(jì)在象棋實(shí)戰(zhàn)中一般最多情況下也就五六十種。定義第二個(gè)數(shù)組下標(biāo)為100,應(yīng)當(dāng)可以保證十分的安全。 搜索算法 中國(guó)象棋博弈為二人零和,全信息,非偶然博弈,他的特征如下:  (1) 對(duì)弈的MAX、MIN雙方輪流采取思考走棋,對(duì)弈的結(jié)果有三種情況:和局;MAX方勝,MIN方敗;MIN方勝,MAX方敗。  (2) 在對(duì)弈過(guò)程中,任何一方都了解當(dāng)前的格局和過(guò)去的行棋歷史?! ?3) 任何一方在采取行動(dòng)前都要根據(jù)當(dāng)前的實(shí)際情況,進(jìn)行得失分析,選取對(duì)自已為最有利而對(duì)對(duì)方最為不利的走法,不存在擲骰子之類的碰運(yùn)氣因素。即雙方都是很理智地決定自己的行動(dòng)。最終也就組成了一顆博弈樹(shù)()所示 。 圖 博弈樹(shù)示意圖 在這棵博弈樹(shù)中,根節(jié)點(diǎn)是初始局面,一個(gè)節(jié)點(diǎn)下的每個(gè)分支代表一個(gè)著法,分支相連的子節(jié)點(diǎn)是走了這個(gè)著法后會(huì)出現(xiàn)的局面。由于雙方交替出著在博弈過(guò)程中,任何一方都希望自己取得勝利。因此,當(dāng)某一方當(dāng)前有多個(gè)行動(dòng)方案可供選擇時(shí),他總是挑選對(duì)自己最為有利而對(duì)對(duì)方最為不利的那個(gè)行動(dòng)方案,使自己利益最大化。讓始終從紅方的角度來(lái)考慮。輪到紅方走棋時(shí),紅方總是選擇對(duì)自己最有利的著法,從而在生成的一系列子節(jié)點(diǎn)中尋找分值最高的局面(即MAX層),據(jù)此返回最佳著法;然后輪到黑方走棋,黑方也選對(duì)自己最有利的著法,但在紅方看來(lái),這個(gè)著法對(duì)自己最不利,所以從紅方的角度來(lái)看,黑方就選擇了分值最低的局面(即MIN 層),從而返回黑方的最佳著法。 可以用一個(gè)簡(jiǎn)化的博弈樹(shù)模型來(lái)表示()所示: 在這棵樹(shù)中,矩形代表紅方,圓代表黑方,分別取子節(jié)點(diǎn)的極大/ 極小值。根據(jù)上面的描述,我們選擇了第二個(gè)著法。而加粗的這條路徑就是極大極小算法思考的過(guò)程。 圖 博弈樹(shù)搜索過(guò)程示意 圖 負(fù)極大值算法 局面評(píng)估 局面評(píng)估是一個(gè)通過(guò)既有的棋類知識(shí)來(lái)評(píng)估一個(gè)局面的優(yōu)劣的過(guò)程。這一過(guò)程對(duì)具體的棋類知識(shí)的依賴程度很深,但是仍有一般性的規(guī)律可循。 (1) 棋子的價(jià)值評(píng)估,簡(jiǎn)單的說(shuō)就是評(píng)估雙方都有哪些棋子在棋盤上。根據(jù)我們的經(jīng)驗(yàn),可以讓一個(gè)車的價(jià)值為500,一個(gè)馬的價(jià)值為300,一個(gè)兵的價(jià)值為100等等。將的價(jià)值為無(wú)限大。一方的棋子總值就是棋盤上存活的該方棋子乘以棋子的價(jià)值的和。用一個(gè)式子表示: chessValue = sum(Number*baseValude)其中Number是某種棋子的數(shù)量,baseValue是該中棋子的價(jià)值,sum是對(duì)各種棋子的總價(jià)值求和。如果紅色棋子的價(jià)值總和大于黑色的棋子價(jià)值總和,通常意味著紅方的局勢(shì)優(yōu)于黑方。而紅黑雙方的chessValue之差越大,紅方的優(yōu)勢(shì)就越大。 (2) 棋子的靈活性與棋盤控制 棋子的靈活性是指棋子的活動(dòng)范圍,通常越大越好。一匹不能動(dòng)的馬很難在棋局中發(fā)揮重要的作用;同樣,一個(gè)蹲在角落里的車也是價(jià)值不高。評(píng)估棋子的靈活性較為簡(jiǎn)單,將一個(gè)棋子的所有合法的走法羅
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1