五子棋AI算法

最近写了个五子棋的AI算法,整个算法还是比较简单的,在此记录一下,方便以后忘记的时候回来看看。

棋盘是一个二位数组,然后计算出每一个位置的黑子权重和白子权重,取权重最大的位置就是AI下棋的位置。

因为需求对AI下棋没有过高要求,所以我在此仅做了个简单的实现。

黑子权重:

计算出二维数组每一个未下棋子的点的四个方向(横向/纵向/左斜/右斜)连续(一定要连续)黑子的数量(包括当前点,可以理解为假如在此点下子),所以当前点的权重计算方式为:twoNum * 1 + threeNum * 3 + fourNum * 10 + fiveNum * 100,其中1,3,10,100为我自己设置的各个连续数量分别对应的权重,可以根据自己情况进行更改,由此可计算出各个点的权重。

举例:

如果 arr[5][5]的横向有2个黑子,纵向有2个黑子,左斜有3个黑子,右斜有4个黑子的情况可能是这样:

arr[5][6],arr[4][5],arr[4][4],arr[6][6],arr[7][7],arr[6][4],arr[7][3],arr[8][2]均为黑子,自行脑补。。。。

则arr[5][5]的黑子权重为:2 * 1 + 1 * 3 + 1 * 10 + 0 * 100;

白子权重:

计算方式与黑子一致,取黑子权重和白子权重的最大值的下标,即为AI下子的位置。

还有一些具体细节的处理,如黑子与白子的最大权重相同,如果AI为白子,则下白子权重最大的位置,来达到进攻的效果。其他细节在此不举例,自行考虑。

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值