Thursday, June 21, 2012

Tic-tac-toe

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


display(char *a,int position)
{
  printf("1     |2     |3\n");
  printf("   %c  |   %c  |  %c \n",a[0],a[1],a[2]);
  printf("      |      |\n");
  printf("------+------+------\n");
  printf("4     |5     |6\n");
  printf("   %c  |   %c  |  %c \n",a[3],a[4],a[5]);
  printf("      |      |\n");
  printf("------+------+------\n");
  printf("7     |8     |9\n");
  printf("   %c  |   %c  |  %c \n",a[6],a[7],a[8]);
  printf("      |      |\n"); 
}



int main()
{
  int pos,prevpos,i,flag=0;
  char a[9]={' ',' ',' ',' ',' ',' ',' ',' ',' '};
  display(a,0);
  for(i=0;i<9;i++)
  {
    i++;
    do
    {
      do
      {
    printf("Player 1 > Enter the position for X: ");
    scanf("%d",&pos);
      }
      while((pos<0 || pos>9)  && printf("Invalid Position!! ..\n"));
    pos-=1;
    }
    while((a[pos]=='X' || a[pos]=='O') && printf("Invalid !! Position taken..\n"));
    a[pos]='X';
    system("clear");
    display(a,pos);
   
        if((a[0]==a[1] && a[1]==a[2] && a[2]=='X')||//
    (a[3]==a[4] && a[4]==a[5] && a[5]=='X')||//
    (a[6]==a[7] && a[7]==a[8] && a[8]=='X')||//
    (a[0]==a[3] && a[3]==a[6] && a[6]=='X')||//
    (a[1]==a[4] && a[4]==a[7] && a[7]=='X')||//
    (a[2]==a[5] && a[5]==a[8] && a[8]=='X')||//
    (a[0]==a[4] && a[4]==a[8] && a[8]=='X')||//
    (a[2]==a[4] && a[4]==a[6] && a[6]=='X'))
    {
      printf("\n****  X Wins ****\n");
      flag=1;
      exit(0);
    }
     if(i>8 && flag>0) break;
    do
    {
      do
      {
    printf("Player 2 > Enter the position for O: ");
    scanf("%d",&pos);
      }
      while((pos<0 || pos>9)  && printf("Invalid Position!! ..\n"));
     
      pos-=1;
    }
    while((a[pos]=='X' || a[pos]=='O') && printf("Invalid !! Position taken..\n"));
    a[pos]='O';
    system("clear");
    display(a,pos);   
   if((a[0]==a[1] && a[1]==a[2] && a[2]=='O')||//
    (a[3]==a[4] && a[4]==a[5] && a[5]=='O')||//
    (a[6]==a[7] && a[7]==a[8] && a[8]=='O')||//
    (a[0]==a[3] && a[3]==a[6] && a[6]=='O')||//
    (a[1]==a[4] && a[4]==a[7] && a[7]=='O')||//
    (a[2]==a[5] && a[5]==a[8] && a[8]=='O')||//
    (a[0]==a[4] && a[4]==a[8] && a[8]=='O')||//
    (a[2]==a[4] && a[4]==a[6] && a[6]=='O'))
    {
      printf("\n****  O Wins ****\n");
      flag=2;
      exit(0);
    }

   
  }
 
  printf("\n  Game Draws!!!  \n");
 
}