国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python版本五子棋的實現代碼

2020-02-16 00:04:32
字體:
來源:轉載
供稿:網友

正文之前

前陣子做了個《人工智能》 的課程作業,然后寫了個人工智障。。。大概就是個可以跟你下五子棋的傻兒子。。。下面是代碼和效果

正文

1、 摘要

機器博弈是人工智能領域的重要分支,它的研究對象多以復雜的棋牌類智力游戲為主,已經得到解決的棋類游戲,幾乎全部都應歸功于機器博弈近半個世紀的發展。計算機解決問題的優勢在于能把不易解析的問題,借助于現代計算機的運算速度優勢枚舉出所有的合理情形而得解;然而,博弈問題的復雜程度決定了它不能過度依賴機器的計算能力。許多待解決的或已經解決的棋類,其狀態空間復雜度或博弈樹復雜度量級都太過龐大,所以我們需要添加約束,并且采用合理的算法進行優化。

五子棋問題是人工智能中的一個經典問題。當今世界,AlphaGo已經執圍棋之牛耳,五子棋領域卻鮮少有人問津。本文根據課堂所學知識結合文獻、博客,基于兩種開發語言實現了一個智能對戰的AI五子棋游戲平臺。

本文所做工作如下:

(1) 五子棋界面實現;

(2) 智能判定棋盤走勢;

(3) 改進了棋盤掃描方式;

(4) 改良了系統評分表評估方式;

(5) 實現了基于點評分表估值找出最佳落子方式。

2、 問題描述、知識表達

2.1 問題描述

五子棋AI問題的最大問題是如何實現智能對弈,即當人落子之后,算法如何解讀當前的棋盤并且對其進行分析解讀,得到電腦方的最佳落子點。其次還有一個問題是如何判斷勝利,這可以作為前面棋盤局勢判定的一個子問題,也可以看做是一個單獨的問題,不過這個問題總體來說較為簡單,所以不做詳細說明。

2.2 知識表達

五子棋的整體知識構建包含以下部分:

(1) 棋盤局面表示法

(2) 棋局勝利判定

(3) 棋型知識庫

(4) 智能博弈流程

對于問題(1),采用數組表示法。棋盤中的各交叉點有三種狀態,不妨令 0表示空(未放置棋子) ,-1 表示有黑子 ,1 表示有白子,數組表示法的基本思想是:以交叉點對應的數組索引值來表達物理位置 ,以交叉點對應的元素值表達狀態(空、 黑子、 白子)。令 V = {0 ,1 ,-1} ,棋盤 的第 i 個交叉點的狀態 Si ∈V ,任何棋局都可以表示成一個 n ×n 的二元組。

對于問題(2), 采用數組表示法時,想知道任意兩個元素 Si 和Sj 是否共線,要通過 i 和 j 之間的數值規律來判斷。從這方面看,數組表示法是一種原始、低效的表示方法,但是對于評分表算法來說其性能損失是可以接受的。要判斷是否有一方已經勝利,只需要對整個棋盤判定當前落子點的縱、橫、正斜、反斜四個方向的最長延伸出四個位置看是否能連成一條同色直線即可。具體的操作可以視為:從落子點出發,向兩個方向延伸,如果遇到同色,那么計數器加一,遇到非同色(空白或者異色)則停止在該方向的延伸,一個計數器記下該方向上的兩頭的連續同色棋子數。等到四個方向都探索完畢,如果四個計數器中有一個計數器達到了5,那么即可判斷出已經有五子連珠了,此局結束。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三门峡市| 贵定县| 海林市| 江川县| 天镇县| 开江县| 贺州市| 万宁市| 阳新县| 武夷山市| 鄂托克旗| 玉山县| 江北区| 大关县| 陆丰市| 黔东| 灵川县| 昌黎县| 大新县| 鹤山市| 宝坻区| 鄂尔多斯市| 阿荣旗| 黑龙江省| 杨浦区| 磐石市| 东宁县| 万全县| 井研县| 迭部县| 新田县| 尤溪县| 吉隆县| 巍山| 包头市| 莱州市| 淅川县| 海城市| 大城县| 尤溪县| 麻江县|