这周刚刚结束了五子棋的AI算法设计,与大家分享一下自己的AI算法。首先我的AI思路是先遍历棋盘是每个点四个方向上同色棋子相连的个数和空白的点,然后对其进行权值的判断,把权值最高点的左边返回给电脑落子。下面我具体讲下算法的程序实现。
首先要做的是遍历棋盘上的每个点极其周围棋子的状况。先说下四个方向的表示方法,我是用2个数组(x方向:
f_x[0,1,1.-1],y方向:f_y[1,1,0,1]),通过这2个数组的组合表示四个方向,组合方法为:i=i+f_x[t],j=j+f_y[t],i,j为所要遍历点的坐标,若t=1,则表示i=i+0;j=j+1,即可以表示y轴正方向上的情况,要表示y周负方向,只要将i=i+f_x[t],j=j+f_y[t]改为
i=i-f_x[t],j=j-f_y[t];通过这种发放就可以遍历每个点四个方向上的棋子情况了。
收集了每个点周围的情况后(收集每个点4个方向上4格的长度的棋子情况),保存在四个数组中:white_l[0,0,0,0](白棋4个方向上相连个数)white_k[0,0,0,0](白棋四个方向上空点个数),同理black_l,black_k,下面就只要对没种情况其进行权值分析就好了,当找到权值最大的情况就可以返回i,j值就行看