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

正文內(nèi)容

基于android的中國象棋的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文-wenkub

2022-09-07 15:38:51 本頁面
 

【正文】 游戲。本文實(shí)現(xiàn)了中國象棋在計(jì)算機(jī)中表示問題,基于 Android 平臺(tái)應(yīng)用,人機(jī)對戰(zhàn)模擬現(xiàn)實(shí)中的人人對戰(zhàn) ;討論走棋規(guī)則和著法的實(shí)現(xiàn)等一系列問題,最終電腦能夠通過產(chǎn)生著法,搜索,估計(jì)來產(chǎn)生一步最優(yōu)的走棋,實(shí)現(xiàn)人機(jī)會(huì)話的目的。 由于 簡單的行棋規(guī)則 , 趣味性強(qiáng), 便捷的載體,使得象棋成為雅俗共賞的競技項(xiàng)目。它不僅能豐富文化生活,陶冶情操,在棋戰(zhàn)中,人們可以從攻與防、虛與實(shí)、整體與局部等復(fù)雜關(guān)系的變化中悟出某種哲理;更有助于開發(fā) 智力 ,啟迪思維,鍛煉辨證分析能力和培養(yǎng)頑強(qiáng)的意志。其中包括電子郵件客戶端, SMS程序,地圖,瀏覽器,聯(lián)系人及其他。 Android 應(yīng)用框架包括: ? 豐富及可擴(kuò)展性的視圖,可以用來建立一個(gè)美觀的用戶界面,包括列表,網(wǎng)格,文本框,按鈕,甚至是嵌入到 Web 瀏覽器的應(yīng)用程序。 ? 活動(dòng)管理器可以管理應(yīng) 用程序的生命周期,并提供一個(gè)通用的后臺(tái)堆棧導(dǎo)航。它提供了核心系統(tǒng)服務(wù),如安全,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。因此,對游戲開發(fā)過程中的人工智能技術(shù)的研究自然也就成了業(yè)界的一個(gè)熱門研究方向。自從 Java 推出以來, JDK已經(jīng)成為使用最廣泛的 java SDK。 安裝 Eclipse 的開發(fā)環(huán)境需要 JDK 的支持,如果沒有 JDK,則啟動(dòng) Eclipse 時(shí)會(huì)報(bào)告錯(cuò)誤。出現(xiàn)類似下面的畫面表示安裝成功了: 圖 JDK 測試 Eclipse 如果你還 沒 有 Eclipse 的話 ,從官網(wǎng)上下載 Eclipse IDE for Java Developers解壓之后即可使用。通過 SDK 提供的一些工具將其打包成安卓平臺(tái)使用的 apk文件,然后在使用 SDK中的模擬器( Emulator)來模擬和測試軟件在安卓平臺(tái)運(yùn)行情況和效果。 安裝 Android Development Tool plugin,打開 Eclipse IDE。本游戲設(shè)計(jì)無疑是模擬現(xiàn)實(shí)人人博弈,虛擬的替換了真實(shí)的棋子棋盤,由人來和電腦直接對弈;在一個(gè)人閑暇 時(shí)也可以體驗(yàn)博弈的樂趣。 游戲走棋需求設(shè)計(jì)分析 進(jìn)入游戲界面,游戲提示當(dāng)前走棋為“帥”或者“將”,雙方 各走一著,直至分出勝負(fù)或者直接點(diǎn)擊退出結(jié)束游戲,輪到走棋的一方,將某個(gè)棋 子從一個(gè)交叉點(diǎn)走到另一個(gè)交叉點(diǎn),或者吃掉對方的棋子而占領(lǐng)其交叉點(diǎn),都算走一著,雙方各走一著即一個(gè)回合,吃子時(shí),任何棋子走動(dòng),如果目標(biāo)位置上有對方的棋子,就可以把對方的棋子拿出棋盤,即屏幕上消失在顯示自己的棋子。 7 4 游戲 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 類框架的設(shè)計(jì) 通過對中國象棋游戲的了解,對基于 Android 技術(shù)的中國象棋人機(jī)對弈游戲的需求分析,游戲?qū)崿F(xiàn)的理解并結(jié)合自己對知識點(diǎn)所掌握的程度;對中國象棋游戲總體設(shè)計(jì),主要由三個(gè)類組成:共有類,輔助界面相關(guān)類,游戲界面相關(guān)類。 圖 游戲歡迎界面 MenuView類中通過監(jiān)聽“開始游戲”切換到游戲界面;通過監(jiān)聽“打開聲音” /“關(guān)閉聲音”進(jìn)行聲音的打開與關(guān)閉,與此同時(shí)“打開聲音”、“關(guān)閉聲音”按鈕進(jìn)行切換;通過監(jiān)聽“幫助”來切換都幫助界面;通過監(jiān)聽“退出游戲”結(jié)束游戲用行退出游戲?;蛘唿c(diǎn)擊退出按鈕也可結(jié)束游戲切換至菜單界面。 圖 馬的走法 紅黑馬規(guī)則走法的介紹: case 10://紅馬 case 3://黑馬 if(!(((toXfromX)==1 amp。 (toYfromY)==1))){ return false。//移動(dòng) j=fromY。//移動(dòng) j=fromY1。炮吃子的條件是與目標(biāo)棋子在一條直線上,且兩子之間必須有且只有一個(gè)棋子作為“跳板 ”,讓炮進(jìn)行跳躍式攻擊。//返回 false } if(qizi[toY][toX] == 0){//不吃子時(shí) if(fromY == toY){//橫線 if(fromX toX){//想右走 for(i = fromX + 1。 i fromX。 j++){ if(qizi[j][fromX] != 0){ return false。//返回 false } } } } } else{//吃子時(shí) int count=0。 } } if(count != 1){ return false。 } } if(count!=1){ return false。//返回 false } } if(count!=1){ return false。//返回 false } } if(count!=1){ return false。 } if((fromXtoX) != 2 || (fromYtoY) != 2){//相走“田”字 return false。//返回 false } if((fromXtoX) != 2 || (fromYtoY) != 2){//相走“田”字 16 return false。 圖 將帥的走法 case 1://黑帥 if(toY2||toX3||toX5){//出了九宮格 return false。 } if(((fromYtoY)+(toXfromX))1){//只能走一步 return false。 棋盤上各種棋子以及棋盤的初始布局的設(shè)計(jì)采用 10*9 的數(shù)組來進(jìn)行標(biāo)識,如下圖 所示 : 圖 棋盤初始布局 各個(gè)數(shù)字的對應(yīng)關(guān)系如下: 0無棋子; 1黑方的帥; 2黑方的車 ; 3黑方的馬; 4黑方的炮; 5黑方的士; 6黑方的象; 7黑方的卒; 8紅方的將; 9紅方的車; 10紅方的馬; 11紅方的炮; 12紅方的士; 13紅方的相; 14紅方的兵。 玩家走棋是通過對屏幕進(jìn)行監(jiān)聽,從而記錄棋子類型,原有位置坐標(biāo)和目標(biāo)位置坐標(biāo),通過調(diào)用規(guī)則類 GuiZe 中的 CanMove 判斷該棋子走法是否可行符合棋子走棋規(guī)則,可行就改變原有位置和目標(biāo)位置數(shù)據(jù),達(dá)到行棋的目的 輪到走棋的一方,游戲界面當(dāng)前位置顯示走棋一方的“黑帥”或者“紅將”,將某個(gè)棋子從一個(gè)交叉點(diǎn)走到另一個(gè)交叉點(diǎn),或者吃掉對方的棋子而占領(lǐng)其交叉點(diǎn),這樣一方走棋結(jié)束當(dāng)前位置顯示改變輪到另一方走棋。//用來裝所有可能的走法 for (int x = 0。 y++){//循環(huán)所有的棋牌位置 int chessman = qizi[x][y]。 public ChessMove searchAGoodMove(int[][] qizi){//查詢一個(gè)好的走法 ListChessMove ret = allPossibleMoves(qizi)。 } 系統(tǒng) 流程圖 游戲流程圖 如圖 所示 圖 系統(tǒng)流程圖 菜單開始游戲紅方走棋黑方是否被將死紅方勝利 黑方走棋結(jié)束游戲紅方是否被將死黑方勝利 20 5 運(yùn)行測試 測試 用例表 測試編號 測試目標(biāo) 期望結(jié)果 實(shí)際結(jié)果 001 測試象棋“馬”是否“絆馬腿” 游戲過程中,“馬”在絆馬腿情況下不能移動(dòng)。我們小組在老師的協(xié)助下最終成功的完成實(shí)訓(xùn)項(xiàng)目。 通過為期三周的 Android 實(shí)訓(xùn),這次的實(shí)訓(xùn)讓我學(xué)到了很多知識。在這次項(xiàng)目中讓我體會(huì)到了團(tuán)隊(duì)合作的重要性,團(tuán)隊(duì)合作注重溝通和信任,不能不屑于做一些小事,永遠(yuǎn)要保持親和誠信,把專業(yè)理論運(yùn)用到具體實(shí)踐中,不僅加深我對理論的掌握和運(yùn)用,這是實(shí)訓(xùn)中最大的收獲。學(xué)習(xí) Android 不僅是對前沿開發(fā)技術(shù)的了解,也是對編程知識的一次提升。同時(shí)還讓我知道做任何事都需端正態(tài)度,量力而行,發(fā)揮自己的長處,這樣不僅有利于促進(jìn)團(tuán)隊(duì)項(xiàng)目開發(fā)的進(jìn)度,還能讓我們知道我們自己的位置。//引入相關(guān)的包 import 。 import 。//開始和菜單時(shí)的音樂 MediaPlayer gamemusic。//初始化并切換到幫助界面 } } }。 startSound = (this, )。//設(shè)置游戲聲音循環(huán)播放 ()。 //切換到游戲界面 } public void initMenuView(){//初始化菜單界面 if(startSound != null){//停止 ()。//切換 View } public void initHelpView(){//初始化幫助界面 (new HelpView(this,this))。//起始的坐標(biāo) int fromY。//值 ,估值時(shí)會(huì)用到 public ChessMove(int ChessID, int fromX,int fromY,int toX,int toY,int score){//構(gòu)造器 = ChessID。//棋子的目標(biāo)點(diǎn) x坐標(biāo) = toY。 28 //記錄最佳走棋 public static ChessMove bestMove = new ChessMove()。 //當(dāng)前搜索深度 public static int m_maxDepth。 m_curPosition[][] = 。 for(i = 0。 ++j) { if(position[i][j] == 1) blackLive = true。 j 6。 else return 19990depth。//兩將都在, 返回 0 } //取消移動(dòng) public static void unMakeMove(ChessMove move, int chessID) { m_curPosition[][] = m_curPosition[][]。 return bestMove。 i 10。 31 negaMax(m_maxDepth)。 } //負(fù)極大值搜索引擎 public static int negaMax(int depth) { int current = 20200。 i = isGameOver(m_curPosition, depth)。 else side = false。 i count 。 //若當(dāng)前走法更優(yōu),則記錄下來 if(score current) { current = score。 public class ConstData { public final static int NOCHESS = 0。 //黑馬 public final static int B_CANON = 4。 //黑兵 33 public final static int B_BEGIN = 1。 //紅車 public final static int R_HORSE = 10。 //紅相 public final static int R_PAWN = 14。 public final static int BASEVALUE_BISH
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1