#include<stdio.h> #define COL 3 #define ROW 3 void init_board(int arr[COL][ROW]) { int i = 0; int j = 0; for (i = 0; i < COL; i++) { for (j = 0; j < ROW; j++) { arr[i][j] = ‘ ‘; } } } void print_board(int arr[COL][ROW]) { int i = 0; for (i = 0; i < COL; i++) { printf(" %c | %c | %c \n", arr[i][0], arr[i][1], arr[i][2]); if (i != 2) printf("---|---|---\n"); } } void play_move(int arr[COL][ROW]) { int x, y; flag: printf("请输入合适的坐标:>"); scanf_s("%d%d", &x, &y); x = x - 1; y = y - 1; if (arr[x][y] != ‘ ‘) { printf("输入坐标有误\n"); //play_move(arr); goto flag; } else { arr[x][y] = ‘X‘; } } void computer_move(int arr[COL][ROW]) { int x = 0; int y = 0; for (x = 0; x < COL; x++) { for (y = 0; y < ROW; y++) { if (arr[x][y] == ‘ ‘) { arr[x][y] = ‘0‘; goto flag; } } } flag: if (x*y == 9) { printf("平局\n"); } } char check_win(int arr[COL][ROW]) { int i = 0; for (i = 0; i < COL; i++) { if ((arr[i][0] == arr[i][1]) && (arr[i][1] == arr[i][2])) { return arr[i][0]; } } for (i = 0; i < ROW; i++) { if ((arr[0][i] == arr[1][i]) && (arr[1][i] == arr[2][i])) { return arr[0][i]; } } if ((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2])) { return arr[0][0]; } if ((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0])) { return arr[1][1]; } return ‘ ‘; } int main() { char done; int arr[COL][ROW]; init_board(arr); print_board(arr); do { play_move(arr); done = check_win(arr); if (done != ‘ ‘) { break; } computer_move(arr); print_board(arr); done = check_win(arr); } while (done == ‘ ‘); print_board(arr); if (done == ‘X‘) { printf("玩家赢\n"); } else if (done == ‘0‘) { printf("电脑赢\n"); } system("pause"); return 0; }
本文出自 “Vs吕小布” 博客,请务必保留此出处http://survive.blog.51cto.com/10728490/1705319
原文地址:http://survive.blog.51cto.com/10728490/1705319