Bueno aqui yo hice el propio aunque aun me falto hacer el codigo para checar si hubi un ganador hehehe! xD
Solo puse que siempre regrese 0, pero ahi se ocupa solo checar la tabla y pues que recorra y ya si encuentra un ganador pues regresa el numero del jugador 1 si el ganador es el X o 2 si el ganador es el O. Por ahora pues debo salir so lo hice rapido, si tengo tiempo luego pues hago la parte que me falto si es que alguien no la hace por aca xP
Solo puse que siempre regrese 0, pero ahi se ocupa solo checar la tabla y pues que recorra y ya si encuentra un ganador pues regresa el numero del jugador 1 si el ganador es el X o 2 si el ganador es el O. Por ahora pues debo salir so lo hice rapido, si tengo tiempo luego pues hago la parte que me falto si es que alguien no la hace por aca xP
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
#define MAX_TURNO 9
#define COLUMNA 3
#define FILA 3
void MostrarTabla(char TABLA[FILA][COLUMNA]);
int ChecarGanador(char TABLA[FILA][COLUMNA]);
int main()
{
char TABLA[FILA][COLUMNA];
int turno = 1, fila, columna, ganador = 0;
bool bandera = false;
MostrarTabla(TABLA);
do{
ganador = ChecarGanador(TABLA);
if(ganador != 0)
{
cout << "El Ganador es el JUGADOR [ " << ganador << " ]" << endl;
break;
}
cout << "Turno del jugador: " << ((turno%2 == 0) ? "2" : "1") << endl;
do{
bandera = false;
do{
cout << "Selecciona Fila (1 - 3) : ";
cin >> fila;
}while(fila > 3 && fila < 1);
do{
cout << "Selecciona Columna (1 - 3) : ";
cin >> columna;
}while(columna > 3 && columna < 1);
if(TABLA[fila-1][columna-1] != -52)
{
bandera = true;
cout << "Esta posicion ya fue seleccionada" << endl;
}else
TABLA[fila-1][columna-1] = ((turno%2 == 0) ? 'O' : 'X');
}while(bandera);
MostrarTabla(TABLA);
turno++;
}while(MAX_TURNO >= turno);
if(ganador == 0)
{
cout << "Empate!! ;D" << endl;
}
cout << "Fin del Juego!" << endl;
cin.get();cin.get();
return 0;
}
void MostrarTabla(char TABLA[FILA][COLUMNA])
{
cout << endl << "----------" << endl;
for(int x = 0; x < FILA; x++)
{
for(int xx = 0; xx < COLUMNA; xx++)
{
cout << "| " << ((TABLA[x][xx] != -52) ? TABLA[x][xx] : ' ');
}
cout << "|" << endl;
}
cout << "----------" << endl;
}
int ChecarGanador(char TABLA[FILA][COLUMNA])
{
int p1 = 0, p2 = 0;
// Horizontal
for(int x = 0; x < FILA; x++)
{
for(int xx = 0; xx < COLUMNA; xx++)
{
if(TABLA[x][xx] == 'X')
p1++;
else if(TABLA[x][xx] == 'O')
p2++;
}
if(p1 == 3)
return 1;
else if(p2 == 3)
return 2;
else{
p1 = 0;
p2 = 0;
}
}
// Vertical
for(int x = 0; x < COLUMNA; x++)
{
for(int xx = 0; xx < FILA; xx++)
{
if(TABLA[xx][x] == 'X')
p1++;
else if(TABLA[xx][x] == 'O')
p2++;
}
if(p1 == 3)
return 1;
else if(p2 == 3)
return 2;
else{
p1 = 0;
p2 = 0;
}
}
// Diagonales
if(TABLA[0][0] == 'X' && TABLA[1][1] == 'X' && TABLA[2][2] == 'X')
return 1;
else if(TABLA[0][0] == 'O' && TABLA[1][1] == 'O' && TABLA[2][2] == 'O')
return 2;
else if(TABLA[0][2] == 'X' && TABLA[1][1] == 'X' && TABLA[2][0] == 'X')
return 1;
else if(TABLA[0][2] == 'O' && TABLA[1][1] == 'O' && TABLA[2][0] == 'O')
return 2;
return 0;
}