六子棋棋形所有情况总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
棋形所有情况
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++;