您的位置:首页 > 编程语言 > C语言/C++

类五子棋的小游戏(c语言实现)

2008-12-23 19:40 681 查看
  需要一些算法才能更智能。。。本着开源的思想希望共同改进。。

 

#include <stdio.h>
#include <stdlib.h>

char matrix[4][4];

void init_matrix(void);
void disp_matrix(void);
char check(void);
void get_computer_move(void);
void get_player_move(void);

int main(void)
{
  char done ;
 
  printf("This is the game is .../n");
  printf("You will be playing against the computer./n");
 
  done = ' ';
  init_matrix();
  do
  {
    disp_matrix();
    get_player_move();
    done = check();
    if ( done != ' ' ) break;
    get_computer_move();
    done = check();
  }while (done == ' ');

  if (done == 'X')
    printf("you won!/n");
 
  else
    printf("I won!/n");
  disp_matrix();
 

  return 0;
}

void init_matrix(void)
{
  int i, j;
 
  for (i = 0; i < 4; i++)
    for (j = 0; j < 4; j++ )
       matrix[i][j] = ' ';
}

void disp_matrix(void)
{
   int t;
 
   for (t = 0; t < 4; t++)
   {
      printf("| %c | %c | %c | %c |",matrix[t][0],matrix[t][1],matrix[t][2],matrix[t][3]);
      if (t != 3)
         printf("/n|---|---|---|---|/n");
   }
   printf("/n");
}

void get_player_move(void)
{
   int x, y;
 
   printf("Enter X Y coordinates for your move:");
   scanf("%d%d",&x,&y);
  
   x--;
   y--;
   if (matrix[x][y] != ' ')
   {
     printf("invalid move, try again./n");
     get_player_move();
   }
   else
     matrix[x][y] = 'X';
}

void get_computer_move(void)
{
   int i, j;
  
   for (i = 0; i < 4; i++)
   {
     for (j = 0; j < 4; j++)
        if (matrix[i][j] == ' ') break;
     if (matrix[i][j] == ' ') break;
   } 
 
   if ( i * j == 9) // max(i) =2 , max(j) == 2
   {
     printf("draw/n");
     exit(0);
   }
   else
    matrix[i][j] = 'O';
}

char check(void)
{
   int i;
  
   for (i = 0; i < 4; i++)
     if (matrix[i][0] == matrix[i][1]&& matrix[i][0] == matrix[i][2]&&matrix[i][0] == matrix[i][3])
         return matrix[i][0];
 
   for(i = 0; i < 4; i++)
      if (matrix[0][i] == matrix[1][i]&&matrix[0][i] == matrix[2][i] && matrix[0][i] == matrix[3][i])
         return matrix[0][i];
 
   if (matrix[0][0] == matrix[1][1]&&matrix[1][1] == matrix[2][2]&&matrix[2][2] == matrix[3][3])
         return matrix[0][0];
   if (matrix[0][3] == matrix[1][2]&&matrix[1][2] == matrix[2][1]&&matrix[2][1]== matrix[3][0])
        return matrix[0][2];
    
   return ' ';
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matrix 语言 c 游戏 算法