|
学习提示:如果没有C语言与Windows项目开发基础可以通过下方链接学习:
0基础C语言学习与训练
0基础C++学习与训练
Windows项目开发系列
作为一个五子棋的人工智能,它是如何辨别棋子的不同组合情况呢?
例如是否有(两边都没有阻拦)的(3子相连)或(4子相连)的情况,如果有,就需要防守。
而对于人类来说,通过观察就可以知道(棋盘)中所有棋子的组合情况,但是,对于(人工智能)
来说,它要如何判断呢?
所以,在接下来的时间里面,我们就开始为大家介绍棋子的分值定义与计算。
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去认识不同的棋子组合情况。
|