0% found this document useful (0 votes)
496 views14 pages

Tic Tac Toe C++

This program is the source code of tic tac toe game having both modes of Player vs Player and Player vs Artificial Intelligence . this code is in c++..

Uploaded by

DipanshuAgarwal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
496 views14 pages

Tic Tac Toe C++

This program is the source code of tic tac toe game having both modes of Player vs Player and Player vs Artificial Intelligence . this code is in c++..

Uploaded by

DipanshuAgarwal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

#include<iostream.

h>
#include<conio.h>
#include<dos.h>
#include<process.h>
#include<stdlib.h>
#include<graphics.h>

char square[10] = {'0','1','2','3','4','5','6','7','8','9'};


int checkwin();
void board();
int m;

void pvp()
{
int player = 1,i,choice;
char mark;
clrscr();
do
{
board();
player=(player%2)?1:2;
cout << "Player " << player << ", enter a number: ";
cin >> choice;
mark=(player == 1) ? 'X' : 'O';
if (choice == 1 && square[1] == '1')
square[1] = mark;

else if (choice == 2 && square[2] == '2')


square[2] = mark;
else if (choice == 3 && square[3] == '3')
square[3] = mark;
else if (choice == 4 && square[4] == '4')
square[4] = mark;
else if (choice == 5 && square[5] == '5')
square[5] = mark;
else if (choice == 6 && square[6] == '6')
square[6] = mark;
else if (choice == 7 && square[7] == '7')
square[7] = mark;
else if (choice == 8 && square[8] == '8')
square[8] = mark;
else if (choice == 9 && square[9] == '9')
square[9] = mark;
else
{
cout<<"Invalid move ";
player--;
getch();
}
i=checkwin();
player++;
}while(i==-1);
board();

if(i==1)
{
cout<<"==>\aPlayer "<<--player<<" win ";
}
else
{
cout<<"==>\aGame draw";
}
getch();
}
//-------------------------------------------------------------

void pvc()
{
int player = 1,i,a,choice;
char mark;
clrscr();
do
{
board();
player=(player%2)?1:2;
if(player==1)
{
mark='X';
cout << "Player enter a number: ";
cin >> choice;

if (choice == 1 && square[1] == '1')


square[1] = mark;
else if (choice == 2 && square[2] == '2')
square[2] = mark;
else if (choice == 3 && square[3] == '3')
square[3] = mark;
else if (choice == 4 && square[4] == '4')
square[4] = mark;
else if (choice == 5 && square[5] == '5')
square[5] = mark;
else if (choice == 6 && square[6] == '6')
square[6] = mark;
else if (choice == 7 && square[7] == '7')
square[7] = mark;
else if (choice == 8 && square[8] == '8')
square[8] = mark;
else if (choice == 9 && square[9] == '9')
square[9] = mark;
else
{
cout<<"Invalid move ";
player--;
getch();
}
}
else

{
board();
mark='O';
a=0;
if(a==0)
{
choice=rand()%9;
if (choice == 1 && square[1] == '1')
{
square[1] = mark;
break;
}
else if (choice == 2 && square[2] == '2')
{
square[2] = mark;
break;
}
else if (choice == 3 && square[3] == '3')
{
square[3] = mark;
break;
}
else if (choice == 4 && square[4] == '4'){
square[4] = mark;
break;
}

else if (choice == 5 && square[5] == '5'){


square[5] = mark;
break;
}
else if (choice == 6 && square[6] == '6'){
square[6] = mark;
break;
}
else if (choice == 7 && square[7] == '7'){
square[7] = mark;
break;
}
else if (choice == 8 && square[8] == '8'){
square[8] = mark;
break;
}
else if (choice == 9 && square[9] == '9'){
square[9] = mark;
break;
}
}
else
{
if(square[1]==square[2])
{ square[3]=mark; break; }
else if(square[1]==square[3])

{square[2]=mark; break;}
else if(square[2]==square[3])
{square[1]=mark; break;}
if(square[4]==square[5])
{square[6]=mark; break;}
else if(square[4]==square[6])
{square[5]=mark; break;}
else if(square[5]==square[6])
{square[4]=mark; break;}
if(square[7]==square[8])
{square[9]=mark; break;}
else if(square[7]==square[9])
{square[8]=mark; break;}
else if(square[8]==square[9])
{square[7]=mark; break;}
if(square[1]==square[4])
{square[7]=mark; break;}
else if(square[1]==square[7])
{square[4]=mark; break;}
else if(square[4]==square[7])
{square[1]=mark; break;}
if(square[5]==square[2])
{square[8]=mark; break;}
else if(square[5]==square[8])
{square[2]=mark; break;}
else if(square[2]==square[8])

{square[5]=mark; break;}
if(square[6]==square[9])
{square[3]=mark; break;}
else if(square[9]==square[3])
{square[6]=mark; break;}
else if(square[6]==square[3])
{square[9]=mark; break;}
if(square[1]==square[5])
{square[9]=mark; break;}
else if(square[1]==square[9])
{square[5]=mark; break;}
else if(square[5]==square[9])
{square[1]=mark; break;}
if(square[5]==square[7])
{square[3]=mark; break;}
else if(square[7]==square[3])
{square[5]=mark; break;}
else if(square[5]==square[3])
{square[7]=mark; break;}
}
}
i=checkwin();
player++;
}while(i==-1);

board();
if(i==1)
{
cout<<"==>\aPlayer "<<--player<<" win ";
}
else
{
cout<<"==>\aGame draw";
}
getch();
}

/*********************************************
FUNCTION TO RETURN GAME STATUS
1 FOR GAME IS OVER WITH RESULT
-1 FOR GAME IS IN PROGRESS
O GAME IS OVER AND NO RESULT
**********************************************/

int checkwin()
{
if (square[1] == square[2] && square[2] == square[3])
return 1;
else if (square[4] == square[5] && square[5] == square[6])

return 1;
else if (square[7] == square[8] && square[8] == square[9])
return 1;
else if (square[1] == square[4] && square[4] == square[7])
return 1;
else if (square[2] == square[5] && square[5] == square[8])
return 1;
else if (square[3] == square[6] && square[6] == square[9])
return 1;
else if (square[1] == square[5] && square[5] == square[9])
return 1;
else if (square[3] == square[5] && square[5] == square[7])
return 1;
else if (square[1] != '1' && square[2] != '2' && square[3] != '3' &&
square[4] != '4' && square[5] != '5' && square[6] != '6' &&
square[7] != '7' && square[8] != '8' && square[9] != '9')
return 0;
else
return -1;
}

/*******************************************************************
FUNCTION TO DRAW BOARD OF TIC TAC TOE WITH PLAYERS MARK
********************************************************************/

void board()
{
clrscr();
cout << "\n\n\tTic Tac Toe\n\n";
if(m==1)
cout << "Player 1 (X) - Player 2 (O)" << endl << endl;
else
cout << "Player 1 (X) - COMPUTER (O)" << endl << endl;
cout << endl;
cout << "

" << endl;

cout << " " << square[1] << " | " << square[2] << " | " << square[3] <<
endl;
cout << "_____|_____|_____" << endl;
cout << "

" << endl;

cout << " " << square[4] << " | " << square[5] << " | " << square[6] <<
endl;
cout << "_____|_____|_____" << endl;
cout << "

" << endl;

cout << " " << square[7] << " | " << square[8] << " | " << square[9] <<
endl;
cout << "

" << endl << endl;

/*******************************************************************
MAIN FUNCTION INITIALIZED
********************************************************************/

void main()
{
r:
clrscr();
gotoxy(23,3);
cout<<"TIC-TAC-TOE GAME";
gotoxy(13,4);
cout<<"DESIGNED AND MARKETED BY DIPANSHU AGARWAL";
gotoxy(10,8);
cout<<"1. PLAYER VS PLAYER";
gotoxy(10,9);
cout<<"2. PLAYER VS COMPUTER";
gotoxy(10,10);
cout<<"3. EXIT";
gotoxy(23,15);
cout<<"ENTER YOUR CHOICE : - : ";
cin>>m;
cout<<"\n\n\n\t\t\t\tPlease wait while loading\n\n";
char a=177, b=219;
cout<<"\t\t\t\t";
for (int i=0;i<=15;i++)
cout<<a;
cout<<"\r";
cout<<"\t\t\t\t";
for (i=0;i<=15;i++)
{

cout<<b;
delay(200);
}

switch(m)
{
case 1:
pvp();
break;
case 2:
pvc();
break;
case 3:
exit(0);
}
square[0]='o';
square[1]='1';
square[2]='2';
square[3]='3';
square[4]='4';
square[5]='5';
square[6]='6';
square[7]='7';
square[8]='8';
square[9]='9';
goto r;

You might also like