voidInitBoard(char board[ROW][COL],int row,int col){int i =0;int j =0;for( i =0; i < row; i++){for(j =0; j < col; j++){
board[i][j]=" ";}}}
画棋盘
第一种
voidDisplayBoard(char board[ROW][COL],int row,int col){int i =0;for( i =0; i < row; i++){printf("%c|%c|%c \n", board[i][0], board[i][1], board[i][2]);if(i<row-1){printf("---|---|---\n");}}}
第二中
voidDisplayBoard(char board[ROW][COL],int row,int col){int i =0;for( i =0; i < row; i++){int j =0;for( j =0; j < col; j++){printf(" %c ", board[i][j]);if(j < col -1)printf("|");}printf("\n");if(i<row-1){int j =0;for( j =0; j < col; j++){printf("---");if(j<col-1){printf("|");}}printf("\n");}}}
玩家下棋
voidPlayerMove(char board[ROW][COL],int row,int col){int x =0;int y =0;printf("玩家走\n");while(1){printf("x轴坐标为");scanf_s("%d",&x);printf("y轴坐标为");scanf_s("%d\n",&y);if(x >=1&& x < row && y >=1&& y <= col){//下棋if(board[x-1][y-1]==' '){
board[x -1][y -1]='0';break;}else{printf("坐标被占用\n");}}else{printf("坐标不对,请重新输入");}}}
电脑下棋
voidPlayerMove(char board[ROW][COL],int row,int col){int x =0;int y =0;printf("玩家走\n");while(1){printf("x轴坐标为");scanf_s("%d",&x);printf("y轴坐标为");scanf_s("%d\n",&y);if(x >=1&& x < row && y >=1&& y <= col){//下棋if(board[x-1][y-1]==' '){
board[x -1][y -1]='0';break;}else{printf("坐标被占用\n");}}else{printf("坐标不对,请重新输入");}}}
判断输赢
intIsFull(char board[ROW][COL],int row,int col){int i =0;int j =0;for( i =0; i < row; i++){for(j =0; j < col; j++){return0;}}return1;}charIsWin(char board[ROW][COL],int row,int col){int i =0;//判断三行for( i =0; i < row; i++){if(board[i][0]== board[i][0]&& board[i][0]&& board[i][1]!=' '){return board[i][1];}}//判断三列for(i =0; i < row; i++){if(board[0][i]== board[1][i]&& board[2][i]&& board[0][i]!=' '){return board[1][i];}}//判断对角线if(board[1][1]== board[0][0]&& board[2][2]&& board[1][1]!=' '){return board[1][1];}if(board[0][2]== board[1][1]&& board[2][0]&& board[1][1]!=' '){return board[1][1];}//判断平局int ret =IsFull(board, ROW, COL);if(ret==1){return'Q';}return'C';}