Sunteți pe pagina 1din 11

TIC TAC TOE Program between computer and a human player

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int board[10],player,choice,turn=0;
char x,o;
void compturn();
void boardinit()
{
for(int i=1;i<=9;i++)
board[i]=2;
}
char print(int i)
{
if(board[i]==2)
return ' ';
else if(board[i]==3)
return 'X';
else
return '0';
}
void dispboard()
{
cout << " | | " << endl;
cout << " " << print(1) << " | " << print(2) << " | " << print(3) << endl;
cout << "_____|_____|_____" << endl;
cout << " | | " << endl;
cout << " " << print(4) << " | " << print(5) << " | " << print(6) << endl;
cout << "_____|_____|_____" << endl;
cout << " | | " << endl;
cout << " " << print(7) << " | " << print(8) << " | " << print(9) << endl;
cout << " | | " << endl << endl;
}
int blank()
{
if(board[1]==2)
return 1;
else if(board[2]==2)
return 2;
else if(board[3]==2)
return 3;
else if(board[4]==2)
return 4;
else if(board[5]==2)
return 5;
else if(board[6]==2)
return 6;
else if(board[7]==2)

return 7;
else
return 8;
}
int posswin(int player)
{
if(player==1)
{
if(board[1]*board[2]*board[3]==18)
{
if(board[1]==2)
return 1;
else if(board[2]==2)
return 2;
else
return 3;
}
else if(board[4]*board[5]*board[6]==18)
{
if(board[4]==2)
return 4;
else if(board[5]==2)
return 5;
else
return 6;
}
else if(board[7]*board[8]*board[9]==18)
{
if(board[7]==2)
return 7;
else if(board[8]==2)
return 8;
else
return 9;
}
else if(board[1]*board[4]*board[7]==18)
{
if(board[1]==2)
return 1;
else if(board[4]==2)
return 4;
else
return 7;
}
else if(board[2]*board[5]*board[8]==18)
{
if(board[2]==2)
return 2;
else if(board[5]==2)
return 5;
else

return 8;
}
else if(board[3]*board[6]*board[9]==18)
{
if(board[3]==2)
return 3;
else if(board[6]==2)
return 6;
else
return 9;
}
else if(board[1]*board[5]*board[9]==18)
{
if(board[1]==2)
return 1;
else if(board[5]==2)
return 5;
else
return 9;
}
else if(board[3]*board[5]*board[7]==18)
{
if(board[3]==2)
return 3;
else if(board[5]==2)
return 5;
else
return 7;
}
else
return 0;
}
if(player==2)
{
if(board[1]*board[2]*board[3]==50)
{
if(board[1]==2)
return 1;
else if(board[2]==2)
return 2;
else
return 3;
}
else if(board[4]*board[5]*board[6]==50)
{
if(board[4]==2)
return 4;
else if(board[5]==2)
return 5;
else

return 6;
}
else if(board[7]*board[8]*board[9]==50)
{
if(board[7]==2)
return 7;
else if(board[8]==2)
return 8;
else
return 9;
}
else if(board[1]*board[4]*board[7]==50)
{
if(board[1]==2)
return 1;
else if(board[4]==2)
return 4;
else
return 7;
}
else if(board[2]*board[5]*board[8]==50)
{
if(board[2]==2)
return 2;
else if(board[5]==2)
return 5;
else
return 8;
}
else if(board[3]*board[6]*board[9]==50)
{
if(board[3]==2)
return 3;
else if(board[6]==2)
return 6;
else
return 9;
}
else if(board[1]*board[5]*board[9]==50)
{
if(board[1]==2)
return 1;
else if(board[5]==2)
return 5;
else
return 9;
}
else if(board[3]*board[5]*board[7]==50)
{
if(board[3]==2)
return 3;

else if(board[5]==2)
return 5;
else
return 7;
}
else
return 0;
}
}
int chckwin()
{
if(player==1)
{
if( (board[1]==board[2]) && (board[2]==board[3]) && (board[1]!=2)
&& (board[2]!=2) && (board[3]!=2) )
return 1;
else if( (board[4]==board[5]) && (board[5]==board[6]) && (board[4]!=2)
&& (board[5]!=2) && (board[6]!=2) )
return 1;
else if( (board[7]==board[8]) && (board[8]==board[9]) && (board[7]!=2)
&& (board[8]!=2) && (board[9]!=2) )
return 1;
else if( (board[1]==board[4]) && (board[4]==board[7]) && (board[1]!=2)
&& (board[4]!=2) && (board[7]!=2) )
return 1;
else if( (board[2]==board[5]) && (board[5]==board[8]) && (board[2]!=2)
&& (board[5]!=2) && (board[8]!=2) )
return 1;
else if( (board[3]==board[6]) && (board[6]==board[9]) && (board[3]!=2)
&& (board[6]!=2) && (board[9]!=2) )
return 1;
else if( (board[1]==board[5]) && (board[5]==board[9]) && (board[1]!=2)
&& (board[5]!=2) && (board[9]!=2) )
return 1;
else if( (board[3]==board[5]) && (board[5]==board[7]) && (board[3]!=2)
&& (board[5]!=2) && (board[7]!=2) )
return 1;
else if(turn==9)
return 0;
player++;
}
else if(player==2)

{
if( (board[1]==board[2]) && (board[2]==board[3]) && (board[1]!=2)
&& (board[2]!=2) && (board[3]!=2) )
return 1;
else if( (board[4]==board[5]) && (board[5]==board[6]) && (board[4]!=2)
&& (board[5]!=2) && (board[6]!=2) )
return 1;
else if( (board[7]==board[8]) && (board[8]==board[9]) && (board[7]!=2)
&& (board[8]!=2) && (board[9]!=2) )
return 1;
else if( (board[1]==board[4]) && (board[4]==board[7]) && (board[1]!=2)
&& (board[4]!=2) && (board[7]!=2) )
return 1;
else if( (board[2]==board[5]) && (board[5]==board[8]) && (board[2]!=2)
&& (board[5]!=2) && (board[8]!=2) )
return 1;
else if( (board[3]==board[6]) && (board[6]==board[9]) && (board[3]!=2)
&& (board[6]!=2) && (board[9]!=2) )
return 1;
else if( (board[1]==board[5]) && (board[5]==board[9]) && (board[1]!=2)
&& (board[5]!=2) && (board[9]!=2) )
return 1;
else if( (board[3]==board[5]) && (board[5]==board[7]) && (board[3]!=2)
&& (board[5]!=2) && (board[7]!=2) )
return 1;
else if(turn==9)
return 0;
player--;
}
}

void usrturn()
{
if(turn<=9)
{
cout<<"Enter Position : "<<endl;
cin>>choice;
turn++;
if(player==1)
{
if(choice==1 && board[1]==2)
board[1]=3;

else if(choice==2 && board[2]==2)


board[2]=3;
else if(choice==3 && board[3]==2)
board[3]=3;
else if(choice==4 && board[4]==2)
board[4]=3;
else if(choice==5 && board[5]==2)
board[5]=3;
else if(choice==6 && board[6]==2)
board[6]=3;
else if(choice==7 && board[7]==2)
board[7]=3;
else if(choice==8 && board[8]==2)
board[8]=3;
else if(choice==9 && board[9]==2)
board[9]=3;
else
cout<<"Invalid Position!!!!TRY AGAIN"<<endl;
}
else
{
if(choice==1 && board[1]==2)
board[1]=5;
else if(choice==2 && board[2]==2)
board[2]=5;
else if(choice==3 && board[3]==2)
board[3]=5;
else if(choice==4 && board[4]==2)
board[4]=5;
else if(choice==5 && board[5]==2)
board[5]=5;
else if(choice==6 && board[6]==2)
board[6]=5;
else if(choice==7 && board[7]==2)
board[7]=5;
else if(choice==8 && board[8]==2)
board[8]=5;
else if(choice==9 && board[9]==2)
board[9]=3;
else
cout<<"Invalid position!!!!TRY AGAIN"<<endl;
}
dispboard();
chckwin();
if(chckwin()==1){
cout<<"Congratulations!player"<<player<<"won"<<endl;
exit;}
else if(chckwin()==0){
cout<<"Match Drawn"<<endl;
exit;}
else

compturn();
}
else
exit;
}
void compturn()
{
turn++;
cout<<"Computer's turn"<<endl;
if(player==1)
{
switch(turn)
{
case 1:
board[1]=3;
break;
case 2:
if(board[5]==2)
board[5]=3;
else
board[1]=3;
break;
case 3:
if(board[9]==2)
board[9]=3;
else
board[3]=3;
break;
case 4:
if(posswin(1)!=0)
board[posswin(1)]=3;
else
board[blank()]=3;
break;
case 5:
if(posswin(1)!=0)
board[posswin(1)]=3;
else if(posswin(2)!=0)
board[posswin(2)]=3;
else if(board[7]==2)
board[7]=3;
else
board[3]=3;
break;
case 6:
if(posswin(2)!=0)
board[posswin(2)]=3;
else if(posswin(1)!=0)
board[posswin(1)]=3;
else

board[blank()]=3;
break;
case 7:
if(posswin(1)!=0)
board[posswin(1)]=3;
else if(posswin(2)!=0)
board[posswin(2)]=3;
else
board[blank()]=3;
break;
case 8:
if(posswin(2)!=0)
board[posswin(2)]=3;
else if(posswin(1)!=0)
board[posswin(1)]=3;
else
board[blank()]=3;
break;
case 9:
if(posswin(1)!=0)
board[posswin(1)]=3;
else if(posswin(2)!=0)
board[posswin(2)]=3;
else
board[blank()]=3;
break;
}
}
else
{
switch(turn)
{
case 1:
board[1]=5;
break;
case 2:
if(board[5]==2)
board[5]=5;
else
board[1]=5;
break;
case 3:
if(board[9]==2)
board[9]=5;
else
board[3]=5;
break;
case 4:
if(posswin(2)!=0)
board[posswin(2)]=5;
else

board[blank()]=5;
break;
case 5:
if(posswin(2)!=0)
board[posswin(2)]=5;
else if(posswin(1)!=0)
board[posswin(1)]=5;
else if(board[7]==2)
board[7]=5;
else
board[3]=5;
break;
case 6:
if(posswin(1)!=0)
board[posswin(1)]=5;
else if(posswin(2)!=0)
board[posswin(2)]=5;
else
board[blank()]=5;
break;
case 7:
if(posswin(2)!=0)
board[posswin(2)]=5;
else if(posswin(1)!=0)
board[posswin(1)]=5;
else
board[blank()]=5;
break;
case 8:
if(posswin(1)!=0)
board[posswin(1)]=5;
else if(posswin(2)!=0)
board[posswin(2)]=5;
else
board[blank()]=5;
break;
case 9:
if(posswin(2)!=0)
board[posswin(2)]=5;
else if(posswin(1)!=0)
board[posswin(1)]=5;
else
board[blank()]=5;
break;
}
}
dispboard();
//if(turn>3)
chckwin();
if(chckwin()==1){
cout<<"YOU LOST!!!!!!!!!"<<endl;

exit;}
else if(chckwin()==0){
cout<<"MATCH DRAWN"<<endl;
exit;}
else
usrturn();
}
void firstmov()
{
cout<<"\nPRESS 1 to move first else PRESS 2 : ";
cin>>player;
if(player==1)
usrturn();
else{
player--;
compturn();
}
}
void main()
{
clrscr();
boardinit();
dispboard();
firstmov();
getch();
}

S-ar putea să vă placă și