#include <iostream>
#include <cstdlib>
using namespace std;
string vacio[3][3] = {"-","-","-","-","-","-","-","-","-"};
int turnos = 0;
int i;
int j;
int k;
int info=0;
int info2=0;
int x;
int y;
int gana=0;
int replay=0;
void tablerolimpio()
{
for (i=0; i <3; i++)
{
vacio
- = "-";
for (j=0; j<3;j++)
{
vacio[j][1] = "-";
}
for(k=0; k<3; k++)
{
vacio[k][2] = "-";
}
}
//aqui la evaluacion de quien gana
void ganador()
{
if((gana==0)or (gana==3))
{
for(int b=0; b <3;b++)
if ((vacio[0]=="X")&&(vacio[1]=="X")&&(vacio[2]=="X"))
{
gana=1;
}
for(int b=0; b <3; b++)
if ((vacio
- =="X")&&(vacio[1]=="X")&&(vacio[2]=="X"))
gana=1;
}
if ((vacio[0][0]=="X")&&(vacio[1][1]=="X")&&(vacio[2][2]=="X"))
{
gana=1;
}
if ((vacio[0][2]=="X")&&(vacio[1][1]=="X")&&(vacio[2][0]=="X"))
{
gana=1;
}
for(int z=0; z <3;z++)
if ((vacio[0][z]=="O")&&(vacio[1][z]=="O")&&(vacio[2][z]=="O"))
{
gana=2;
}
for(int z=0; z <3; z++)
if ((vacio[z][0]=="O")&&(vacio[z][1]=="O")&&(vacio[z][2]=="O"))
{
gana=2;
}
if ((vacio[0][0]=="O")&&(vacio[1][1]=="O")&&(vacio[2][2]=="O"))
{
gana=2;
}
if ((vacio[0][2]=="O")&&(vacio[1][1]=="O")&&(vacio[2][0]=="O"))
{
gana=2;
}
}
}
// este muestra el tablero
void tablero()
{
cout << "esto es un juego de triki" << endl;
cout << "__________________________" << endl;
cout << "" << endl;
cout << "para jugar debes de ingresar un numero " << endl;
cout << "entre 1 y 9, la primera ubicacion es 1 " << endl;
cout << "y se cuenta hacia la derecha "<< endl;
cout << endl;
for (i=0; i <3; i++)
{
cout << "|" << vacio
- << "|" << "\t";
cout << endl;
for (j=0; j<3;j++)
{
cout << "|" << vacio[j][1] << "|" << "\t";
}
cout << endl;
for(k=0; k<3; k++)
{
cout << "|" << vacio[k][2]<< "|" <<"\t" ;
}
cout << endl;
}
//
void turno1(int x)
{
if ((x>9)or(x<1))
{
cout << "error debes ingresar un numero entre 1 y 9"<< endl;
cout <<"porfavor vuelve a intenarlo"<< endl;
info2=0;
turnos--;
cin >> x;
turno1(x);
}
else do
{
for(int a=1; a <4; a++)
if (x == a)
{
if((vacio[a-1][0] == "-")&&(info2==0))
{
vacio[a-1][0] = "X";
}
else if ((vacio[a-1][0]=="O")or(vacio[a-1][0] == "X"))
{
info2=1;
}
}
for(int a=4; a<7; a++)
if (x == a)
{
if((vacio[a-4][1] == "-")&&(info2==0))
{
vacio[a-4][1] = "X";
}
else if ((vacio[a-4][1]=="O")or(vacio[a-4][1] == "X"))
{
info2=1;
}
}
for(int a=7; a<10; a++)
if (x == a)
{
if ((vacio[a-7][2] == "-")&&(info2==0))
{
vacio[a-7][2] = "X";
}
else if ((vacio[a-7][2]=="O")or(vacio[a-7][2] == "X"))
{
info2=1;
}
}
}while(!(x<10 && x>=1));
system("cls");
//system("clear"); //linux
turnos++; // esta variable sirve de control de turnos
if (info2==1)
{
system("cls");
//system("clear");
tablero();
cout << endl;
cout <<"Jugador X"<< endl;
cout <<"esta poscision ya se encuentra ocupada"<< endl;
cout <<"porfavor vuelve a intenarlo"<< endl;
info2=0;
turnos--;
cin >> x;
turno1(x);
}
else
tablero();
}
// esta es la funcion la cual recibe la jugada del jugador 2
void turno2(int y)
{
if ((y>9)or(y<1)) // aqui se verfica el rango del valor que se debe ingresar
{
cout << "error debes ingresar un numero entre 1 y 9"<< endl;
cout <<"porfavor vuelve a intenarlo"<< endl;
info=0;
turnos--;//para evitar el error de incremento de los turnos
cin >> y;
turno2(y);
}
else do
{
for(int a=1; a <4; a++)
{
if (y == a)
{
if((vacio[a-1][0] == "-") &&(info == 0))
{
vacio[a-1][0] = "O";
}
else if((vacio[a-1][0] == "X")or(vacio[a-1][0] == "O"))
{
info = 1;
}
}
}
for(int a=4; a<7; a++)
{
if (y == a)
{
if((vacio[a-4][1] == "-")&&(info == 0))
{
vacio[a-4][1] = "O";
}
else if ((vacio[a-4][1] == "X")or(vacio[a-4][1] == "O"))
{
info = 1;
}
}
}
for(int a=7; a<10; a++)
{
if (y == a)
{
if((vacio[a-7][2] == "-")&&(info == 0))
{
vacio[a-7][2] = "O";
}
else if ((vacio[a-7][2] == "X")or(vacio[a-7][2] == "O"))
{
info = 1;
}
}
}
}
while(!(y<10 && y>=1));
system("cls");
// system("clear") // para linux
turnos++;
if (info == 1)
{
system("cls");
tablero();
cout << endl;
cout << "Jugador O" << endl;
cout <<"esta poscision ya se encuentra ocupada"<< endl;
cout <<"porfavor vuelve a intenarlo"<< endl;
info=0;
turnos--;
cin >> y;
turno2(y);
}
else
tablero();
}
void limpiar()
{
turnos=0;
gana=0;
tablerolimpio();
}
//***********************************************
//FUNCION PRINCIPAL
int main()
{
rejuego: //esta variable es para comenzar de nuevo el juego
while (turnos < 9)
{
system("cls");
//system("clear") //para linux
tablero();
cout << "" << endl;
cout << "Turno del jugador 1" << endl;
cout << "porfavor introduce la ubicacion" << endl;
cin >> x;
cin.get();
turno1(x);
ganador();// aqui se evalua el tablero para saber quien gana
if(gana==(1))
{
cout <<"GANA EL JUGADOR X"<< endl;
cin.get();
cout << "Juego terminado" << endl;
cin.get();
cout << "desea jugar de nuevo" << endl;
cout << "1 - SI " << endl;
cout << "2 - NO " << endl;
cin >> replay;
if(replay==1)
{
limpiar(); // esta funcio reinicia las variables de verificacion
goto rejuego;
}
else if (replay ==2)
{
return 0;
}
return 0;
}
if (turnos<=8) // este evalua si ya se terminaron los turnos
{
cout << "" <<endl;
cout << "ahora es el turno del juador O"<< endl;
cout << "introduce la posicion " << endl;
cin >> y;
cin.get();
turno2(y);
ganador();
if (gana==(2))
{
cout << endl;
cout << "gana el jugador O"<< endl;
cin.get();
cout << "juego terminado" << endl;
cin.get();
cout << "desea jugar de nuevo" << endl;
cout << "1 - SI " << endl;
cout << "2 - NO " << endl;
cin >> replay;
if(replay==1)
{
limpiar();// esta funcio reinicia las variables de verificacion
goto rejuego;
}
else if (replay ==2)
{
return 0;
}
return 0;
}
}
ganador();
}
if(gana==0)
{
cout << "NADIE GANA" << endl;
cout << "juego terminado"<< endl;
cin.get();
cout << "desea jugar de nuevo" << endl;
cout << "1 - SI " << endl;
cout << "2 - NO " << endl;
cin >> replay;
if(replay==1)
{
limpiar(); // esta funcio reinicia las variables de verificacion
goto rejuego;
}
else if (replay ==2)
{
cout << "fin" << endl;
cin.get();
return 0;
}
return 0;
}
cout << "fin" << endl;
cin.get();
return 0;
}