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

正文內(nèi)容

基于android技術(shù)的中國(guó)象棋人機(jī)對(duì)弈游戲的設(shè)計(jì)與實(shí)現(xiàn)-在線瀏覽

2025-08-15 00:42本頁(yè)面
  

【正文】 試應(yīng)用程序,甚至導(dǎo)出簽名(或未簽名)的APKs以便發(fā)行應(yīng)用程序。依次單擊Menu項(xiàng)中的HelpSoftware Update項(xiàng) 可行性研究 本次畢業(yè)設(shè)計(jì)的題目是:基于Android技術(shù)的中國(guó)象棋人機(jī)對(duì)弈游戲的設(shè)計(jì)與實(shí)現(xiàn);主要是在基于Android平臺(tái)開(kāi)發(fā)一個(gè)手持設(shè)備應(yīng)用游戲,使得游戲具有兼容性和人機(jī)會(huì)話;并對(duì)整個(gè)系統(tǒng)分析,設(shè)計(jì)過(guò)程給出一個(gè)論證。對(duì)于行棋走棋不同的棋子有不同走棋規(guī)則,走棋都必須按照走棋規(guī)則要求,雙方輪換走棋,吃子,將軍。該應(yīng)用游戲的設(shè)計(jì)主要從以下幾方面做起:系統(tǒng)流程分析、系統(tǒng)的功能設(shè)計(jì)、系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。3游戲系統(tǒng)功能分析與設(shè)計(jì) 界面的需求分析 通過(guò)以往手持設(shè)備游戲的體驗(yàn),和用戶(hù)對(duì)中國(guó)象棋游戲需求邏輯,游戲的功能以及操作方法把整個(gè)設(shè)計(jì)劃分成單元;先是運(yùn)行游戲,進(jìn)入歡迎游戲界面,隨后單擊歡迎界面的圖片進(jìn)入菜單界面,在菜單中可以點(diǎn)擊“打開(kāi)聲音”/“關(guān)閉聲音”按鈕來(lái)控制聲音開(kāi)關(guān),單擊“幫助”菜單可以進(jìn)入幫助界面顯示游戲操作方法,而在菜單界面單擊“開(kāi)始游戲”菜單將進(jìn)入游戲主界面開(kāi)始游戲,在游戲界面玩家可以通過(guò)單擊自己的棋子按照行棋規(guī)則來(lái)走棋,同時(shí)可以單擊聲音按鈕打開(kāi)關(guān)閉聲音,當(dāng)游戲一方的“將”或者敵方的“帥”被吃掉是,會(huì)出現(xiàn)游戲失敗或游戲勝利的界面,在游戲過(guò)程中玩家可以隨時(shí)通過(guò)單擊“退出”按鈕返回到游戲主菜單,主菜單中還可以點(diǎn)擊“退出游戲”結(jié)束關(guān)閉游戲。玩家走完棋后電腦相對(duì)應(yīng)搜索出自己相對(duì)應(yīng)的走法。之后用搜索函數(shù)來(lái)搜索列表,并用局面評(píng)估函數(shù)逐一打分,最后就可以選擇出最佳著法并執(zhí)行。共有類(lèi)是Activity的實(shí)現(xiàn)類(lèi)ChessActivity,該類(lèi)是通過(guò)擴(kuò)展基類(lèi)Activity得到的,是整個(gè)游戲的控制器,也是整個(gè)游戲程序的入口;輔助界面相關(guān)類(lèi)由WeleView歡迎界面類(lèi)(該類(lèi)為游戲歡迎界面的實(shí)現(xiàn)類(lèi),主要負(fù)責(zé)歡迎界面的繪制工作),HelpView幫助界面類(lèi)(該類(lèi)為幫助界面的實(shí)現(xiàn)類(lèi)),MenuView菜單界面類(lèi)(該類(lèi)為菜單界面的實(shí)現(xiàn)類(lèi),負(fù)責(zé)繪制菜單界面以及對(duì)菜單界面的屏幕進(jìn)行監(jiān)聽(tīng))三個(gè)類(lèi)實(shí)現(xiàn);游戲界面相關(guān)類(lèi)由GameView游戲界面類(lèi)(該類(lèi)為游戲程序中最主要的類(lèi),負(fù)責(zé)繪制游戲過(guò)程中所有的信息,如棋盤(pán)、棋子、各個(gè)按鈕以及勝利或失敗菜單等),GuiZe象棋規(guī)則類(lèi)(該類(lèi)是象棋規(guī)則的實(shí)現(xiàn)類(lèi),其中包含所有棋子的走棋規(guī)則以及當(dāng)前棋牌所有可能走法),ChessMove走法類(lèi)(該類(lèi)為棋子的走法的封裝類(lèi),包括棋子的名稱(chēng),出發(fā)點(diǎn)以及目標(biāo)點(diǎn))SearchEngine 類(lèi)和NegamaxEngine類(lèi)對(duì)當(dāng)前棋局進(jìn)行搜索,搜索出最優(yōu)的走棋著法; Eveluation類(lèi)和 ConstData類(lèi)對(duì)棋局的評(píng)估,通過(guò)評(píng)估給出當(dāng)前棋局分?jǐn)?shù);幾個(gè)類(lèi)組成。在適當(dāng)?shù)臅r(shí)間初始化相應(yīng)的用戶(hù)界面,各個(gè)界面初始化方法被調(diào)用時(shí),并根據(jù)其他界面的需求直接將用戶(hù)界面切換到相應(yīng)的界面 輔助界面相關(guān)類(lèi)的實(shí)現(xiàn) 該游戲的第一個(gè)用戶(hù)界面即歡迎界面,通過(guò)WeleView類(lèi)來(lái)實(shí)現(xiàn)該界面加載了一個(gè)歡迎中國(guó)象棋圖片,并通過(guò)監(jiān)聽(tīng)觸擊屏幕圖片,向Activity發(fā)送Handler消息通知控制器切換用戶(hù)界面;然后切換到菜單界面MenuView。 幫助界面HelpView,該類(lèi)中加載圖片,圖片中顯示該游戲“怎么玩”同時(shí)監(jiān)聽(tīng)“返回”按鈕,向Activity發(fā)送Handler消息通知控制器切換用戶(hù)界面從而返回到菜單界面。提示一方先走;當(dāng)“黑帥”或者“紅將”被吃的話,彈出您贏了或者您輸了通過(guò)監(jiān)聽(tīng)結(jié)束游戲切換到菜單界面。監(jiān)聽(tīng)聲音按鈕來(lái)控制聲音的開(kāi)與關(guān)并以紅色顯示聲音開(kāi),消失即為關(guān)。給不同的棋子不同的位置給不同的棋子基本值,棋子靈活價(jià)值,棋子被威脅價(jià)值,棋子被保護(hù)價(jià)值;按照算法計(jì)算出走法的價(jià)值,最后對(duì)所有的價(jià)值進(jìn)行比較,價(jià)值高的也就是最終的要查找最優(yōu)走棋著法。車(chē)吃子的條件是與目標(biāo)棋子在一條直線上,且兩子之間不得存在任何其他的棋子。amp。 } if(fromY == toY){ / /走橫線 if(fromX toX){ / /向右走 for(i = fromX + 1。 i++){ / /循環(huán) if(qizi[fromY][i] != 0){ return false。 i fromX。 / /返回false } } } } else{ / /走的是豎線 if(fromY toY){ / /向右走 for(j = fromY + 1。 j++){ if(qizi[j][fromX] != 0) return false。 j fromY。 / /返回false } } }break。若目標(biāo)位置為空,即可走過(guò),若為對(duì)方的棋子,即可吃掉。amp。amp。 / /馬走的不是日字時(shí)}if(toXfromX==2){ / /向右走 i=fromX+1。}else if(fromXtoX==2){ / /向左走 i=fromX1。}else if(toYfromY==2){ / /向下走 i=fromX。}else if(fromYtoY==2){ / /向上走 i=fromX。}if(qizi[j][i] != 0) return false。炮:只可以走直線,且一步可以走任意距離,其起始點(diǎn)與目標(biāo)點(diǎn)之間不得存在其他棋子。紅黑炮規(guī)則走法的介紹:                圖  炮的走法if(fromY!=toY amp。 fromX!=toX){ / /炮走直線 return false。 i toX。 / /返回false } } } lse{ / /向走走 for(i = toX + 1。 i++){ if(qizi[fromY][i]!=0){ return false。 j toY。 / /返回false } } } else{ / /向上走 for(j = toY + 1。 j++){ if(qizi[j][fromX] != 0){ return false。 if(fromY == toY){ / /走的是橫線 if(fromX toX){ / /向右走 for(i=fromX+1。i++){ if(qizi[fromY][i]!=0){ count++。 / /返回false } } else{ / /向左走 for(i=toX+1。i++){ if(qizi[fromY][i] != 0){ count++。 / /返回false } } } else{ / /走的是豎線 if(fromYtoY){ / /向下走 for(j=fromY+1。j++){ if(qizi[j][fromX]!=0){ count++。 / /返回false } } else{//向上走 for(j=toY+1。j++){ if(qizi[j][fromX] != 0){ count++。 / /返回false } } }}break。當(dāng)兵卒位于己方陣營(yíng)時(shí),只可以向前走動(dòng)。 圖  卒的走法黑兵規(guī)則走法的介紹if(toY fromY){ / /不能回頭 return false。amp。 / /返回false}if(toY fromY +(toX fromX) 1){ / /只能走一步并且是直線 return false。//////////////////////////////////////////////////////紅卒規(guī)則走法的介紹if(toY fromY){ / /不能回頭 return false。amp。 / /返回false}if(toY fromY +(toX fromX) 1){ / /只能走一步并且是直線 return false。象、相:只可以在己方陣營(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)。 / /返回false}if((fromXtoX) != 2||(fromY toY) != 2){ / /象走“田”字 return false。 / /返回false}break。 / /返回false}if((fromXtoX) != 2||(fromY toY) != 2){ / /象走“田”字 return false。 / /返回false}break。一步只可以走動(dòng)一個(gè)方格的斜線距離。 圖  士的走法黑士規(guī)則走法的介紹:if(toY 2 ||toX 3 || toX 5){ / /出了九宮格 return false。 / /返回false}break。 / /返回false}if((fromYtoY) !=1|| (toXfromX)!=1){/ /走斜線 return false。將、帥:只可以在己方陣營(yíng)走動(dòng),且僅限于9個(gè)點(diǎn),即己方底三行中三列形成的9個(gè)交叉點(diǎn),也就是俗稱(chēng)的“九宮”,一步只可以走動(dòng)一個(gè)方格的直線距離作為本方的主將,鎮(zhèn)守大本營(yíng),雙方的主將是不能夠處于同一條直線而主將之間不存在其他的棋子進(jìn)行隔擋。 / /返回false}if(((fromY toY) +(toX from))1){ / /只能走一步 return false。/////////////////////////////////////////////////////////////////////////////////紅將規(guī)則走法的介紹:if(toY 7 || toX 3 || toX 5){ / /出了九宮格 return false。 / /返回false}break。規(guī)則類(lèi)的設(shè)計(jì)則采用了常規(guī)的辦法,因?yàn)槠遄拥姆N類(lèi)只有7種,且紅黑雙方處于棋盤(pán)的兩端,某些棋子走動(dòng)時(shí)的方向不一樣,設(shè)計(jì)時(shí)就要進(jìn)行分類(lèi)討論設(shè)計(jì),供存在14中不同的判別方法來(lái)對(duì)所以的棋子走法進(jìn)行判別是否可行,每一個(gè)判別方法都對(duì)應(yīng)于其獨(dú)有的判斷算法。坐標(biāo)(0,0)到坐標(biāo)(8,4)之間的坐標(biāo)代表楚河漢界的一方,坐標(biāo)(0,5)到坐標(biāo)(8,9)之間的坐標(biāo)代表楚河漢界的另一方,即紅黑雙方各自的領(lǐng)土。然后根據(jù)該對(duì)象記錄的原有位置坐標(biāo)和目標(biāo)位置坐標(biāo)進(jìn)行數(shù)據(jù)改變達(dá)到行棋目的。任何棋子走動(dòng),如果目標(biāo)位置上有對(duì)方的棋子,就可以把對(duì)方的棋子拿出棋盤(pán),即在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)?,刷幀線程更新界面改變顯示。這里的合法著法是通過(guò)象棋的行棋規(guī)則來(lái)確定;產(chǎn)生了著法后要將其存入著法隊(duì)列以供搜索之用,由于搜索會(huì)搜索多層(即考慮雙方你來(lái)我往好幾步,這樣才有利于對(duì)局面進(jìn)行評(píng)估以盡可能避免“目光短淺”),所以在把著法存入著法隊(duì)列的時(shí)候還要同時(shí)存儲(chǔ)該著法所屬的搜索層數(shù)。關(guān)于搜索層數(shù),設(shè)定為4,實(shí)際使用的是1到3(在界面中將其限定為1—3)。512M內(nèi)存的計(jì)算機(jī)上最多只能搜索3層,再多將導(dǎo)致搜索時(shí)間達(dá)到令人無(wú)法容忍的地步(這里還需要特別說(shuō)明的是,搜索的速度也和著法生成的效率以及局面評(píng)估的復(fù)雜度有關(guān),因?yàn)槊糠治鲆粋€(gè)結(jié)點(diǎn)都要執(zhí)行這兩種操作)。定義第二個(gè)數(shù)組下標(biāo)為100,應(yīng)當(dāng)可以保證十分的安全?! ?2) 在對(duì)弈過(guò)程中,任何一方都了解當(dāng)前的格局和過(guò)去的行棋歷史。即雙方都是很理智地決定自己的行動(dòng)。 圖 博弈樹(shù)示意圖 在這棵博弈樹(shù)中,根節(jié)點(diǎn)是初始局面,一個(gè)節(jié)點(diǎn)下的每個(gè)分支代表一個(gè)著法,分支相連的子節(jié)點(diǎn)是走了這個(gè)著法后會(huì)出現(xiàn)的局面。因此,當(dāng)某一方當(dāng)前有多個(gè)行動(dòng)方案可供選擇時(shí),他總是挑選對(duì)自己最為有利而對(duì)對(duì)方最為不利的那個(gè)行動(dòng)方案,使自己利益最大化。輪到紅方走棋時(shí),紅方總是選擇對(duì)自己最有利的著法,從而在生成的一系列子節(jié)點(diǎn)中尋找
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1