Click here to Skip to main content
15,895,667 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
#include<stdio.h>
#include<conio.h>

char a[3][3]={'0','1','2','3','4','5','6','7','8'};
int checkwin();
void board();

int main()
{
 int ch,player=1,i;
 char make;
 do
 {
  board();
  player= (player % 2) ? 1 : 2;

  printf(" player no. %d",player);
  scanf("%d",&ch);

  make= (player==1) ? 'X': 'O';

  if(ch==1 && a[1][1]=='1')
   {
   a[1][1]=make;
   }
  else if(ch==2 && a[1][2]=='2')
   {
   a[1][2]=make;
   }
  else if(ch==3 && a[1][3]=='3')
   {
   a[1][3]=make;
   }
  else if(ch==4 && a[2][1]=='4')
   {
   a[2][1]=make;
   }
  else if(ch==5 && a[2][2]=='5')
  {
  a[2][2]=make;
  }
  else if(ch==6 && a[2][3]=='6')
   {
   a[2][3]=make;
   }
  else if(ch==7 && a[3][1]=='7')
   {
   a[3][1]=make;
   }
  else if(ch==8 && a[3][2]=='8')
   {
   a[3][2]=make;
   }
  else if(ch==9 && a[3][3]=='9')
   {
   a[3][3]=make;
   }
 else
  {
   printf("invalid choice");
   player--;
   getch();
  }
  i=checkwin();
  player++;
 }
 while(i==-1);

 board();
 if(i==1)
 printf("player %d win",--player);
 else
 printf("game over");

 getch();
 return 0;
}


int checkwin()
{
 char a[3][3];
 if(a[1][1]==a[1][2] && a[1][2]==a[1][3])
   return 1;
 else if(a[2][1]==a[2][2] && a[2][2]==a[2][3])
   return 1;
 else if(a[3][1]==a[3][2] && a[3][2]==a[3][3])
  return 1;
 else if(a[1][1]==a[2][1] && a[2][1]==a[3][1])
  return 1;
 else if(a[1][2]==a[2][2] && a[2][2]==a[3][2])
  return 1;
 else if(a[1][3]==a[2][3] && a[2][3]==a[3][3])
  return 1;
 else if(a[1][1]==a[2][2] && a[2][2]==a[3][3])
  return 1;
 else if(a[1][3]==a[2][2] && a[2][2]==a[3][1])
  return 1;
 else if(a[1][1]!=a[1][2] && a[1][2]!=a[1][3] &&
	 a[2][1]!=a[2][2] && a[2][2]!=a[2][3] &&
	 a[3][1]!=a[3][2] && a[3][2]!=a[3][3] &&
	 a[1][1]!=a[2][1] && a[2][1]!=a[3][1] &&
	 a[1][2]!=a[2][2] && a[2][2]!=a[3][2] &&
	 a[1][3]!=a[2][3] && a[2][3]!=a[3][3] &&
	 a[1][1]!=a[2][2] && a[2][2]!=a[3][3] &&
	 a[1][3]!=a[2][2] && a[2][2]!=a[3][1])

  return 0;
 else
  return -1;
}


void board()
{
 clrscr();
 printf("TIC-TAC-TOE GAME\n\n\n");
 printf("PLAYER 1 (X) -----    PLAYER 2 (O)\n\n\n");
 printf("    |    |    \n");
 printf(" %c | %c | %c \n",a[1][1],a[1][2],a[1][3]);
 printf("____|____|____\n");
 printf("    |    |    \n");
 printf(" %c | %c | %c \n",a[2][1],a[2][2],a[2][3]);
 printf("____|____|____\n");
 printf("    |    |    \n");
 printf(" %c | %c | %c \n",a[3][1],a[3][2],a[3][3]);
 printf("    |    |    \n");
}


What I have tried:

i make tic toe game in 2 d array but error happen . sir please check what wrong happen .
Posted
Updated 16-May-18 19:17pm
Comments
Patrice T 16-May-18 22:06pm    
"but error happen"
this is not informative.
describe error or what is wrong in program.

1 solution

It's fairly easy to see a fundamental problem your program has. You are using a 3x3 array to represent the board and you are using indexes 1 to 3 to access the array. In the C language array indexes begin at zero so for your board they should range from 0 to 2 which would mean you have three index values : 0, 1, and 2.
 
Share this answer
 
Comments
CPallini 17-May-18 3:24am    
5.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900