text.c file
#include"game.h" intmain() { int a=0; int count=1; do { menu(); scanf("%d",&a); switch(a) { case 1: game(); break; case 0: count--; break; default: printf("Incorrect selection, please re-enter!\n"); break; } }while(count); return 0; }
game.h file
#ifndef _GAME_H #define _GAME_H #include<stdio.h> #include<time.h> #include<stdlib.h> #include<string.h> #define ROW 3 #define COL 3 void menu(); void game(); void init_board(char board[ROW][COL],int row,int col); void print_board(char board[ROW][COL],int row,int col); void player_move(char board[ROW][COL],int row,int col); void computer_move(char board[ROW][COL],int row,int col); char is_win(char board[ROW][COL],int row,int col); int is_full(char board[ROW][COL],int row,int col); #endif//_GAME_H_
game.c file
#include"game.h" void menu() { printf("**************************\n"); printf("**** 1.play 0.exit ****\n"); printf("**************************\n"); } void init_board(char board[ROW][COL],int row,int col) { memset(board,' ',ROW*COL); } void print_board(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"); } } } void player_move(char board[ROW][COL],int row,int col) { int x=0,y=0; while(1) { printf("Please enter the coordinates->\n"); scanf("%d %d",&x,&y); if(x>0 && x<4 && y>0 && y<4) { if(board[x-1][y-1]=' ') { board[x-1][y-1]='*'; break; } else printf("The coordinate is occupied->\n"); } else printf("Input coordinate error->\n"); } } void computer_move(char board[ROW][COL],int row,int col) { int a=0,b=0; while(1) { a=rand()%row; b=rand()%col; if(board[a][b]==' ') { board[a][b]='0'; break; } } } static int is_full(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++) { if (board[i][j]==' ') return 0; } } return 1; } char is_win(char board[ROW][COL],int row,int col) { int i=0; for(i=0;i<row;i++) { if((board[i][0]==board[i][1])&&(board[i][1]==board[i][2])) { return board[i][0]; } } for(i=0;i<col;i++) { if((board[0][i]==board[1][i])&&(board[1][i]==board[2][i])) { return board[0][i]; } } if((board[0][0]==board[1][1])&&(board[1][1]==board[2][2])) { return board[0][0]; } if((board[2][0]==board[1][1])&&(board[1][1]==board[0][2])) { return board[2][0]; } if (is_full(board,ROW,COL)==1) { return 'Q'; } else return ' '; } int board_full(char board[ROW][COL])//Checkerboard full function { int i= 0; int j =0; for(i=0;i<3;i++) { for(j=0;j<3;j++) { if (board[i][j]==' ') return 0; } } return 1; } void game() { char i; char board[ROW][COL]; init_board(board,ROW,COL); print_board(board,ROW,COL); while (1) { printf("Player goes ->:\n"); player_move(board,ROW,COL); print_board(board,ROW,COL); i=is_win(board,ROW,COL); if(i!= ' ') break; printf("Computer goes ->:\n"); computer_move(board,ROW,COL); print_board(board,ROW,COL); i=is_win(board,ROW,COL); if(i!=' ') break; } if(i=='*') { printf("Player wins!\n"); } else if(i=='0') { printf("Computer wins!\n"); } else if(i=='Q') { printf("Tie!\n"); } }