Not a great one but
lost bit patients while writing. I wanted one using graphics routine but may
later I will come up with it. Two weeks Puja breaks and then times for C++.
#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
char
gm[3][3];
void
checks(int q)
{
if(q==65
|| q==33)
{
printf("\n\n\tPress
Any key to Quit.....");
getch();
exit(0);
}
}
void
design()
{
int
i,j;
for(i=0;i<3;i++)
{
printf("\n\t\t___________________________\n");
printf("\t");
for(j=0;j<3;j++)
{
printf("\t| %c ",gm[i][j]);
}
printf("\t |");
printf("");
}
printf("\n\t\t___________________________\n");
}
void initz()
{
int i,j;
for(i=0;i<3; i++)
{
for(j=0;j<3;j++)
{
gm[i][j]=' ';
}
}
}
void input()
{
int r,c,r1,c1;
int i=0,j,chk=0,chk1=0,count=0;
while(i<10)
{
printf("\n\t\tPress
'Q' to Quit\n");
while(1)
{
if(count>=9)
{
break;
}
printf("\n\tUser-1
Press Row No. (1-3) : ");
r=(int)(getche()-48);
checks(r);
printf("\n\tUser-1
Press Column No. (1-3) : ");
c=(int)(getche()-48);
checks(c);
if((r>=1
&& r<=3) && (c>=1 && c<=3))
{
r=r-1;
c=c-1;
if(gm[r][c]=='
')
{
gm[r][c]='X';
chk=check();
count++;
i++;
break;
}
else
{
printf("\n\t*
* Given Cell is Already Used");
}
}
else
{
printf("\n\t*
* Invalid Input * *");
}
}
if(chk!=1)
{
while(1)
{
if(count>=9)
{
break;
}
printf("\n\t\tPress
'Q' to Quit\n");
printf("\n\tUser-2 Press
Row No. (1-3) : ");
r1=(int)(getche()-48);
checks(r1);
printf("\n\tUser-2
Press Column No. (1-3) : ");
c1=(int)(getche()-48);
checks(c1);
if((r1>=1
&& r1<=3) && (c1>=1 && c1<=3))
{
r1=r1-1;
c1=c1-1;
if(gm[r1][c1]=='
')
{
gm[r1][c1]='O';
chk1=check1();
i++;
count++;
break;
}
else
{
printf("\n\t*
* Invalid Input * *");
}
}
else
{
printf("\n\t* * Invalid Input * *");
}
}
}
if(chk==1)
{
printf("\n\t* *
User-1 Won * *");
printf("\n\n\tPress Any Key
to Cont.. ");
getch();
break;
}
else
if(chk1==1)
{
printf("\n\t*
* User-2 Won * *");
printf("\n\n\tPress Any Key
to Cont.. ");
getch();
break;
}
if(count>=9)
{
printf("\n\t*
* Draw * *");
printf("\n\n\tPress
Any Key to Cont.. ");
getch();
break;
}
}
}
int
check()
{
int
i,j,sr,sc,ld=0,rd=0,flag=0;
design();
for(i=0;i<3;i++)
{
sr=sc=0;
for(j=0;j<3;j++)
{
if(gm[i][j]=='X')
{
sr++;
}
if(gm[j][i]=='X')
{
sc++;
}
if(i==j
&& gm[j][i]=='X')
{
ld++;
}
if(i+j==2
&& gm[j][i]=='X')
{
rd++;
}
}
if(sr==3
|| sc==3)
{
flag=1;
break;
}
if(flag==1
|| ld==3 || rd==3)
{
flag=1;
break;
}
}
return
flag;
}
int
check1()
{
int i,j,sr,sc,ld=0,rd=0,flag=0;
design();
for(i=0;i<3;i++)
{
sr=sc=0;
for(j=0;j<3;j++)
{
if(gm[i][j]=='O')
{
sr++;
}
if(gm[j][i]=='O')
{
sc++;
}
if(i==j
&& gm[j][i]=='O')
{
ld++;
}
if(i+j==2
&& gm[j][i]=='O')
{
rd++;
}
}
if(sr==3
|| sc==3)
{
flag=1;
break;
}
if(flag==1
|| ld==3 || rd==3)
{
flag=1;
break;
}
}
return
flag;
}
int
main()
{
initz();
input();
printf("\n\n\tPress
Any Key to Cont.. ");
return 0;
}