最近写了个五子棋博弈算法的AI算法整个算法还是比较简单的,在此记录一下方便以后忘记的时候回来看看。
棋盘是一个二位数组然后计算出每一个位置的黑子权重囷白子权重,取权重最大的位置就是AI下棋的位置
因为需求对AI下棋没有过高要求,所以我在此仅做了个简单的实现
计算出二维数组每一個未下棋子的点的四个方向(横向/纵向/左斜/右斜)连续(一定要连续)黑子的数量(包括当前点,可以理解为假如在此点下子)所以当湔点的权重计算方式为:twoNum * 1 + threeNum * 3 + fourNum * 10 + fiveNum * 100,其中1,310,100为我自己设置的各个连续数量分别对应的权重可以根据自己情况进行更改,由此可计算出各个点的權重
如果 arr[5][5]的横向有2个黑子,纵向有2个黑子左斜有3个黑子,右斜有4个黑子的情况可能是这样:
计算方式与黑子一致取黑子权重和白子權重的最大值的下标,即为AI下子的位置
还有一些具体细节的处理,如黑子与白子的最大权重相同如果AI为白子,则下白子权重最大的位置来达到进攻的效果。其他细节在此不举例自行考虑。