当前位置:首页 > 六子棋棋形所有情况总结
棋形所有情况
1代表字,0代表空位,abcdefghi代表位置,num1代表1的个数, X?代表棋盘中棋形个数 X1六连:111111
横向:for(num1=0,i=I,j=J;i<=I+6;i++) { if(c[i][j]=1) num1++;} if(num1=6) x1++;
纵向:for(num1=0,i=I,j=J;j<=J+6;j++) { if(c[i][j]=1) num1++;} if(num1=6) x1++;
斜向1:for(num1=0,i=I,j=J;i<=I+6,j<=J+6;i++,j++) { if(c[i][j]=1) num1++;} if(num1=6) x1++;
斜向2:for(num1=0,i=I,j=J;i<=I+6,j>=J-6;i++,j--) { if(c[i][j]=1) num1++;} if(num1=6) x1++;
x2七连:1111111
横向:for(num1=0,i=I,j=J;i<=I+7;i++) { if(c[i][j]=1) num1++;} if(num1=7) x2++;
纵向:for(num1=0,i=I,j=J;j<=J+7;j++) { if(c[i][j]=1) num1++;} if(num1=7)
x2++;
斜向1:for(num1=0,i=I,j=J;i<=I+7,j<=J+7;i++,j++) { if(c[i][j]=1) num1++;} if(num1=7) x2++;
斜向2:for(num1=0,i=I,j=J;i<=I+7,j>=J-7;i++,j--) { if(c[i][j]=1); num1++;} if(num1=7) x2++;
x3活五:(在同一直线上的5颗同色棋子,符合“对方必须用两
手棋才能挡住”的条件。挡住是指不让另一方形成六连或长连。) 共3种情况: 0111110
横向:if(c[i][j]=0&& c[i][j+1]=1&& c[i][j+2]=1&& c[i][j+3]=1&& c[i][j+4]=1&& c[i][j+5]=1&& c[i][j+6]=0) x3++; 纵向:if(c[i][j]=0&& c[i+1][j]=1&& c[i+2][j]=1&& c[i+3][j]=1&& c[i+4][j]=1&& c[i+5][j]=1&& c[i+6][j]=0)
x3++;
斜向1:if(c[i][j]=0&& c[i+1][j+1]=1&& c[i+2][j+2]=1&& c[i+3][j+3]=1&& c[i+4][j+4]=1&& c[i+5][j+5]=1&& c[i+6][j+6]=0)
x3++;
斜向2:if(c[i][j]=0&& c[i+1][j-1]=1&& c[i+2][j-2]=1&& c[i+3][j-3]=1&& c[i+4][j-4]=1&& c[i+5][j-5]=1&& c[i+6][j-6]=0)
x3++;
00111101
横向:if(c[i][j]=0&& c[i][j+1]=0&& c[i][j+2]=1&& c[i][j+3]=1&& c[i][j+4]=1&& c[i][j+5]=1&& c[i][j+6]=0&& c[i][j+7]=1) x3++; 纵向:if(c[i][j]=0&& c[i+1][j]=0&& c[i+2][j]=1&& c[i+3][j]=1&& c[i+4][j]=1&& c[i+5][j]=1&& c[i+6][j]=0&& c[i+7][j]=1)
x3++;
斜向1:if(c[i][j]=0&& c[i+1][j+1]=0&& c[i+2][j+2]=1&& c[i+3][j+3]=1&& c[i+4][j+4]=1&& c[i+5][j+5]=1&& c[i+6][j+6]=0&&c[i+7][j+7]=1)
x3++;
斜向2:if(c[i][j]=0&& c[i+1][j-1]=0&& c[i+2][j-2]=1&& c[i+3][j-3]=1&& c[i+4][j-4]=1&& c[i+5][j-5]=1&& c[i+6][j-6]=0&&c[i+7][j-7]=1)
x3++;
10111100
横向:if(c[i][j]=1&& c[i][j+1]=0&& c[i][j+2]=1&& c[i][j+3]=1&& c[i][j+4]=1&& c[i][j+5]=1&& c[i][j+6]=0&& c[i][j+7]=0) x3++; 纵向:if(c[i][j]=1&& c[i+1][j]=0&& c[i+2][j]=1&& c[i+3][j]=1&& c[i+4][j]=1&& c[i+5][j]=1&& c[i+6][j]=0&& c[i+7][j]=0)
x3++;
斜向1:if(c[i][j]=1&& c[i+1][j+1]=0&& c[i+2][j+2]=1&& c[i+3][j+3]=1&& c[i+4][j+4]=1&& c[i+5][j+5]=1&& c[i+6][j+6]=0&&c[i+7][j+7]=0)
x3++;
斜向2:if(c[i][j]=1&& c[i+1][j-1]=0&& c[i+2][j-2]=1&& c[i+3][j-3]=1&& c[i+4][j-4]=1&& c[i+5][j-5]=1&& c[i+6][j-6]=0&&c[i+7][j-7]=0)
x3++;
X4眠五:(在同一直线上的5颗同色棋子,符合“对方用一手棋
就能挡住”的条件。) 共4种情况:
-1111110
横向:if(c[i][j]=-1&& c[i][j+1]=1&& c[i][j+2]=1&& c[i][j+3]=1&& c[i][j+4]=1&& c[i][j+5]=1&& c[i][j+6]=0) x4++;
纵向:if(c[i][j]=-1&& c[i+1][j]=1&& c[i+2][j]=1&& c[i+3][j]=1&& c[i+4][j]=1&& c[i+5][j]=1&& c[i+6][j]=0)
x4++;
斜向1:if(c[i][j]=-1&& c[i+1][j+1]=1&& c[i+2][j+2]=1&& c[i+3][j+3]=1&& c[i+4][j+4]=1&& c[i+5][j+5]=1&& c[i+6][j+6]=0)
x4++;
斜向2:if(c[i][j]=-1&& c[i+1][j-1]=1&& c[i+2][j-2]=1&& c[i+3][j-3]=1&& c[i+4][j-4]=1&& c[i+5][j-5]=1&& c[i+6][j-6]=0)
x4++;
011111-1
横向:if(c[i][j]= 0&& c[i][j+1]=1&& c[i][j+2]=1&& c[i][j+3]=1&& c[i][j+4]=1&& c[i][j+5]=1&& c[i][j+6]=-1) x4++; 纵向:if(c[i][j]= 0&& c[i+1][j]=1&& c[i+2][j]=1&& c[i+3][j]=1&& c[i+4][j]=1&& c[i+5][j]=1&& c[i+6][j]=-1)
x4++;
斜向1:if(c[i][j]=0&& c[i+1][j+1]=1&& c[i+2][j+2]=1&& c[i+3][j+3]=1&& c[i+4][j+4]=1&& c[i+5][j+5]=1&& c[i+6][j+6]=-)
x4++;
斜向2:if(c[i][j]=0&& c[i+1][j-1]=1&& c[i+2][j-2]=1&& c[i+3][j-3]=1&& c[i+4][j-4]=1&& c[i+5][j-5]=1&& c[i+6][j-6]=-1)
x4++;
a、b中至少有一个为-1且c~h中有5个1、1个0
横向:
if(c[I][J]=-1&&c[I][J+1]=-1|| c[I][J]=-1&&c[I][J+1]=0|| c[I][J]=0&&c[I][J+1]=-1) {
for(i=I,fact2=0,fact3=0,j=J+2;j<=J+7;j++) {if(c[i][j]=1) fact2++;
else if(c[i][j]=0) fact3++; } }
if(fact2=5&&fact3=1) x4++;
g、h中至少有一个为-1且a~f中有5个1、1个0
横向:
if(c[I][J+6]=-1&&c[I][J+7]=-1|| c[I][J+6]=0&&c[I][J+7]=-1) {
for(i=I,fact2=0,fact3=0,j=J;j<=J+5;j++) {if(c[i][j]=1) fact2++;
else if(c[i][j]=0) fact3++; }
c[I][J+6]=-1&&c[I][J+7]=0||
共分享92篇相关文档