#include #define N 3 //Dimensiones de la matriz using namespace std; void imprimir_tateti(char matriz[N][N]); void marcar(char matriz[N][N], int x, int y, char marca); char comprobar_ganador(char m[N][N]); void jugar(char tateti[N][N], char marca); int i = 0; char turno = 97; int main(){ bool error_jugada = false; bool jugada_acabada = false; char ficha[2] = {'X', 'O'}; int bandera = false; string jugada; char tateti[N][N] = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '} }; cout << "Bienvenidos al TA-TE-TI de Pedro del Bootcamp 004 de Roshka" << endl; while(i < 9){ jugar(tateti, ficha[bandera]); bandera = !bandera; char ganador = comprobar_ganador(tateti); if(ganador != ' '){ break; } if(i == 9){ cout << "> EMPATE" << endl; break; } } cout << "> FIN DEL JUEGO\n"; return 0; } //Función que imprime en consola el tablero del tateti //Recibe como parámetro las coordenadas nuevas, si las hay //y la ficha que debe colocar void imprimir_tateti(char matriz[N][N]){ printf("|---|---|---|\n"); printf("| %c | %c | %c |", matriz[0][0], matriz[0][1], matriz[0][2]); printf("\n|---|---|---|\n"); printf("| %c | %c | %c |", matriz[1][0], matriz[1][1], matriz[1][2]); printf("\n|---|---|---|\n"); printf("| %c | %c | %c |", matriz[2][0], matriz[2][1], matriz[2][2]); printf("\n|---|---|---|\n"); } void marcar(char matriz[N][N], int x, int y, char marca){ matriz[x][y] = marca; } char comprobar_ganador(char m[N][N]){ //string ganador; //Comprobacion de ganador por fila if(m[0][0] == m[0][1] and m[0][1] == m[0][2]){ if(m[0][0]!= ' '){ cout << "> GANADOR " << m[0][0]; cout << ": A1-A2-A3" << endl; } //string ganador = m[0][0]; return m[0][0]; } if(m[1][0] == m[1][1] and m[1][1] == m[1][2]){ if(m[1][0]!=' '){ cout << "> GANADOR " << m[1][0]; cout << ": B1-B2-B3"<< endl; } //string ganador = m[1][0]; return m[1][0]; } if(m[2][0] == m[2][1] and m[2][1] == m[2][2]){ if(m[2][0]!=' '){ cout << "> GANADOR" << m[2][0]; cout << ": C1-C2-C3" << endl; } //string ganador = m[2][0]; return m[2][0]; } //comprobacion de ganador por columna if(m[0][0] == m[1][0] and m[1][0] == m[2][0]){ if(m[0][0]!= ' '){ cout << "> GANADOR " << m[0][0]; cout << ": A1-B1-C1" << endl; } //string ganador = m[0][0]; return m[0][0]; } if(m[0][1] == m[1][1] and m[1][1] == m[2][1]){ if(m[0][1]!=' '){ cout << "> GANADOR " << m[0][1]; cout << ": A2-B2-C2" << endl; } //string ganador = m[0][1]; return m[0][0]; } if(m[0][2] == m[1][2] and m[1][2] == m[2][2]){ if(m[0][2]!=' '){ cout << "> GANADOR " << m[0][2]; cout << ": A3-B3-C3" << endl; } //string ganador = m[0][2]; return m[0][2]; } //Comprobacion de diagonales principales if(m[0][0] == m[1][1] and m[1][1] == m[2][2]){ if(m[0][0] != ' '){ cout << "> GANADOR " << m[0][0]; cout << ": A1-B2-C3" << endl; } //string ganador = m[0][0]; return m[0][0]; } if(m[0][2] == m[1][1] and m[1][1] == m[2][0]){ if(m[2][0]!=' '){ cout << "> GANADOR " << m[2][0]; cout << ": A3-B2-C1"<< endl; } //string ganador = m[2][0]; return m[2][0]; } return ' '; } void jugar(char tateti[N][N], char marca ){ string jugada; bool error_jugada=false; do{ cout << turno <<". " << marca <<" -> Ingrese jugada: "; cin >> jugada; int a = jugada[0]; int b = jugada[1]; a = a-64; //Para mapear a numeros del tablero b = b-48; //Para lo mismo de arriba xd //Comprobación de la entrada if((a<1 or a>3) and (b<1 or b>3)){ error_jugada = true; cout <<"> ERR: Jugada Inválida - Fila y Columna Inválidas" << endl; }else if(a<1 or a>3){ error_jugada = true; cout <<"> ERR: Jugada Inválida - Fila Inválida" << endl; } else if(b<1 or b>3){ error_jugada = true; cout << "> ERR: Jugada Inválida - Columna Inválida" << endl; }else if(tateti[a-1][b-1] != ' '){ cout << "> ERR: Jugada Inválida - Casilla Ocupada" << endl; error_jugada = true; } else{ error_jugada = false; marcar(tateti, a-1, b-1, marca); cout << "> OK" << endl; imprimir_tateti(tateti); i++; turno++; } }while(error_jugada); }