Commit 2c4780ff by Cristhian Ortellado

Se termino la tarea nro 1

parents
import java.io.*;
import java.util.Scanner;
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]+"";
//guardamos la jugada
jugadaGanadora[nroJugada%2][nroJugada/2]= movimiento;
imprimirMatriz();
if (ganador()) {
System.out.printf("%s%s%s%s",ANSI_GREEN," GANADOR ",turno[nroJugada%2]," :");
if (jugadaGanadora[1][2].length()==0)
System.out.printf("%s",jugadaGanadora[0][0]+"-" +jugadaGanadora[0][1]+"-"+jugadaGanadora[0][2]+"\n");
else
System.out.printf("%s",jugadaGanadora[1][0]+"-" +jugadaGanadora[1][1]+"-"+jugadaGanadora[1][2]+"\n");
System.out.println(ANSI_GREEN +" JUEGO FINALIZADO");
return;
}
nroJugada++;
if (nroJugada==9) {
System.out.println(ANSI_GREEN +" EMPATE "+turno[nroJugada%2] +ANSI_RESET);
System.out.println(ANSI_GREEN +" JUEGO FINALIZADO");
return;
}
}
} while (true);
}
/**
* 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)
return true;
if (matriz[0][2].equals(matriz[1][1]) && matriz[0][2].equals(matriz[2][0]) && matriz[0][2].length()>0)
return true;
//columnas
if (matriz[0][0].equals(matriz[1][0]) && matriz[0][0].equals(matriz[2][0]) && matriz[0][0].length()>0)
return true;
if (matriz[0][1].equals(matriz[1][1]) && matriz[0][1].equals(matriz[2][1]) && matriz[0][1].length()>0)
return true;
if (matriz[0][2].equals(matriz[1][2]) && matriz[0][2].equals(matriz[2][2]) && matriz[0][2].length()>0)
return true;
//filas
if (matriz[0][0].equals(matriz[0][1]) && matriz[0][0].equals(matriz[0][2]) && matriz[0][0].length()>0)
return true;
if (matriz[1][0].equals(matriz[1][1]) && matriz[1][0].equals(matriz[1][2]) && matriz[1][0].length()>0)
return true;
if (matriz[2][0].equals(matriz[2][1]) && matriz[2][0].equals(matriz[2][2]) && matriz[2][0].length()>0)
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 static void main(String[] args) {
Tateti tateti = new Tateti();
tateti.jugar();
}
}
\ 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