diff --git a/Ejercicio 3.3 generar html/README.md b/Ejercicio 3.3 generar html/README.md new file mode 100644 index 0000000..d48d792 --- /dev/null +++ b/Ejercicio 3.3 generar html/README.md @@ -0,0 +1,16 @@ +Pasos a seguir para probar la aplicacion: +*Por consola +1)Dirigirse a la carpeta donde se encuentra el archivo Tateti.java +2)Ejecutar el comando "javac Tateti.java" para compilar el archivo +3)Ejecutar el comando "java Tateti" para ejecutar el archivo + +*En Visual Code +1)Abrir Tateti.java con visual code +2)Presionar la tecla F5 + + COSAS A TENER EN CUENTA +-En el caso que se pueda utilizar Linux o mac utilizarlo pues el trabajo hecho por el alumno se podra apreciar en +de una mejor manera en esos tipos de consola. +-No borrar el archivo prototipo.html pues el nuevo html se genera apartir del mismo + + AL TERMINAR EL JUEGO EL PROGRAMA CREA UN ARCHIVO HTML CON LOS CORRESPONDIENTES RESULTADOS diff --git a/Ejercicio 3.3 generar html/Tateti.class b/Ejercicio 3.3 generar html/Tateti.class new file mode 100644 index 0000000..bdcbc5e Binary files /dev/null and b/Ejercicio 3.3 generar html/Tateti.class differ diff --git a/Ejercicio 3.3 generar html/Tateti.java b/Ejercicio 3.3 generar html/Tateti.java new file mode 100644 index 0000000..2f3731f --- /dev/null +++ b/Ejercicio 3.3 generar html/Tateti.java @@ -0,0 +1,255 @@ +import java.io.*; +import java.util.Scanner; +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.BufferedWriter; +import java.lang.Object; +public class Tateti { + private String matriz [][] = new String[3][3]; //tabla principal + private char turno[] = {'X','O'};//el turno 0 == primer jugador(X) 1 == Segundo Jugador (O) + private char numeroJugada[]={'a','b','c','d','e','f','g','h','i'};//indica la jugada actual + private String jugadaGanadora=""; + //colores que agregaremos a la salida de consola + private static final String ANSI_RED = "\u001B[31m"; //error + private static final String ANSI_RESET = "\u001B[0m";//color entrada + private static final String ANSI_GREEN = "\u001B[32m";//ganador + private static final String ANSI_YELLOW = "\u001B[33m";//matriz + + Tateti(){ + for (int i = 0; i < matriz.length; i++) { + for (int j = 0; j < matriz.length; j++) { + matriz [i][j]=""; + } + } + } + public void jugar(){ + //creamos un scanner para ingresar los datos + Scanner entrada = new Scanner(System.in); + + int nroJugada = 0; + System.out.println("Bienvenidos al TA-TE-TI de Cristhian Ortellado del Bootcamp 004 de Roshka (Filas = {A, B, C})"); + + do { + + System.out.println(numeroJugada[nroJugada] + ". "+turno[nroJugada%2]+" -> Ingrese una jugada:"); + String movimiento = entrada.nextLine(); + //si la entrada y jugada es valida entonces rellenamos la matriz + if (comprobarEntrada(movimiento) && comprobarMovimiento(movimiento)){ + + int fila = casillaActual(movimiento.charAt(0)); + int columna = (int)casillaActual(movimiento.charAt(1)); + matriz[fila][columna] = turno[nroJugada%2]+""; + + imprimirMatriz(); + + if (ganador()) { + System.out.printf("%s%s%s%s",ANSI_GREEN," GANADOR ",turno[nroJugada%2]," :"); + System.out.printf("%s",jugadaGanadora+"\n"); + System.out.println(ANSI_GREEN +" JUEGO FINALIZADO"); + break; + } + nroJugada++; + if (nroJugada==9) { + System.out.println(ANSI_GREEN +" EMPATE "+turno[nroJugada%2] +ANSI_RESET); + System.out.println(ANSI_GREEN +" JUEGO FINALIZADO"); + break; + } + } + } while (true); + generarHtml(); + } + /** + * Funcion que comprueba si la matriz posee algun ganador + * @return retorna true si hubo algun ganador + */ + private boolean ganador(){ + //comprueba si alguien gano + //diagonales + if (matriz[0][0].equals(matriz[1][1]) && matriz[0][0].equals(matriz[2][2]) && matriz[0][0].length()>0){ + jugadaGanadora ="A1-B2-C3"; + return true; + } + if (matriz[0][2].equals(matriz[1][1]) && matriz[0][2].equals(matriz[2][0]) && matriz[0][2].length()>0) { + jugadaGanadora ="A3-B2-C1"; + return true; + } + + + //columnas + + if (matriz[0][0].equals(matriz[1][0]) && matriz[0][0].equals(matriz[2][0]) && matriz[0][0].length()>0) { + jugadaGanadora ="A1-B1-C1"; + return true; + } + + if (matriz[0][1].equals(matriz[1][1]) && matriz[0][1].equals(matriz[2][1]) && matriz[0][1].length()>0){ + jugadaGanadora ="A2-B2-C2"; + return true; + } + + if (matriz[0][2].equals(matriz[1][2]) && matriz[0][2].equals(matriz[2][2]) && matriz[0][2].length()>0){ + jugadaGanadora ="A3-B3-C3"; + return true; + } + + //filas + + if (matriz[0][0].equals(matriz[0][1]) && matriz[0][0].equals(matriz[0][2]) && matriz[0][0].length()>0){ + jugadaGanadora ="A1-A2-A3"; + return true; + } + + if (matriz[1][0].equals(matriz[1][1]) && matriz[1][0].equals(matriz[1][2]) && matriz[1][0].length()>0){ + jugadaGanadora ="B1-B2-C3"; + return true; + } + + if (matriz[2][0].equals(matriz[2][1]) && matriz[2][0].equals(matriz[2][2]) && matriz[2][0].length()>0){ + jugadaGanadora ="C1-C2-C3"; + return true; + } + + return false; + } + private void imprimirMatriz(){ + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++){ + if (matriz[i][j].length()==0) { + System.out.printf("%s|--%s",ANSI_YELLOW, matriz[i][j]); + }else{ + System.out.printf("%s|%s",ANSI_YELLOW, matriz[i][j]); + } + } + System.out.println("|"); + } + System.out.println(ANSI_RESET); + } + /** + * @param entrada es el movimiento el cual el jugador desea realizar + * @return retorna true si es una jugada valida + */ + private boolean comprobarEntrada(String entrada){ + if (entrada.length()!=2 ) { + System.out.println( ANSI_RED+"Error: Jugada Inválida - Solo ingrese el numero de caracteres solicitados"+ANSI_RESET); + return false; + } + char fila = entrada.charAt(0); + char columna = entrada.charAt(1); + + //comprobamos el primer y segundo caracter + if (fila !='A' && fila != 'B' && fila != 'C' || columna != '1' && columna != '2' && columna != '3'){ + System.out.println( ANSI_RED+"ERROR :Jugada Invalida - Formato Invalido"+ANSI_RESET); + return false; + } + if (fila != 'A' & fila != 'B' && fila != 'C' && columna != '1' && columna != 'B' && columna != '3'){ + System.out.println( ANSI_RED+"Error: Jugada Invalida - Fila y Columna Invalidas"+ANSI_RESET); + return false; + } + if (fila != 'A' && fila != 'B' && fila != 'C' ){ + System.out.println( ANSI_RED+"Error: Jugada Inválida - Fila Invalida"+ANSI_RESET); + return false; + } + + if (columna != '1' & columna != '2' && columna != '3' ){ + System.out.println( ANSI_RED+"Error: Jugada Inválida - Columna Invalida"+ANSI_RESET); + return false; + } + + return true; + } + /** + * + * @param jugada es una entrada valida en formato y rango + * @return retorna true si la jugada insertada se puede realizar + */ + private boolean comprobarMovimiento(String jugada){ + //comprobamos la jugada con los criterios correspondientes + int fila = casillaActual(jugada.charAt(0)); + int columna = (int)casillaActual(jugada.charAt(1));//casteamos la columna + + //comprobamos si la casilla esta ocupada + if (matriz[fila][columna].length()!=0) { + System.out.println( ANSI_RED+"Jugada Invalida - Casilla Ocupada"+ANSI_RESET); + return false; + } + return true; + } + /** + * @param jugada es la columna que ingreso el jugador + * @return retorna el indice de la columna + */ + private int casillaActual(char jugada){ + switch (jugada) { + case 'A': + return 0; + case 'B': + return 1; + case 'C': + return 2; + case '1': + return 0; + case '2': + return 1; + case '3': + return 2; + default: + break; + } + return 0; + } + public void generarHtml(){ + FileReader fr = null; + BufferedReader br = null; + String html=""; + try { + //leemos el archivo + fr = new FileReader("prototipo.html"); + br = new BufferedReader(fr); + String filaHtml = ""; + //Obtenemos cada fila + while( ( filaHtml = br.readLine() ) != null ) + { + html += filaHtml + "\n"; + } + + } catch (Exception e) { + System.out.println(e.getMessage()); + } + String casillas [][]={{"A1","A2","A3"},{"B1","B2","B3"},{"C1","C2","C3"}}; + //reemplazamos por los datos de la matriz + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + if (matriz[i][j].equals("")) { + html = html.replace(casillas[i][j],""); + }else + html = html.replace(casillas[i][j],matriz[i][j]); + + } + } + + //creamos el archivo + File archivo = new File ("tateti.html"); + try { + // A partir del objeto File creamos el fichero físicamente + if (archivo.exists()) + archivo.delete(); + + if (archivo.createNewFile()){ + FileWriter escribir = new FileWriter(archivo, true); + escribir.write(""+html); + escribir.close(); + + }else + System.out.println("No ha podido ser creado el fichero"); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + + + } + public static void main(String[] args) { + Tateti tateti = new Tateti(); + tateti.jugar(); + } +} \ No newline at end of file diff --git a/Ejercicio 3.3 generar html/css/styles.css b/Ejercicio 3.3 generar html/css/styles.css new file mode 100644 index 0000000..0d91fb2 --- /dev/null +++ b/Ejercicio 3.3 generar html/css/styles.css @@ -0,0 +1,15 @@ +table { + width: 15rem; + height: 15rem; + margin: 5rem auto; + border: 1px solid grey; + text-align: center; +} + +td { + border: 0.5px solid black; +} + +span { + padding-right: .6em; +} \ No newline at end of file diff --git a/Ejercicio 3.3 generar html/prototipo.html b/Ejercicio 3.3 generar html/prototipo.html new file mode 100644 index 0000000..b0e8270 --- /dev/null +++ b/Ejercicio 3.3 generar html/prototipo.html @@ -0,0 +1,32 @@ + + + + + + + TA-TE-TI + + + + +

Resultados del juego

+ + + + + + + + + + + + + + + + +
A1A2A3
B1B2B3
C1C2C3
+ + + \ No newline at end of file