五子棋(C语言版)

    xiaoxiao2021-03-25  48

    test.c:

    #include"game.h" void menu() {  printf("***************************\n");  printf("*******1.play 0.exit*******\n");  printf("***************************\n"); } void game() {  char arr[ROWS][COLS];  char win = 0;  int sz = sizeof(arr) / sizeof(arr[0][0]);  srand((unsigned int)time(NULL));  init_board(arr,sz);  do  {   printf("五子棋:\n");   display_board(arr, ROWS, COLS);   printf("电脑下:>\n");   computer_move(arr, ROWS, COLS);   win = check_win(arr, ROWS, COLS);   if ((win == '0') || (win == 'q'))   {    break;   }   display_board(arr, ROWS, COLS);   printf("玩家下:>");   play_move(arr, ROWS, COLS);   win = check_win(arr, ROWS, COLS);   if ((win == 'x') || (win == 'q'))   {    break;   }   system("CLS");  } while (win == ' ');  if (win == '0')  {   printf("电脑赢\n");  }  else if (win == 'x')  {   printf("玩家赢\n");  }  else  {   printf("平局\n");  } } void test() {  int input = 0;  do  {   menu();   printf("请选择:>");   scanf("%d",&input);   switch (input)   {   case 1:    game();    break;   case 0:    break;   default:    printf("搞事情,请重输!\n");    break;   }  } while (input); } int main() {  test();  return 0; }

    game.c:

    #include"game.h" void init_board(char arr[ROWS][COLS], int sz) {  memset(arr[0],' ',sz); } void display_board(char arr[ROWS][COLS], int rows, int cols) {  int i = 0;  for (i = 0; i < cols; i++)  {   if (i == 0)   {    printf(" ___ ___ ___ ___ ___ \n");   }   printf("| %c | %c | %c | %c | %c |\n", arr[i][0], arr[i][1], arr[i][2], arr[i][3], arr[i][4]);   printf("|___|___|___|___|___|\n");  } } void computer_move(char arr[ROWS][COLS], int rows, int cols) {  int row = 0;  int col = 0;  while (1)  {   row = rand() % 5;   col = rand() % 5;   if (arr[row][col] == ' ')   {    arr[row][col] = '0';    break;   }  } } void play_move(char arr[ROWS][COLS], int rows, int cols) {  int row = 0;  int col = 0;  while (1)  {   scanf("%d%d",&row,&col);   if (((row>0)&&(row<=ROWS))&&((col>0)&&(col<=COLS)))   {    if (arr[row - 1][col - 1] == ' ')    {     arr[row-1][col-1] = 'x';     break;    }    else     printf("输入坐标有误,请重新输入:>\n");   }   else   {    printf("输入坐标有误,请重新输入:>\n");   }  } } char check_win(char arr[ROWS][COLS], int rows, int cols) {  int i = 0;  for (i = 0; i < COLS; i++)  {   if ((arr[i][0] == arr[i][1]) &&    (arr[i][1] == arr[i][2]) &&    (arr[i][2] == arr[i][3]) &&    (arr[i][3] == arr[i][4]) &&    (arr[i][0]) != ' ')   {    return arr[i][0];   }  }  for (i = 0; i < ROWS; i++)  {   if ((arr[0][i] == arr[1][i]) &&    (arr[1][i] == arr[2][i]) &&    (arr[2][i] == arr[3][i]) &&    (arr[3][i] == arr[4][i]) &&    (arr[0][i]) != ' ')   {    return arr[0][i];   }  }  if ((arr[0][0] == arr[1][1]) &&   (arr[1][1] == arr[2][2]) &&   (arr[2][2] == arr[3][3]) &&   (arr[3][3] == arr[4][4]) &&   (arr[2][2] != ' '))  {    return arr[2][2];  }  if ((arr[0][4] == arr[1][3]) &&   (arr[1][3] == arr[2][2]) &&   (arr[2][2] == arr[3][1]) &&   (arr[3][1] == arr[4][0]) &&   (arr[2][2] != ' '))  {    return arr[2][2];  }  for (i = 0; i < ROWS; i++)  {   int j = 0;   for (j = 0; j < COLS; j++)   {    if (arr[i][j] == ' ')     return arr[i][j];   }  }  return 'q'; }

    game.h:

    #ifndef __GAME_H__ #define __GAME_H__ #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> #define ROWS 5 #define COLS 5 void init_board(char arr[ROWS][COLS],int sz); void display_board(char arr[ROWS][COLS],int rows,int cols); void computer_move(char arr[ROWS][COLS], int rows, int cols); void play_move(char arr[ROWS][COLS], int rows, int cols); char check_win(char arr[ROWS][COLS], int rows, int cols); #endif //__GAME_H__

    转载请注明原文地址: https://ju.6miu.com/read-38650.html

    最新回复(0)