diff --git b/InicioJuego.class a/InicioJuego.class new file mode 100644 index 0000000..72fc8e6 Binary files /dev/null and a/InicioJuego.class differ diff --git b/InicioJuego.java a/InicioJuego.java new file mode 100644 index 0000000..65846b9 --- /dev/null +++ a/InicioJuego.java @@ -0,0 +1,34 @@ +import java.util.Scanner; + + +public class InicioJuego{ + public static void main(String[] args) { + //Creamos las herramientas necesarias para el juego + Tablero tabla = new Tablero(); + Juego juego = new Juego(); + String nombre1,nombre2; + Scanner teclado = new Scanner(System.in); + //Iniciamos el juego + System.out.println("Bienvenido al Tateti"); + System.out.println("Por favor, ingrese el nombre del jugador 1"); + nombre1 = teclado.nextLine(); + System.out.println("Por favor, ingrese el nombre del jugador 2"); + nombre2 = teclado.nextLine(); + System.out.println("Ok " + nombre1 + " y " + nombre2 + ", vamos a jugar."); + //Preparamos el tablero + tabla.imprimirTableroVacio(); + char resultado = juego.aJugar(nombre1,nombre2); + //Imprimir en pantalla al ganador + if(resultado == 'e'){ + System.out.println("Nadie gano"); + }else if(resultado == 'O'){ + System.out.println("El ganador es: "+nombre1); + }else{ + System.out.println("El ganador es: "+nombre2); + } + System.out.println("Fin del juego"); + } + + + +} \ No newline at end of file diff --git b/Intrucciones.txt a/Intrucciones.txt new file mode 100644 index 0000000..9e65edb --- /dev/null +++ a/Intrucciones.txt @@ -0,0 +1,3 @@ +La clase principal es InicioJuego.class en ambos juegos. + +Disfrute diff --git b/Juego.class a/Juego.class new file mode 100644 index 0000000..d911e3e Binary files /dev/null and a/Juego.class differ diff --git b/Juego.java a/Juego.java new file mode 100644 index 0000000..888cf6b --- /dev/null +++ a/Juego.java @@ -0,0 +1,129 @@ +import java.util.Scanner; + +public class Juego{ + //Creamos los variables globales para la clase + char valor; + int contadorJugadas; + char[][] tablero; + Scanner teclado; + String jugadorActual; + + //Este es constructor + public Juego(){ + this.jugadorActual = ""; + this.valor = 'O'; //Empieza la ficha 'O' + this.contadorJugadas = 0; + this.tablero = new char[3][3];//Creamos el tablero + for(int fila = 0;fila<3;fila++){//Vaciamos el tablero + for(int columna = 0;columna < 3;columna++){ + this.tablero[fila][columna] = ' '; + } + } + this.teclado = new Scanner(System.in);//Creamos el objeto para recibir datos desde el teclado + } + + public char aJugar(String jugador1,String jugador2){ + this.jugadorActual = jugador1; + String colocacion; + int fila,columna; + char valorTemp; + char ganador = 'e'; + Tablero dibujo = new Tablero(); + boolean finJuego = false; + //Este bucle sirve para realizar el juego hasta que haya un ganador o no haya mas casilla que cargar + while(!finJuego || this.contadorJugadas<9){ + colocacion = this.comprobarPosicionSintaxis();//Comprobamos si la sintaxis es correcta correctas + //Convierte los valores obtenidos desde teclado a valores int + fila = Integer.parseInt(""+colocacion.charAt(0)) - 1; + columna = Integer.parseInt(""+colocacion.charAt(2)) - 1; + //Este if comprueba si la posicion donde coloca la ficha ya esta o no esta ocupado + if(this.comprobarPosicionVacio(fila, columna)){ + this.tablero[fila][columna] = this.valor;//Carga la ficha en el tablero + valorTemp = this.valor; + dibujo.imprimirTablero(this.tablero);//imprime el tablero actual + //Cambia el tipo de ficha + if(valor=='O'){ + this.valor = 'X'; + this.jugadorActual = jugador2; + }else{ + this.valor = 'O'; + this.jugadorActual = jugador1; + } + //Verifica si el jugador actual ya gano o no gano el juego + if(verificarJuego(valorTemp) && this.contadorJugadas>2){ + finJuego=true; + ganador = valorTemp; + break; + } + //En caso que todavia no gano, se establece la cantidad de posiciones cargadas, y se continua el juego + this.contadorJugadas++; + }else{ + System.out.println("La casilla ya esta cargada. Agrega otro valor"); + } + } + return ganador; + } + + private String comprobarPosicionSintaxis(){ + String posicion = ""; + boolean correcto = false; + //Este bucle termina hasta que el usuario cargue la sintaxis correcta + while(!correcto){ + System.out.print(this.jugadorActual + ", ingrese una posicion en formato fila,columna: "); + posicion = teclado.nextLine(); + //Verifica si la sintaxis tiene la longitud correcta + if(posicion.length()!=3){ + System.out.println("No se cargo los datos correctamente, por favor cargue de nuevo"); + }else if(posicion.charAt(1)!=','){ + System.out.println("No se cargo el ',' .Por favor, respete la sintaxis"); + //Verifica si las posiciones existen en el tablero + }else if(Integer.parseInt(""+posicion.charAt(0))<1 || Integer.parseInt(""+posicion.charAt(0))>3){ + System.out.println("Fila incorrecta, por favor cargue de nuevo"); + }else if(Integer.parseInt("" + posicion.charAt(2))<1 || Integer.parseInt(""+posicion.charAt(2))>3){ + System.out.println("Columna incorrecta, por favor cargue de nuevo"); + }else{ + correcto = true; + } + } + return posicion; + } + + private boolean comprobarPosicionVacio(int fila,int columna){ + boolean resultado; + if(this.tablero[fila][columna]==' '){ + resultado = true; + }else{ + resultado = false; + } + return resultado; + } + + private boolean verificarJuego(char valor){ + boolean resultado = false; + //Primero verificamos filas + for(int i=0; i<3 && !resultado; i++){ + if(this.tablero[i][0] == valor && this.tablero[i][1] == valor && this.tablero[i][2] == valor){ + resultado = true; + break; + } + } + //Comprobamos columna + for(int i=0; i<3 && !resultado; i++){ + if(this.tablero[0][i] == valor && this.tablero[1][i] == valor && this.tablero[2][i] == valor){ + resultado = true; + break; + } + } + //comprobar diagonal 1 + if(!resultado && this.tablero[0][0] == valor && this.tablero[1][1] == valor && this.tablero[2][2] == valor){ + resultado = true; + } + //comprobar diagonal 2 + if(!resultado && this.tablero[0][2] == valor && this.tablero[1][1] == valor && this.tablero[2][0] == valor){ + resultado = true; + } + return resultado; + } + + +} \ No newline at end of file diff --git b/Tablero.class a/Tablero.class new file mode 100644 index 0000000..317490b Binary files /dev/null and a/Tablero.class differ diff --git b/Tablero.java a/Tablero.java new file mode 100644 index 0000000..8f0e298 --- /dev/null +++ a/Tablero.java @@ -0,0 +1,22 @@ +public class Tablero{ + + final String arribaYBase = "| - - - | - - - | - - - |" ; + + public void imprimirTableroVacio(){ + System.out.println(" 1 2 3 "); + for(int j = 0;j<3;j++){ + System.out.println(" " + arribaYBase); + System.out.print(j+1); + System.out.println("| | | |"); + } + System.out.println(" " + arribaYBase); + } + + public void imprimirTablero(char[][] temporal){ + for(int i = 0;i<3;i++){ + System.out.println(arribaYBase); + System.out.println("| " + temporal[i][0] + " "+ "| " + temporal[i][1] + " " + "| " + temporal[i][2] + " |"); + } + System.out.println(arribaYBase); + } +} \ No newline at end of file