五子棋的算法相信大部分人都玩過至少应该听说过。()
简述一下规则:当在棋盘的横行或竖行或斜行(左斜与右斜)有五个及以上连续的棋子的时候则为赢。
分析┅下五子棋的算法的算法当下一个棋子的时候(对应相应的棋盘应该有一个坐标),应该判断下的棋子的横行横行或竖行或斜行(左斜与右斜)是否满足连续棋子的个数大于等于5个,每次下一个棋子的时候都应该有所判断每次都应该对4个大的方向(横行,竖行左斜,右斜)进行遍历算法
图中黑棋已经有3颗连续的,加上右边一颗(中间有一个还没下为了陈诉方便,我把它命名为s)显然如果现在歸黑棋下的话,s为最佳位置人很好判断,只是对应计算机的话我们应该怎么使用算法让计算机明白放在s位置能够赢。
放入S位置后应該设置一个记数标志count判断某一个方向的的棋子数是否大于等5,即count>=5是否成立。图中的四个大的方向每次遍历每个方向前,应该将count置1;
而且对應米一个具体的方向比如横行,严谨的来说遍历的时候还是应该遍历两个方向的一个是s位置的左边,遍历一遍记录下连续棋的个数,然后回到S点再进行右边的遍历,左右的count值相加判断是否大于等于5;这样说来,细一点的话应该为8个方向两个相对。
黑棋的坐标位置的值我们默认为1
白棋的坐标位置的值默认为2;
还没有下棋子的位置我们默认为0;
// 三维数组记录横向纵向,左斜右斜的移动 //j为0,1分别为棋子的两边方向,比如对于横向的时候j=0,表示下棋位子的左边,j=1的时候表示右边 while语句中为一直向某一个方向遍历 有相同颜色的棋子的时候Count++ 否则置flag为false,结束该该方向的遍历 //这里加上棋盘大小的判断这里我设置的棋盘大小为20 具体可根据实际情况设置 防止越界