C语言实现简易版三子棋
2017-10-28 15:25
459 查看
//三子棋 //game.h头文件 #ifndef __GAME_H__ #define __GAME_H__ #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> #define ROW 3 #define COL 3 void Inin_Board(char arr[ROW][COL],int row,int col); void Display_Board(char arr[ROW][COL], int row, int col); void Computer_Put(char arr[ROW][COL], int row, int col); void Customer_Put(char arr[ROW][COL], int row, int col); char Check_Win(char arr[ROW][COL], int row, int col); #endif //game.c #define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void Inin_Board(char arr[ROW][COL], int row, int col)//初始化棋盘,使其全为空格 { memset(arr,' ',row*col); } void Display_Board(char arr[ROW][COL], int row, int col)//打印一个棋盘 { int i = 0; for (i = 0; i < row; i++) { printf(" %c | %c | %c \n", arr[i][0], arr[i][1], arr[i][2]); if (i < row - 1) { printf(" -----------\n"); } } } void Computer_Put(char arr[ROW][COL], int row, int col)//电脑走一步 { printf("电脑走:\n"); while (1) { row = rand() % 3; col = rand() % 3; if (arr[row][col] == ' ') { break; } } arr[row][col] = '@'; } void Customer_Put(char arr[ROW][COL], int row, int col)//你走一步 { int i = 0, j = 0; printf("你走:\n"); printf("请输入你要走的坐标:"); while (1) { scanf("%d%d", &i, &j); i--; j--; if ((i >= 0 && i <= 2) && (j <= 2 && j >= 0)) { if (arr[i][j] == ' ') { arr[i][j] = 'X'; break; } else { printf("坐标已被占用,请重新输入:"); } } else { printf("输入坐标错误,请重新输入:"); } } } int Full_Board(char arr[ROW][COL], int row, int col)//判断棋盘是否下满 { int i = 0, j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { if (arr[i][j] != ' ') return 0; } } return 1; } char Check_Win(char arr[ROW][COL], int row, int col)//检查是电脑赢了,还是你赢了,还是平局,然后输出,否则继续 { int i = 0, j = 0; for (i = 0; i < row; i++) { if (arr[i][0] == arr[i][1] && arr[i][0] == arr[i][2] && arr[i][0] != ' ') { return arr[i][1]; } } for (i = 0; i < col; i++) { if (arr[0][i] == arr[1][i] && arr[0][i] == arr[2][i] && arr[0][i] != ' ') { return arr[0][i]; } } if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[1][1] != ' ') { return arr[1][1]; } if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[1][1] != ' ') { return arr[1][1]; } else { if (Full_Board(arr, row, col)) { return 'q'; } else return ' '; } } //Main.C #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> #include"game.h" void Menu() { printf("**************************\n"); printf("**** 1.play 0.exit ****\n"); printf("**************************\n"); } void game() { char flag = 0; char board[ROW][COL]; Inin_Board(board, ROW, COL); Display_Board(board, ROW, COL); while (1) { Computer_Put(board, ROW, COL); Display_Board(board, ROW, COL); if ((flag = Check_Win(board, ROW, COL)) != ' ') break; Customer_Put(board, ROW, COL); Display_Board(board, ROW, COL); if ((flag = Check_Win(board, ROW, COL)) != ' ') break; } if (flag == '@') { printf("电脑赢!\n"); } if (flag == 'X') { printf("你赢了!\n"); } if (flag == 'q') printf("平局\n"); } int main() { int choose = 0; srand((unsigned int)time(NULL)); do { Menu(); printf("请输入你的选择:"); scanf("%d", &choose); switch (choose) { case 1:game(); break; case 0:break; default:printf("输入错误,请重新输入!\n"); break; } } while (choose); fflush(stdin); getchar(); return 0; }
相关文章推荐