Tic tac toe game in c


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

char matrix[3][3];  /* the tic tac toe matrix */
int f=1,f2=1;
char check(void);
void init_matrix(void);
void player_move(void);
void computer_move(void);
void disp_matrix(void);
int check1(void);
int check2(void);

int main(void)
{
  char done;

  printf("\t This is the game of Tic Tac Toe.\n");
  printf("You will be playing against the computer.\n");

  done =  ' ';
  init_matrix();
disp_matrix();
  do {

 player_move();
 printf("PLAYER MOVE \n");
 disp_matrix();
done = check();   /* see if winner */
if(done!= ' ')
break; /* winner!*/
 printf("COMPUTER MOVE \n\n");
 computer_move();
 disp_matrix();
done = check(); /* see if winner */
  } while(done== ' ');

  if(done=='*')
printf("Congratulation!!!! \n\n You won!\n\n\n\n");
else
  printf("SHit !!!!! \n\n COMPUTER won!!!!\n\n\n\n");
  disp_matrix();  //  final positions

  return 0;
}

/* Initialize the matrix. */
void init_matrix(void)
{
  int i, j;

  for(i=0; i<3; i++)
for(j=0; j<3; j++) matrix[i][j] =  ' ';
}

/* Get a player's move. */
void player_move(void)
{
  int x, y;

  printf("Your turn \nEnter X,Y coordinates for your move:\n\n ");
  scanf("%d %d", &x, &y);

  x--; y--;

  if(matrix[x][y]!= ' '){
printf("Invalid move, try again.\n");
player_move();
  }
  else
  {
matrix[x][y] = '*';
  }
}

/* Get a move from the computer. */
void computer_move(void)
{
  int i, j;
  for(i=0; i<3; i++){
for(j=0; j<3; j++)
if(matrix[i][j]==' ')
break;
if(matrix[i][j]==' ')
break;
  }

  f2=check2();
  if(f2==1)
f=check1();
  if(i*j==9)  {
printf("draw\n");
exit(0);
  }
  else
if(f==1&&f2==1)
matrix[i][j] = '#';
}

/* Display the matrix on the screen. */
void disp_matrix(void)
{
  int t;

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

/* See if there is a winner. */
char check(void)
{
  int i;

  for(i=0; i<3; i++)  /* check rows */
if(matrix[i][0]==matrix[i][1] &&
matrix[i][0]==matrix[i][2]) return matrix[i][0];

  for(i=0; i<3; i++)  /* check columns */
if(matrix[0][i]==matrix[1][i] &&
matrix[0][i]==matrix[2][i]) return matrix[0][i];

  /* test diagonals */
  if(matrix[0][0]==matrix[1][1] &&
 matrix[1][1]==matrix[2][2])
return matrix[0][0];

  if(matrix[0][2]==matrix[1][1] &&
 matrix[1][1]==matrix[2][0])
return matrix[0][2];

  return ' ';
}
int check1()
 {
f=1;
if((matrix[0][0]=='*'&& matrix[0][1]=='*'&&matrix[1][2]==' ')||(matrix[0][2]=='*'&& matrix[2][2]=='*'&&matrix[1][2]==' '))
 {
matrix[1][2]='#'; f=0; return f;
}
if((matrix[0][0]=='*'&& matrix[1][0]=='*'&&matrix[2][0]==' ')||(matrix[0][2]=='*'&& matrix[1][1]=='*'&&matrix[2][0]==' ')||(matrix[2][1]=='*'&& matrix[2][2]=='*'&&matrix[2][0]==' '))
{
matrix[2][0]='#'; f=0; return f;
}
if((matrix[0][2]=='*'&& matrix[1][2]=='*'&&matrix[2][2]==' ')||(matrix[2][0]=='*'&& matrix[2][1]=='*'&&matrix[2][2]==' ')||(matrix[0][0]=='*'&& matrix[1][1]=='*'&&matrix[2][2]==' '))
{
matrix[2][2]='#'; f=0;  return f;
 }
if((matrix[1][0]=='*'&& matrix[2][0]=='*'&&matrix[0][0]==' ')||(matrix[0][1]=='*'&& matrix[0][2]=='*'&&matrix[0][0]==' ')||(matrix[1][1]=='*'&& matrix[2][2]=='*'&&matrix[0][0]==' ') )
{
matrix[0][0]='#'; f=0; return f;
}
if((matrix[0][0]=='*'&& matrix[2][0]=='*'&&matrix[1][0]==' ')||(matrix[1][1]=='*'&& matrix[1][2]=='*'&&matrix[1][0]==' '))
{
matrix[1][0]='#'; f=0; return f;
}
if((matrix[0][0]=='*'&& matrix[0][2]=='*'&&matrix[0][1]==' ')||(matrix[1][1]=='*'&& matrix[2][1]=='*'&&matrix[0][1]==' ') )
{
matrix[0][1]='#'; f=0; return f;
}
if((matrix[0][0]=='*'&& matrix[0][1]=='*'&&matrix[0][2]==' ')||(matrix[2][0]=='*'&& matrix[1][1]=='*'&&matrix[0][2]==' ')||(matrix[1][2]=='*'&& matrix[2][2]=='*'&&matrix[0][2]==' ') )
{
matrix[0][2]='#'; f=0; return f;
}
  if((matrix[0][1]=='*'&& matrix[2][1]=='*'&&matrix[1][1]==' ')||(matrix[1][0]=='*'&& matrix[1][2]=='*'&&matrix[1][1]==' ')||(matrix[0][0]=='*'&& matrix[2][2]=='*'&&matrix[1][1]==' ') )
{
matrix[1][1]='#'; f=0; return f;
}
if((matrix[0][1]=='*'&& matrix[1][1]=='*'&&matrix[2][1]==' ')||(matrix[2][0]=='*'&& matrix[2][2]=='*'&&matrix[2][1]==' ') )
{
matrix[2][1]='#'; f=0; return f;
}

return f;
 }
 int check2()
 {
f2=1;
if((matrix[0][0]=='#'&& matrix[0][1]=='#'&&matrix[1][2]==' ')||(matrix[0][2]=='#'&& matrix[2][2]=='#'&&matrix[1][2]==' '))
 {
matrix[1][2]='#'; f2=0; return f2;
}
if((matrix[0][0]=='#'&& matrix[1][0]=='#'&&matrix[2][0]==' ')||(matrix[0][2]=='#'&& matrix[1][1]=='#'&&matrix[2][0]==' ')||(matrix[2][1]=='#'&& matrix[2][2]=='#'&&matrix[2][0]==' '))
{
matrix[2][0]='#'; f2=0; return f2;
}
if((matrix[0][2]=='#'&& matrix[1][2]=='#'&&matrix[2][2]==' ')||(matrix[2][0]=='#'&& matrix[2][1]=='#'&&matrix[2][2]==' ')||(matrix[0][0]=='#'&& matrix[1][1]=='#'&&matrix[2][2]==' '))
{
matrix[2][2]='#'; f2=0;  return f2;
 }
if((matrix[1][0]=='#'&& matrix[2][0]=='#'&&matrix[0][0]==' ')||(matrix[0][1]=='#'&& matrix[0][2]=='#'&&matrix[0][0]==' ')||(matrix[1][1]=='#'&& matrix[2][2]=='#'&&matrix[0][0]==' ') )
{
matrix[0][0]='#'; f2=0; return f2;
}
if((matrix[0][0]=='#'&& matrix[2][0]=='#'&&matrix[1][0]==' ')||(matrix[1][1]=='#'&& matrix[1][2]=='#'&&matrix[1][0]==' '))
{
matrix[1][0]='#'; f2=0; return f2;
}
if((matrix[0][0]=='#'&& matrix[0][2]=='#'&&matrix[0][1]==' ')||(matrix[1][1]=='#'&& matrix[2][1]=='#'&&matrix[0][1]==' ') )
{
matrix[0][1]='#'; f2=0; return f2;
}
if((matrix[0][0]=='#'&& matrix[0][1]=='#'&&matrix[0][2]==' ')||(matrix[2][0]=='#'&& matrix[1][1]=='#'&&matrix[0][2]==' ')||(matrix[1][2]=='#'&& matrix[2][2]=='#'&&matrix[0][2]==' ') )
{
matrix[0][2]='#'; f2=0; return f2;
}
  if((matrix[0][1]=='#'&& matrix[2][1]=='#'&&matrix[1][1]==' ')||(matrix[1][0]=='#'&& matrix[1][2]=='#'&&matrix[1][1]==' ')||(matrix[0][0]=='#'&& matrix[2][2]=='#'&&matrix[1][1]==' ') )
{
matrix[1][1]='#'; f2=0; return f2;
}
if((matrix[0][1]=='#'&& matrix[1][1]=='#'&&matrix[2][1]==' ')||(matrix[2][0]=='#'&& matrix[2][2]=='#'&&matrix[2][1]==' ') )
{
matrix[2][1]='#'; f2=0; return f2;
}

return f2;
 }
Share on Google Plus

0 comments: