找空位赋权值法实现人机五子棋
权值表
黑棋(人) 白棋(机)
活 死 活 死
一连 10 5 10 5
二连 20 12 20 12
三连 50 15 50 15
四连 150 100 200 100
存储棋子的数组已经存在
1.创建一个存储权值的数组
2.全局遍历,从左上角往右下角遍历,如果某一位置的棋子为空,则遍历以此位置为中心的八个方向
以右边为例: 如果往右第一个位置为空(没下棋子)则该点赋0的权值,如果不为空,则继续往右 遍历,直到为空为止。判断棋子相连情况给该店赋权值。点的每个方向都要遍历到,取最后的权值之和 为该点的权值。将权值存储到权值数组中。
3.全局遍历一遍后,利用循环找出权值数组中最大的权值
4.创建一个线性链表,将权值最大的点的行和列存储到链表中,通过随机对象随机选择某一个权值最大的 点下白色棋子
5.清空权值数组
6.重复2 3 4 5步,直到分出输赢。
权值表
黑棋(人) 白棋(机)
活 死 活 死
一连 10 5 10 5
二连 20 12 20 12
三连 50 15 50 15
四连 150 100 200 100
存储棋子的数组已经存在
1.创建一个存储权值的数组
2.全局遍历,从左上角往右下角遍历,如果某一位置的棋子为空,则遍历以此位置为中心的八个方向
以右边为例: 如果往右第一个位置为空(没下棋子)则该点赋0的权值,如果不为空,则继续往右 遍历,直到为空为止。判断棋子相连情况给该店赋权值。点的每个方向都要遍历到,取最后的权值之和 为该点的权值。将权值存储到权值数组中。
3.全局遍历一遍后,利用循环找出权值数组中最大的权值
4.创建一个线性链表,将权值最大的点的行和列存储到链表中,通过随机对象随机选择某一个权值最大的 点下白色棋子
5.清空权值数组
6.重复2 3 4 5步,直到分出输赢。