You are on page 1of 4

This is a tictactoe game in C++.

Although it is not too smart to prevent you from winning but it is worth playing
it.
I hope u enjoy it. Happy gaming!
Code :
#include<iostream.h>
//opening headerfile iostream for in-out
#include<conio.h>
//opening headerfile conio for clrscr();
#include<stdlib.h>
//opening headerfile stdlib for
random(int);
char tic[3][3];
//global matrix declerations
int d,e,f,a,t,i,j,x,y;
//global variables declerations
void display();
//displays the matrix
void user();
//function for user's move
void newdisp();
//function for display of matrix after
every
move
void pc();
//function for pc's move
int check();
//function for finding out the winner
int horcheck();
//function for horizontal line check
int vercheck();
//function for vertical line check
int diagcheck();
//function for diagonal line check
main()
//main function
{
clrscr();
//clears the previous output screen
randomize();
//initialize random function calling
int d=random(2);
//random function call
for(i=0;i<3;i++)
for(j=0;j<3;j++)
tic[i][j]=' ';
//assigning space ' ' to all elements of matrix
display();
//display function call
d==0?user():pc();
//random starting of the game depending
on d
getch();
//provides output by getting input
without
returning to program
return 0;
//return int to main function
}
void display()
//display function definition
{
for(t=0;t<3;t++)
{
cout<<"
"<<tic[t][0]<<" | "<<tic[t][1]<<" | "<<tic[t][2]<<endl;
//figure formation
if(t!=2)
cout<<"
--|---|--"<<endl;
}
}
void user()
//user function definition
{
cout<<"
ENTER THE CO-ORDINATES WHERE YOU WANT TO PUT UR 'X' i.e
0,1,2
";
cin>>x>>y;
if((x<0)||(x>2)&&(y<0)||(y>2)) //check for valid co-ordinates
{
cout<<"

ENTER THE CORRECT CO-ORDINATES";


user();
//user function call
}
else
{
if(tic[x][y]==' ')
//check for vacant space at entered co-ordinates
{
tic[x][y]='X'; //assigning user 'X' to the co-ordinates
newdisp();
//newdisp function call
}
else
{
cout<<"
THIS POSITION IS ALREADY FILLED. CHOOSE SOME OTHER
CO-ORDINATES";
user();
//user function call
}
}
d=check();
//check function call
if(d==0)
pc();
//pc function call
else
{
cout<<"
YOU ARE THE WINNER";
getche();
//requires enter to return to program. prevents return
without display
exit(1);
//program termination
}
}
void newdisp()
//newdisp function definition
{
for(t=0;t<3;t++)
{
cout<<"
"<<tic[t][0]<<" | "<<tic[t][1]<<" | "<<tic[t][2]<<endl;
//displays new tictactoe after user or pc turn
if(t!=2)
cout<<"
--|---|--"<<endl;
}
}
void pc()
//pc function call
{
int f,z;
randomize();
//initialize random function calling
cout<<"
THIS IS THE COMPUTER'S MOVE
";
for(i=0;i<=20;i++)
{
f=random(3);
z=random(3);
if(tic[f][z]==' ')
//check for vacant space at entered
co-ordinates
{
tic[f][z]='O'; //assigning pc 'O' to the co-ordinates

goto x;
}
else
continue;
}
x:newdisp();
d=check();
if(d==0)
user();
else
{
cout<<"

//exiting for loop to display new tictactoe


//
//newdisp function call
//check function call
//user function call

I'M THE WINNER";


getche();
//requires enter to return to program. prevents
return without display
exit(1);
//program termination
}
}
check()
//check function definition
{
horcheck();
//horcheck function call
vercheck();
//vercheck function call
diagcheck();
//diagcheck function call
return (d||e||f);
}
horcheck()
//horcheck function definition
{
if(((tic[0][0]==tic[0][1])&&(tic[0][1]==tic[0][2])&&(tic[0][1]!='
'))||((tic[1][0]==tic[1][1])&&(tic[1][1]==tic[1][2])&&(tic[1][1]!='
'))||((tic[2][0]==tic[2][1])&&(tic[2][1]==tic[2][2])&&(tic[2][2]!='
')))
d=1;
//checks each element of a horizontal line
to
be same
else
//returns 1 if all 3 elements of any
horizontal line are same
d=0;
//else returns 0
return d;
}
vercheck()
//vercheck function definition
{
if(((tic[0][0]==tic[1][0])&&(tic[1][0]==tic[2][0])&&(tic[0][0]!='
'))||((tic[0][1]==tic[1][1])&&(tic[1][1]==tic[2][1])&&(tic[0][1]!='
'))||((tic[0][2]==tic[1][2])&&(tic[1][2]==tic[2][2])&&(tic[0][2]!='
')))
e=1;
//checks each element of a vertical line to
be
same
else
//returns 1 if all 3 elements of any
vertical
line are same
e=0;
//else returns 0
return e;
}
diagcheck()
//diagcheck function definition
{
if(((tic[0][0]==tic[1][1])&&(tic[1][1]==tic[2][2])&&(tic[0][0]!='
'))||((tic[0][2]==tic[1][1])&&(tic[1][1]==tic[2][0])&&(tic[1][1]!='
')))

f=1;
be
same
else
diagonal
line are same
f=0;
return f;
}

//checks each element of a diagonal line to


//returns 1 if all 3 elements of any
//else returns 0

You might also like