案例二十三 人機(jī)下棋問題.ppt_第1頁(yè)
案例二十三 人機(jī)下棋問題.ppt_第2頁(yè)
案例二十三 人機(jī)下棋問題.ppt_第3頁(yè)
案例二十三 人機(jī)下棋問題.ppt_第4頁(yè)
案例二十三 人機(jī)下棋問題.ppt_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第1頁(yè) 共28頁(yè),案例二十三 人機(jī)下棋問題,本案例知識(shí)要點(diǎn) 數(shù)組的使用 類的設(shè)計(jì)及使用 人工智能問題的量化思想,第2頁(yè) 共28頁(yè),一、案例需求,案例描述 設(shè)計(jì)一個(gè)簡(jiǎn)單的下棋游戲,游戲的規(guī)則是:在33的棋盤上,計(jì)算機(jī)為一方,人為一方,交替標(biāo)記叉(X)和圓圈(O)。在行、列、對(duì)角線的方向上,先連成一條直線的一方為勝者。計(jì)算機(jī)可以動(dòng)態(tài)地顯示棋盤,給出提示信息和勝負(fù)判斷,并允許用戶選擇是先手還是后手。 案例效果圖 人機(jī)下棋案例效果如圖所示。,第3頁(yè) 共28頁(yè),人機(jī)下棋案例效果圖,第4頁(yè) 共28頁(yè),功能說明 顯示棋盤,給出提示信息和勝負(fù)結(jié)果判斷標(biāo)準(zhǔn),允許用戶選擇是先手還是后手。 每一步都用圖形化方式順序

2、輸出。 直觀地表示勝負(fù)結(jié)果。,第5頁(yè) 共28頁(yè),二、案例分析,設(shè)計(jì)算機(jī)標(biāo)記“X”,人標(biāo)記“O”。計(jì)算機(jī)下時(shí),應(yīng)該考慮所有的空位置,并按照行、列和對(duì)角線計(jì)算每個(gè)空位的分值。在某行(列、對(duì)角線)上,按以下規(guī)則計(jì)分(其中“_”表示空格): 若已有“XX”,則加50分。 若已有“OO”,則加25分。 若已有“X_”,則加10分。 若已有“O_”,則加8分。 若已有“_ _”,則加4分。,第6頁(yè) 共28頁(yè),根據(jù)上述的計(jì)分規(guī)則,計(jì)算機(jī)每次下棋時(shí)算出每個(gè)空位置的分?jǐn)?shù),從中選擇最高分的位置畫X。如果某條行、列、對(duì)角線上畫滿了3個(gè)“X”,則計(jì)算機(jī)勝,否則人繼續(xù)下棋。 人每走一步即判斷行、列、對(duì)角線上是否畫滿了3

3、個(gè)“O”,如畫滿了3個(gè)“O”,則人勝,否則計(jì)算機(jī)繼續(xù)下棋。 如果棋盤布滿了棋也未分出勝負(fù),則和棋。 需要定義一個(gè)字符數(shù)組保存棋盤每次下完棋的狀態(tài)。其中,“X”表示計(jì)算機(jī)下的棋,“O”表示人下的棋,數(shù)字“1”“9”表示空位置。 還需要定義一個(gè)整型數(shù)組記錄計(jì)算機(jī)下棋時(shí)每個(gè)空位置的分值。即如上所述的50、25、10、8、4分。,第7頁(yè) 共28頁(yè),三、案例設(shè)計(jì),1類的設(shè)計(jì) 基于上述分析,本案例定義一個(gè)類CGame,用來處理相關(guān)的計(jì)算、打印等功能。主程序只是簡(jiǎn)單調(diào)用。,第8頁(yè) 共28頁(yè),CGame類的設(shè)計(jì)如圖所示。,第9頁(yè) 共28頁(yè),(1)數(shù)據(jù)成員 char status9; 記錄棋盤狀態(tài)。 int s

4、core9; 記錄空位置的分值。 int fail; fail為勝敗標(biāo)志,其中0表示和棋,1表示人贏,2 表示計(jì)算機(jī)贏。 counter; counter為步數(shù)。,第10頁(yè) 共28頁(yè),(2)函數(shù)成員 Game(); 構(gòu)造函數(shù),初始化相關(guān)變量。 Print(); 打印棋盤。 int Cal(int i,int j); 計(jì)算某行的得分。 bool Judge(int i,int j,int k); 判斷某條直線是否全為“O”。 Play(); 啟動(dòng)游戲運(yùn)行。,第11頁(yè) 共28頁(yè),2主程序設(shè)計(jì) 主程序主要是調(diào)用了CGame類的成員函數(shù)Play()來實(shí)現(xiàn)游戲的,CGame.Play()函數(shù)的流程如圖所

5、示。,第12頁(yè) 共28頁(yè),CGame.Play()函數(shù)的流程,第13頁(yè) 共28頁(yè),四、案例實(shí)現(xiàn),第14頁(yè) 共28頁(yè),第15頁(yè) 共28頁(yè),第16頁(yè) 共28頁(yè),第17頁(yè) 共28頁(yè),第18頁(yè) 共28頁(yè),第19頁(yè) 共28頁(yè),第20頁(yè) 共28頁(yè),第21頁(yè) 共28頁(yè),第22頁(yè) 共28頁(yè),第23頁(yè) 共28頁(yè),第24頁(yè) 共28頁(yè),第25頁(yè) 共28頁(yè),第26頁(yè) 共28頁(yè),第27頁(yè) 共28頁(yè),五、案例總結(jié)與提高,案例總結(jié) 該案例新穎的地方是巧妙地將智能判斷的思考過程抽象出來,加以量化,這樣計(jì)算機(jī)才能夠進(jìn)行處理。關(guān)于這種智能過程,讀者可以參考人工智能方面的書籍。,第28頁(yè) 共28頁(yè),案例提高 在全面理解的基礎(chǔ)上,讀者可以對(duì)本案例進(jìn)行一些改動(dòng)與提高。 改變棋盤的尺寸。改變后,計(jì)算機(jī)下棋時(shí)能夠選擇的空位置就更加多了??梢酝ㄟ^改進(jìn)算法來達(dá)到計(jì)算機(jī)選擇最優(yōu)位置的目的。 改變下棋的規(guī)則。當(dāng)棋盤變大時(shí),勝利的規(guī)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論