C/C++五子棋AI如何认识棋子组合

  

学习提示:如果没有C语言与Windows项目开发基础可以通过下方链接学习:

0基础C语言学习与训练

0基础C++学习与训练

Windows项目开发系列

 

作为一个五子棋的人工智能,它是如何辨别棋子的不同组合情况呢?

例如是否有(两边都没有阻拦)的(3子相连)或(4子相连)的情况,如果有,就需要防守。

 

而对于人类来说,通过观察就可以知道(棋盘)中所有棋子的组合情况,但是,对于(人工智能)

来说,它要如何判断呢?

所以,在接下来的时间里面,我们就开始为大家介绍棋子的分值定义与计算

 

1、连续棋子的分值定义与计算

例子:

16
8
4
2
1

 

分析 :

(1)在上面的例子中,我们把5颗棋子的分值,从右往左,分别定义了5个对应的数值,分别是1、2、4、8、16。

(2)最右方的棋子分值是1,当它的左方有同色棋子时,就用1+2,结果为3,这样,AI通过分值就可以知道

   有2颗同色棋子相连。

  如果有3颗同色棋子相连,就是1+2+4,结果为7,这样,AI通过分值就可以知道有3颗同色棋子相连,

  如些类推。

  另外,这些分值的定义不是固定的,你完全可以根据你自己的习惯去定义,也是可以的。只要分值的结果可以

  区分不同的棋子组合就可以了。

   

 2、间断棋子的分值定义与计算

   间断棋子的意思是不连续的棋子,但是,它们同样会构成威胁,所以,AI也要认识这类情况的棋子组合。

 例子1:

   

  分析:

  我们同样使用上面学习过的分值定义,所以,最右方的(白子C)的分值是1,(白子B)的分值是2,

  (白子A)的分值是8,所以,该棋子的组合分值是1+2+8,等于11,这样,AI就可以根据分值知道它是有

  3个棋子的组合情况,需要防守。

 

  例子2:

  

  分析:

  我们同样使用上面学习过的分值定义,所以,最右方的(白子C)的分值是1,(白子B)的分值是4,

  (白子A)的分值是8,所以,该棋子的组合分值是1+4+8,等于13,这样,AI就可以根据分值知道它是有

  3个棋子的组合情况,需要防守。

 

  例子3:

    

  分析:

  我们同样使用上面学习过的分值定义,所以,最右方的(白子D)的分值是1,(白子C)的分值是2,

  (白子B)的分值是4,(白子A)的分值是16,所以,该棋子的组合分值是1+2+4+16,等于23,

  这样,AI就可以根据分值知道它是有4颗棋子的组合情况,需要防守。

 

   例子4:

    

    在例子4中,三种棋子组合的分值计算就留给大家当作练习自行计算了,这样,大家就可以了解到如何通过

   分值,让AI去认识不同的棋子组合情况。