diff --git b/README.md a/README.md new file mode 100644 index 0000000..ca8cc3b --- /dev/null +++ a/README.md @@ -0,0 +1,9 @@ +Instrucciones +Por consola +-Abrir la consola. +-Ubicarse donde se encuentra el archivo .c +-Ejecutar el comando gcc nombreArchivo(ta-te-ti.c) para compilar +-Ejecutar el comando ./a.out para ejecutar el archivo + +Observaciones +-El programa no esta terminado. diff --git b/ta-te-ti.c a/ta-te-ti.c new file mode 100644 index 0000000..cf41485 --- /dev/null +++ a/ta-te-ti.c @@ -0,0 +1,220 @@ +#include +#include + +#define CRUZ 'X' +#define CARA 'O' +#define VACIO ' ' +#define TRES 3 +#define ABC "ABC" + +void imprimirCabecera(); +void imprimirTabla(char [][TRES]); +char validarJugada(char [][TRES], char, int, char); +int fila(char [][TRES]); +int columna(char [][TRES]); +int diagonalPrincipal(char [][TRES]); +int diagonalSecundaria(char [][TRES]); +char turnoVal(char); + +int main(void){ + + + char matriz[TRES][TRES] = {{VACIO, VACIO, VACIO},{VACIO, VACIO, VACIO},{VACIO, VACIO, VACIO}}; + char ganador = VACIO; + + imprimirCabecera(); + imprimirTabla(matriz); + ganador = validarJugada(matriz, CRUZ, 0, VACIO); + if(ganador == VACIO){ + printf("\nEMPATE\nFIN DEL JUEGO\n"); + }else if(ganador == CRUZ){ + printf("\nGANADOR %c: \nFIN DEL JUEGO\n", ganador); + }else if(ganador == CARA){ + printf("\nGANADOR %c: \nFIN DEL JUEGO\n", ganador); + } + + return 0; +} + +/*IMPRIME LA CABECERA*/ +void imprimirCabecera(){ + + printf("\n Bienvenidos al TA-TE-TI de del BootCamp 008 de Roshka.\n"); + +} + +/*IMPRIME LA TABLA DE JUEGO*/ +void imprimirTabla(char mat[][TRES]){ + + printf("\n\t 1 2 3\n"); + for(int i = 0; i < TRES; i++){ + + printf("\n%c\t %c | %c | %c \n", ABC[i], mat[i][0], mat[i][1], mat[i][2]); + if(i < 2) { + printf("\t---|---|---"); + } + } + printf("\n"); + } + + +/*VALIDACIÓN PARCIAL DE LAS JUGADAS*/ +char validarJugada(char mat[][TRES], char turno, int contador, char ganador){ + char jugada[2]; + if((contador >= TRES*TRES) || (ganador != VACIO)){ + return ganador; + }else{ + printf("%c -> Ingrese jugada: ", turno); + scanf("%s", jugada); + + if( strcmp(jugada, "A1") == 0) + if(mat[0][0] == VACIO){ + mat[0][0] = turno; + contador++; + }else{ + printf("\nERR: Jugada Inválida - Casilla Ocupada\n"); + } + else if( strcmp(jugada, "A2") == 0 ) + if(mat[0][1] == VACIO){ + mat[0][1] = turno; + contador++; + }else{ + printf("ERR: Jugada Inválida - Casilla Ocupada"); + + } + + else if( strcmp(jugada, "A3") == 0 ) + if(mat[0][2] == VACIO){ + mat[0][2] = turno; + contador++; + }else{ + printf("ERR: Jugada Inválida - Casilla Ocupada"); + + } + else if( strcmp(jugada, "B1") == 0 ) + if(mat[1][0] == VACIO){ + mat[1][0] = turno; + contador++; + }else{ + printf("ERR: Jugada Inválida - Casilla Ocupada"); + + } + else if( strcmp(jugada, "B2") == 0 ) + if(mat[1][1] == VACIO){ + mat[1][1] = turno; + contador++; + }else{ + printf("ERR: Jugada Inválida - Casilla Ocupada"); + } + else if( strcmp(jugada, "B3") == 0 ) + if(mat[1][2] == VACIO){ + mat[1][2] = turno; + contador++; + }else{ + printf("ERR: Jugada Inválida - Casilla Ocupada"); + + } + else if( strcmp(jugada, "C1") == 0 ) + if(mat[2][0] == VACIO){ + mat[2][0] = turno; + contador++; + }else{ + printf("ERR: Jugada Inválida - Casilla Ocupada"); + + } + else if( strcmp(jugada, "C2") == 0 ) + if(mat[2][1] == VACIO){ + mat[2][1] = turno; + contador++; + }else{ + printf("ERR: Jugada Inválida - Casilla Ocupada"); + + } + else if( strcmp(jugada, "C3") == 0 ) + if(mat[2][2] == VACIO){ + mat[2][2] = turno; + contador++; + }else{ + printf("ERR: Jugada Inválida - Casilla Ocupada"); + + } + imprimirTabla(mat); + if(fila(mat)==0 || columna(mat)==0 || diagonalPrincipal(mat)==0 || diagonalSecundaria(mat)==0){ + ganador = turno; + } + turno = turnoVal(turno); + validarJugada(mat, turno, contador++, ganador); + } +} + +//Cambia turno de jugador +char turnoVal(char t){ + if(t == CRUZ){ + return CARA; + }else{ + return CRUZ; + } +} + + + +int fila(char mat[][TRES]){ + int bandera = 0; + for(int fila = 0; fila < TRES; fila++){ + for(int columna = 0; columna < TRES-1; columna++){ + if( mat[fila][columna] == mat[fila][columna + 1] ) { + bandera = 1; + }else{ + bandera = 0; + } + } + } + return bandera; +} + + +int columna(char mat[][TRES]){ + int bandera = 0; + for(int fila = 0; fila < TRES - 1; fila++){ + for(int columna = 0; columna < TRES; columna++){ + if( mat[fila][columna] == mat[fila + 1][columna] ) { + bandera = 1; + }else{ + bandera = 0; + } + } + } + return bandera; +} + + +int diagonalPrincipal(char mat[][TRES]){ + int bandera = 0; + for(int fila = 0; fila < TRES - 1; fila++){ + + if( mat[fila][fila] == mat[fila + 1][fila + 1] ) { + bandera = 1; + }else{ + bandera = 0; + } + } + return bandera; +} + + + +int diagonalSecundaria(char mat[][TRES]){ + int bandera = 0; + int columna = TRES - 1; + for(int fila = 0; fila < TRES - 1; fila++){ + + if( mat[fila][columna - fila] == mat[fila + 1][columna - (fila + 1)] ) { + bandera = 1; + }else{ + bandera = 0; + } + } + return bandera; +} + +