#include <stdio.h>數組
void chessboard(int arr[][3], int len){ //棋盤初始化ide
int i = 0;函數
int j = 0;spa
for (i = 0; i < len; i++){orm
for (j = 0; j < len; j++){it
arr[i][j] = ' ';io
}class
}tab
}di
void print(int arr[][3], int len){ //顯示函數
int i = 0;
for (i = 0; i < 3; i++){
printf(" %c | %c | %c ", arr[i][0], arr[i][1], arr[i][2]);
printf("\n");
if (i != 2){
printf("___|___|___");
printf("\n");
}
}
}
void computer(int arr[][3], int len){ //電腦下棋函數
int i = 0;
int j = 0;
int flag = 0;
for (i = 0; i < len; i++){
for (j = 0; j < len; j++){
if (arr[i][j] == ' '){
arr[i][j] = '0'; //找到一個符合的位置就下棋
flag = 1;
break;
}
}
if (flag == 1)
break;
else if (flag == 0)
continue;
}
print(arr,len );
Is_win(arr, len);
}
void player(int arr[][3] ,int len){ //玩家下棋函數
int x = 0;
int y = 0;
flag: printf("請輸入棋子座標:\n");
scanf_s("%d %d", &x, &y); //輸入棋子座標
if (arr[x - 1][y - 1] == ' '){
arr[x - 1][y - 1] = 'X';
computer(arr ,len );
player(arr, len);
}
else if ((arr[x - 1][y - 1] == '0') || (arr[x - 1][y - 1] == 'X')){
printf("這裏不能落子!\n");
goto flag;
}
}
int Is_win(int arr[][3], int len){
int i = 0;
int ret = 0;
for (i = 0; i < 3; i++){
if (arr[i][0] == arr[i][1] && arr[i][0] == arr[i][2]){ //行判斷
ret = arr[i][0];
}
}
for (i = 0; i < 3; i++){
if (arr[0][i] == arr[1][i] && arr[0][i] == arr[2][i]){ //列判斷
ret = arr[0][i ];
}
}
if (( arr[0][0]) == arr[1][1] && arr[0][0] == arr[2][2]){ //\方向判斷
ret = arr[0][0];
}
if (arr[0][2] == arr[1][1] && arr[0][2]== arr[2][0] ){ // /方向判斷
ret = arr[0][2];
}
if (ret == 'X'){
printf("你贏了!\n");
exit(0);
}
else if (ret == '0'){
printf("電腦贏了!\n");
exit(0);
}
return 0;
}
int main(){ //主函數
int len = 0; //數組長度
int chess[3][3]; //定義數組
len = sizeof(chess ) / sizeof(chess[0]);
chessboard(chess,len );
print(chess, len);
player(chess, len);
return 0;
}