You are on page 1of 7

TIC TAC TOE APPLICATION USING AI

#include<stdio.h>
void showBoard(int board[10])
{
int i;
printf("Current board position\n\n");
for(i=1; i<=9; i++)
{
if(board[i] == 2)
printf(" .");
if(board[i] == 3)
printf(" X");
if(board[i] == 5)
printf(" O");
if((i % 3) == 0)
printf("\n\n");
}
}

int make2(int board[10])


{
int i;
if((board[1] == 2)&&(((board[2] == 3)&&(board[4] == 3))||((board[2] == 3)&&(board[6] ==
3))||((board[4] == 3)&& (board[8] == 3))||((board[6] == 3)&&(board[8] == 3))))
return(1);
for(i=2; i<=8; i=i+2)
{
if(board[i] == 2)
return(i);
}
return(0);
}

int posswin(int board[10], int value)


{
int i=0, j=0, temp=0;
for(i=0; i<=6; i=i+3)
{
temp = board[i+1]*board[i+2]*board[i+3];
if(temp == value)
{
for(j=1; j<=3; j++)
{
if(board[i+j] == 2)
return((i+j));
}
1
TIC TAC TOE APPLICATION USING AI

}
}

for(i=1; i<=3; i++)


{
temp = board[i]*board[i+3]*board[i+6];
if(temp == value)
{
for(j=0; j<=6; j=j+3)
{
if(board[i+j] == 2)
return(i+j);
}
}
}
temp = board[1]*board[5]*board[9];
if(temp == value)
{
for(i=1; i<=9; i=i+4)
{
if(board[i] == 2)
return(i);
}
}
temp = board[3]*board[5]*board[7];
if(temp == value)
{
for(i=3; i<=7; i=i+2)
{
if(board[i] == 2)
return(i);
}
}
return(0);
}

void go(int board[10], int n, int value)


{
board[n] = value;
showBoard(board);
}

2
TIC TAC TOE APPLICATION USING AI

int isGameOver(int board[10])


{
int i=0, temp=0;
for(i=0; i<=6; i=i+3)
{
temp = board[i+1]*board[i+2]*board[i+3];
if((temp == 27)||(temp == 125))
return(1);
}
for(i=1; i<=3; i++)
{
temp = board[i]*board[i+3]*board[i+6];
if((temp == 27)||(temp == 125))
return(1);
}
temp = board[1]*board[5]*board[9];
if((temp == 27)||(temp == 125))
return(1);
temp = board[3]*board[5]*board[7];
if((temp == 27)||(temp == 125))
return(1);

return(0);
}

void playTicTacToe(int board[10])


{
int move, i, turn = 2;
while(isGameOver(board) != 1)
{
printf("Your turn :: ");
scanf("%d", &move);
if(board[move] != 2)
{
printf("======= Invalid move =======\n");
showBoard(board);
continue;
}
go(board, move, 3);
if(isGameOver(board) == 1)
{
printf("\n======= YOU WIN =======\n");
break;
}
printf("Com’s turn -->\n");
3
TIC TAC TOE APPLICATION USING AI

if(turn == 2)
{
if(board[5] == 2)
go(board, 5, 5);
else
go(board, 1, 5);
}
if(turn == 4)
{
if(posswin(board, 18) != 0)
go(board, posswin(board, 18), 5);
else if((board[1] == 3)&&(board[8] == 3))
go(board, 6, 5);
else if((board[5] == 3)&&((board[3] == 3)||(board[7] == 3)||(board[9] == 3)))
{
if(board[3] == 2)
go(board, 3, 5);
else if(board[7] == 2)
go(board, 7, 5);
else
go(board, 9, 5);
}
else
go(board, make2(board), 5);
}
if(turn == 6)
{
if(posswin(board, 50) != 0)
go(board, posswin(board, 50), 5);
else if(posswin(board, 18) != 0)
go(board, posswin(board, 18), 5);
else
go(board, make2(board), 5);
}
if(turn == 8.0)
{
if(posswin(board, 50) != 0)
go(board, posswin(board, 50), 5);
else if(posswin(board, 18) != 0)
go(board, posswin(board, 18), 5);

4
TIC TAC TOE APPLICATION USING AI

else
{ for(i=1; i<=9; i++)
{ if(board[i] == 2)
{
go(board, i, 5);
break;
}
}
}
}
if(turn == 10)
{
printf("====== GAME IS DRAWN ======\n");
break;
}
if(isGameOver(board) == 1)
printf("\n======= COM WIN =======\n");
turn = turn + 2;
}
}

int main()
{
int board[10] = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2};
printf("Your symbol :: X\nCom’s symbol :: O\n");
showBoard(board);
playTicTacToe(board);
getch();
return 0;
}

5
TIC TAC TOE APPLICATION USING AI

OUTPUT FOR GAME DRAW:

OUTPUT FOR INVALID MOVE:


6
TIC TAC TOE APPLICATION USING AI

COMP WIN:

You might also like