Commit 5f08a2bd by Cristhian Ortellado

Se agrego el ejercicio 3.3 adaptacion del Tateti

parent c8049370
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
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],"<span></span>");
}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
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TA-TE-TI</title>
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<h1>Resultados del juego</h1>
<table>
<tr>
<td>A1</td>
<td>A2</td>
<td>A3</td>
</tr>
<tr>
<td>B1</td>
<td>B2</td>
<td>B3</td>
</tr>
<tr>
<td>C1</td>
<td>C2</td>
<td>C3</td>
</tr>
</table>
</body>
</html>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment