2021.10.30伪井字棋

实现对纸上已经写完的棋盘进行判断

如果后续有发现错误会进行更改

#include<stdio.h>
int main(void){
   printf("请输入你的棋盘,中间用空格隔开,三个换行(用1替代X。用0替代O,用其他数字来替代没有下的格子)\n");
   //定义变量
   const int size=3;
   int board[size][size];
   int i,j;       //记录位置
   int input;     //记录棋盘
   int L_numofO=0,L_numofX=0; //line
   int R_numofO=0,R_numofX=0; //row
   int B_numofO=0,B_numofX=0; //bias
   int result=-1;  //-1输出平局,1输出Xwin,0输出Owin
 
   //输入棋盘
   for (i=0;i<size;i++){
      for(j=0;j<size;j++){
         scanf("%d",&input);
         board[i][j]=input;
      }
   }
   //输出棋盘
   printf("这是你的棋盘\n");
    for (i=0;i<size;i++){
      for(j=0;j<size;j++){
         if(board[i][j]==1){
            printf("X\t");
         }else if(board[i][j]==0){
            printf("O\t");
         }else{
            printf("&&\t");
         }
      }
      printf("\n\n\n");
   }
   
 
   int turn=1;   //循环总开关
   while(1){
   //判断行line和列row
      for(i=0;i<size;i++){
         //printf("\n检查row and line*\n");
            for(j=0;j<size;j++){    //check out every lines and rows
               if(board[i][j]==1){
                  L_numofX++;
               }else if(board[i][j]==0){
                  L_numofO++;
               }
               if(board[j][i]==1){
                  R_numofX++;
               }else if(board[j][i]==0){
                  R_numofO++;
               }
            }
               if(R_numofX==size||L_numofX==size){
                  turn=0;
                  result=1;
                  break;
               }else if(L_numofO==size||R_numofO==size){
                  turn=0;
                  result=0;
                  break;
               }
               if(L_numofX!=size&&L_numofO!=size){   //每一轮不满足都back to 0
               L_numofO=L_numofX=0;  
               } 
               if(R_numofO!=size&&R_numofX!=size){
               R_numofO=R_numofX=0;
               }
                           }
            if(turn==0){
         break;                  //break while
      }
 
    //check out bias
     for(i=0;i<size;i++){
        if(board[i][size-1-i]==1){
           B_numofX++;
        }else if(board[i][size-1-i]==0){
           B_numofO++;
        }
     }
     if(B_numofX==3){
        result=1;
        turn=0;
     }else if(B_numofO==3){
        result=0;
        turn=0;
     }
     if(turn==0){
         break;                  //break while
      }
     if(B_numofO!=size&&B_numofX!=size){
        B_numofX=B_numofO=0;
     }
     for(i=0;i<size;i++){
 
         if(board[i][i]==1){
           B_numofX++;
        }else if(board[i][i]==0){
           B_numofO++;
        }
     }
     if(B_numofO==3){
        result=0;
        turn=0;
     }else if(B_numofX==3){
        result=1;
        turn=0;
     }else{
        turn=0;
     }
      
      if(turn==0){
         break;                  //break while
      }
      }
  
  
  
   if(result==1){                //result
      printf("\nPlayer X win!!");
   }else if(result==0){
      printf("\nPlayer O win!!");
   }else{
      printf("No one win!");
   }
   //system("pause");
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值