头文件game.h
#include#include #include#define ROW 3#define COL 3void 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);
game.c
#include "game.h"void init_board(char board[ROW][COL],int row,int col){ for(int i = 0; i < row; i++) { for(int j = 0; j < col; j++) { board[i][j] = ' '; } }}void print_board(char board[ROW][COL],int row,int col){ for(int i = 0; i < row; i++) { for(int j = 0; j < col; j++) { printf(" %c ",board[i][j]); if(j < col-1) printf("|"); } printf("\n"); if(i < row-1) { for(int j = 0; j < col; j++) { printf("---"); if(j < col-1) { printf("|"); } } } printf("\n"); }}void player_move(char board[ROW][COL], int row, int col){ int x = 0,y = 0; printf("玩家下棋:>\n"); while(1) { scanf("%d%d",&x,&y); if(x>=1 && x<=col && y>=1 && y<=row) { if(board[x-1][y-1] == ' ') { board[x-1][y-1] = '*'; break; } else printf("坐标已被占用,请重新输入"); } else { printf("坐标非法请重新输入\n"); } } } void computer_move(char board[ROW][COL], int row, int col){ int x = 0; int y = 0; printf("电脑下棋:>\n"); while(1) { x = rand()%row; y = rand()%col; if(board[x][y] == ' ') { board[x][y] = '#'; break; } }}static int if_full(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++) { 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] && board[i][1] != ' ') { return board[i][1]; } } for (i = 0; i < col; i++) { if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ') { return board[1][i]; } } if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ') { return board[1][1]; } if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ') { return board[1][1]; } if (if_full(board, row, col) == 1) { return 'Q'; } return 'C';}
main.c
#include "game.h"void menu(void){ printf("\n"); printf("*1.Play\n"); printf("*0.Exit*\n"); printf("\n");}void game(void){ char ret = 0; char board[ROW][COL] = {0}; init_board(board, ROW, COL); print_board(board, ROW, COL); while(1) { player_move(board, ROW, COL); print_board(board, ROW, COL); ret = is_win(board, ROW, COL); if( ret != 'C') { break; } computer_move(board, ROW, COL); print_board(board, ROW, COL); 判断输赢 ret = is_win(board, ROW, COL); if( ret != 'C') { break; } } if (ret == '*') { printf("玩家赢了\n"); } else if (ret == '#') { printf("电脑赢了\n"); } else { printf("平局\n"); } }void test(void){ int choice = 0; do{ menu(); scanf("%d",&choice); switch (choice) { case 0: printf("退出游戏\n"); break; case 1: printf("开始游戏\n"); game(); break;default: printf("请输入0或1\n"); break; } }while(choice);}int main(){ srand((unsigned int)time(NULL)); test(); return 0;}
组装电脑配置清单网