Click here to Skip to main content
15,949,686 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
I downloaded your source code and when i try to compile this ,it give me error about conio2h no such file or directory.I have the all files included conio2,h in same folder as i run the main file.I am not found any solution of this,Any help would be appreciate.
given below is my code:
/*
Tic Tac Toe game - tictacto.c
Author : Shine Jacob(enot)
Email : enot06@gmail.com

This is a simple Tic Tac Toe game. I have used conio2.h that is not a part of
the C standard and not available in Dev-C++ by default. You can download it
from http://conio.sourceforge.net/ or if you wish to compile this program in
Turbo C++ IDE then replace conio2.h with conio.h.

Please let me know if you find and error or if you have any questions.

I have also attached libconio.a and conio2.h

Enjoy!
*/


#include <stdio.h>
#include <conio2.h>



#define UPARROW 72
#define DOWNARROW 80
#define LEFTARROW 75
#define RIGHTARROW 77
#define ENTER 13
#define QUIT 'q'


int _x,_y; //To track the position of the Tic Tac Toe frame being drawn


//Function to show the Tic Tac Toe Frame
void showframe(int posx, int posy)
{

int hr=196, vr=179; // These are ascii character which display the lines
int crossbr=197; // Another ascii character
int x=posx, y=posy;
int i,j;

gotoxy(35,4); cprintf("TIC TAC TOE");
gotoxy(35,5); for(i=0;i<11;i++) cprintf("%c",223);


for(i=0;i<2;i++)
{
for(j=1;j<=11;j++)
{
gotoxy(x,y);
printf("%c",hr);
x++;
}
x=posx; y+=2;
}
x=posx+3; y=posy-1;

for(i=0;i<2;i++)
{

for(j=1;j<=5;j++)
{
gotoxy(x,y);
printf("%c",vr);
y++;
}
x+=4;y=posy-1;
}


x=posx+3; y=posy;
gotoxy(x,y);
printf("%c",crossbr);

x=posx+7; y=posy;
gotoxy(x,y);
printf("%c",crossbr);

x=posx+3; y=posy+2;
gotoxy(x,y);
printf("%c",crossbr);

x=posx+7; y=posy+2;
gotoxy(x,y);
printf("%c",crossbr);

}


//Function to fill random values into the array
void fillrandom(char arr[3][3])
{
int i=0,j=0;
char ch='A';

for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
{ arr[i][j] = ch; ch++; }

}
}


//Function to show the character in the specified box
void showbox(char ch, int box)
{

switch(box)
{
case 1 : gotoxy(_x+1,_y-1); printf("%c",ch); break; //1st box
case 2 : gotoxy(_x+5,_y-1); printf("%c",ch); break; //2nd box
case 3 : gotoxy(_x+9,_y-1); printf("%c",ch); break; //3rd box
case 4 : gotoxy(_x+1,_y+1); printf("%c",ch); break; //4th box
case 5 : gotoxy(_x+5,_y+1); printf("%c",ch); break; //5th box
case 6 : gotoxy(_x+9,_y+1); printf("%c",ch); break; //6th box
case 7 : gotoxy(_x+1,_y+3); printf("%c",ch); break; //7th box
case 8 : gotoxy(_x+5,_y+3); printf("%c",ch); break; //8th box
case 9 : gotoxy(_x+9,_y+3); printf("%c",ch); break; //9th box
}

}


//Function to insert the specified character into the array
void putintobox(char arr[3][3], char ch, int box)
{
switch(box)
{

case 1 : if(arr[0][0] != 'X' && arr[0][0]!= 'O')
{ arr[0][0] = ch;
showbox(ch,1);
}
break;

case 2 : if(arr[0][1] != 'X' && arr[0][1]!= 'O')
{ arr[0][1] = ch;
showbox(ch,2);
}
break;

case 3 : if(arr[0][2] != 'X' && arr[0][2]!= 'O')
{ arr[0][2] = ch;
showbox(ch,3);
}
break;

case 4 : if(arr[1][0] != 'X' && arr[1][0]!= 'O')
{ arr[1][0] = ch;
showbox(ch,4);
}
break;

case 5 : if(arr[1][1] != 'X' && arr[1][1]!= 'O')
{ arr[1][1] = ch;
showbox(ch,5);
}
break;

case 6 : if(arr[1][2] != 'X' && arr[1][2]!= 'O')
{ arr[1][2] = ch;
showbox(ch,6);
}
break;

case 7 : if(arr[2][0] != 'X' && arr[2][0]!= 'O')
{ arr[2][0] = ch;
showbox(ch,7);
}
break;

case 8 : if(arr[2][1] != 'X' && arr[2][1]!= 'O')
{ arr[2][1] = ch;
showbox(ch,8);
}
break;

case 9 : if(arr[2][2] != 'X' && arr[2][2]!= 'O')
{ arr[2][2] = ch;
showbox(ch,9);
}
break;
}//end of switch
}


//Function to show the curson on the box specified
//uses the position to check the coordinates
void gotobox(int box)
{
switch(box)
{
case 1 : gotoxy(_x+1,_y-1); break;
case 2 : gotoxy(_x+5,_y-1); break;
case 3 : gotoxy(_x+9,_y-1); break;
case 4 : gotoxy(_x+1,_y+1); break;
case 5 : gotoxy(_x+5,_y+1); break; //5th box
case 6 : gotoxy(_x+9,_y+1); break; //6th box
case 7 : gotoxy(_x+1,_y+3); break; //7th box
case 8 : gotoxy(_x+5,_y+3); break; //8th box
case 9 : gotoxy(_x+9,_y+3); break;

}
}


//Function to handle the navigation
int navigate(char arr[3][3], int box, int player, int key)
{
switch(key)
{
case UPARROW : if( (box!=1) || (box!=2) || (box!=3) )
{ box-=3; if(box<1) box = 1; gotobox(box); }
break;

case DOWNARROW : if( (box!=7) || (box!=8) || (box!=9) )
{ box+=3; if(box>9) box = 9; gotobox(box); }
break;

case LEFTARROW : if( (box!=1) || (box!=4) || (box!=7) )
{ box--; if(box<1) box = 1; gotobox(box); }
break;

case RIGHTARROW : if( (box!=3) || (box!=6) || (box!=9) )
{ box++; if(box>9) box = 9; gotobox(box); }
break;

case ENTER : if(player == 0)
putintobox(arr,'O',box);
else if(player == 1)
putintobox(arr,'X',box);
break;
}//end of switch(key)

return box;
}

int checkforwin(char arr[3][3])
{
int w=0;

/* 0,0 0,1 0,2
1,0 1,1 1,2
2,0 2,1 2,2
*/
//rows
if((arr[0][0] == arr[0][1]) && (arr[0][1] == arr[0][2])) w = 1;
else if((arr[1][0] == arr[1][1]) && (arr[1][1] == arr[1][2])) w = 1;
else if((arr[2][0] == arr[2][1]) && (arr[2][1] == arr[2][2])) w = 1;

//coloums
else if((arr[0][0] == arr[1][0]) && (arr[1][0] == arr[2][0])) w = 1;
else if((arr[0][1] == arr[1][1]) && (arr[1][1] == arr[2][1])) w = 1;
else if((arr[0][2] == arr[1][2]) && (arr[1][2] == arr[2][2])) w = 1;

//diagonal
else if((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2])) w = 1;
else if((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0])) w = 1;

return w;
}


int boxesleft(char a[3][3])
{
int i,j,boxesleft=9;

for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
{ if((a[i][j] == 'X') ||(a[i][j] == 'O'))
boxesleft--;
}
}

return boxesleft;
}


int main()
{
char arr[3][3];
char player[3][30],O_OR_X[2],ch;
int x,y,turns,chance,enter,box,win,quit,winner;
int movesfinished = 0;

O_OR_X[0] = 'O'; O_OR_X[1] = 'X';
do{

textbackground(7); textcolor(0); //Set the specified background and textcolor
clrscr(); //Clears the screen - defined in conio.h(conio2.h)

_x = 35; _y = 12;
x = _x; y = _y;

showframe(x,y); //Draws the frame of Tic Tac Toe
showbox('O',1); //Displays O in box 1
showbox('X',2); //Displays X in box 2
showbox('O',3); //Displays O in box 3
showbox('X',4); //Displays X in box 4
showbox('O',5); //Displays O in box 5
showbox('X',6); //Displays X in box 6
showbox('O',7); //Displays O in box 7
showbox('X',8); //Displays X in box 8
showbox('O',9); //Displays O in box 9

gotoxy(2,18);
printf("Welcome to Tic Tac Toe");
printf("\n Rules are simple. Navigate to the box with arrow keys [%c %c %c %c] and hit enter.",30,31,17,16);
printf("\n If you try to overwrite a box, then your chance will be passed on.");
fillrandom(arr); //Filling random character to the array

printf("\n Player 1, enter your name: "); gets(player[0]); //Get player1's name
printf(" Player 2, enter your name: "); gets(player[1]); //Get player2's name

printf("\n %s, you have been given O %s, you have been given X",player[0],player[1]);
printf("\n Lets begin ( press any key )"); getch();


turns = 0; //to count the total number of turns
chance = 0; //to check whose chance is it
enter = 0; //variable to track if Enter was pressed
box = 1; //Track the current box number
win = 0; //Check if someone won
quit = 0; //Check if player wants to quit
winner = 10; //To see who is the winner




clrscr();
showframe(x,y);

while((!win))
{


gotoxy(2,20);
printf("%s(%c), its your chance. ",player[chance],O_OR_X[chance]);

while(!enter && !quit)
{
if(kbhit())
{
ch = getch();

switch(ch)
{
case UPARROW : box=navigate(arr,box,chance,UPARROW);
break;
case DOWNARROW : box=navigate(arr,box,chance,DOWNARROW);
break;
case LEFTARROW : box=navigate(arr,box,chance,LEFTARROW);
break;
case RIGHTARROW : box=navigate(arr,box,chance,RIGHTARROW);
break;
case ENTER : box=navigate(arr,box,chance,ENTER);
enter=1; break;
case QUIT : quit = 1; break;
}//end of switch(ch)
}//end of if(kbhit())

}//end of while

if(quit) break; //Quits the program

if(chance == 0)
{ putintobox(arr,box,'O'); box = 1; } //player1
else if(chance == 1)
{ putintobox(arr,box,'X'); box = 1; } //player2

if( (win = checkforwin(arr)) == 1)
winner = chance;

if(chance == 1) chance = 0;
else chance = 1;

enter = 0;
turns++;

if(!boxesleft(arr))
movesfinished = 1;

//If its a draw
if((!win) && (turns==9) && (movesfinished))
break;

}//end of while(win)

if(win)
{ gotoxy(22,22);
textbackground(4); textcolor(15);

if(winner == 0)
cprintf(" Congratulations %s, you win the game! ",player[0]);

else
cprintf(" Congratulations %s, you win the game! ",player[1]);

}

else if(quit)
{
gotoxy(10,22);
textbackground(4); textcolor(15);
cprintf(" Ok, lets play again sometime. See you later. Press any key to exit.\n\n");
getch();
return 1;
}
else if((!win) && (turns==9) && (movesfinished))
{ gotoxy(22,22);
printf("No one wins. Its a draw.");
}

printf("\n\n Do you want to play again? (Y/N): "); ch = getch();


}while(ch=='Y' || ch=='y'); //playagain

return 0;

}
Posted
Comments
Thanks7872 12-Dec-14 7:34am    
Use 'Have question or comment' at bottom of the Article. Remove this post.
Member 11305429 15-Dec-14 0:18am    
After the include the conio2.h, I got the followings errors
My project folder name is tata in D DRIVE and I put all code there, after that these error are get when I try to run the code code blocks
D:\tata\TICTACTO.o:TICTACTO.C|| undefined reference to `gotoxy'|
D:\tata\TICTACTO.o:TICTACTO.C|| more undefined references to `gotoxy' follow|
D:\tata\TICTACTO.o:TICTACTO.C|| undefined reference to `textbackground'|
D:\tata\TICTACTO.o:TICTACTO.C|| undefined reference to `textcolor'|
D:\tata\TICTACTO.o:TICTACTO.C|| undefined reference to `clrscr'|


1 solution

insert at the top of your files
C++
#include "conio2.h"


The file should be in your project directory or project search path (include)

Maybe you only missed a "."
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900