AI 五子棋 人工智能算法学习

"人工智能第一次学习"

Posted by neo on October 27, 2018

人机交互 之 AI 五子棋

1. AI策略逻辑

1.1 实现原理

设计AI时,最重要的就是对整个局势的分析和对下一步的执行方向进行前进,利用都 Analysis()函数假设自己再下一步器,对局势进行分析,然后利用局势进行打分,具体打分规 则下述,然后在从打好分的点上进行选择,取最大的点进行返回执行。如果要进行多层分析,则需要对打分的点进行优化,算出需要进行计算的点,提高效率

1.2 实现流程
  1. 计算局势计算范围

每当玩家落子后AI需要遍历所有空位为其打分,其实有很多空位是可以直接排除掉 的,每次都要计算一些无用的空位,所以在时间上就造成了浪费。玩过五子棋的人都知道,除第一手棋外,我们的棋子一般下到其他棋子的附近,也就是说那些远离棋子的空 位是不需要考虑的,只有那些在非空位附近的位置才是需要考虑的.利 用 getAllCalcutePoints(); 函数进行计算范围确定,返回一个list。

  1. 对计算范围中的点评估局势

遍历计算范围中的点,假设这个点已经被AI落子,然后从横,纵,正斜,反斜四个方 向进行分析,对所有的四个方向,都有一个局势评估函数,利用函数计算出有多少个己 方棋子落在一切,用count表示,连在一起的这些棋子周围的状况怎么样 leftStatus,rightStatus,leftStatus1,rightStatus1四个状态表示。

.3. 利用计算出来的局势进行打分

​ 利用打分表,比如成五,活四,死三等等对算出来的状态进行打分,打分函数又分为 两个,分别为AI和玩家打分 AIScoreOfPostions() , playerScoreOfPostions(); ,然 后对不同的情况设置不同的分数,如果想设置AI为攻势,则提高AI的打分表,同理也可以为防守型。

4.算出最高分的点的集合

对最高分点的集合进行分析,拿出最高分点加入集合

5.随机返回 对最高分点集合进行随机返回,保证程序的随机性。 6.多步策略分析 多步策略是在一步的基础上,再分析一步,再次对局势进行评估分析出两步都好的程 序,然后对其打分,取出最高分,再第一步算出maxPoint的集合上往下移分析取出最好 的逻辑,

2. 线下棋盘设计

2.1 实现原理

​ 利用 Java Swing 对棋盘进行自定义,编写一个class GUI继承Java的JPanel,对其进行方法的 重写,调用一些父类写好的函数,自定义一些函数,实现棋盘,然后利用添加鼠标点击事件对下棋 进行处理,然后repaint(),使得能够进行更新。

2.2 主要函数

1)public void paint(Graphics g1)

重写该方法,绘制棋盘、棋子

2)public void drawBoard(Graphics2D g)

绘制棋盘,设置颜色,画线,画点,

3)public void drawList(Graphics2D g) 绘制棋子

4)自定义一个MyOptionPane显示对局信息

5)落子函数和判断输赢函数

3. 天梯对战

​ 同线下的主要不同为Json和String的格式问题,利用 changeToJson() 转化为网页上的 request

4.结果展示