From 828c442e8dff4f2ad6ae18837bf1c0097bfccc79 Mon Sep 17 00:00:00 2001 From: Nahuel Date: Wed, 27 Apr 2022 13:03:52 -0400 Subject: [PATCH] First Commit --- demo/pom.xml | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ demo/src/main/java/generala/Dado.java | 33 +++++++++++++++++++++++++++++++++ demo/src/main/java/generala/Generala.java | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ demo/src/main/java/generala/Jugada.java | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ demo/src/test/java/generala/AppTest.java | 20 ++++++++++++++++++++ demo/target/classes/generala/Dado.class | Bin 0 -> 875 bytes demo/target/classes/generala/Generala.class | Bin 0 -> 2930 bytes demo/target/classes/generala/Jugada.class | Bin 0 -> 1611 bytes demo/target/test-classes/generala/AppTest.class | Bin 0 -> 463 bytes 9 files changed, 337 insertions(+) create mode 100644 demo/pom.xml create mode 100644 demo/src/main/java/generala/Dado.java create mode 100644 demo/src/main/java/generala/Generala.java create mode 100644 demo/src/main/java/generala/Jugada.java create mode 100644 demo/src/test/java/generala/AppTest.java create mode 100644 demo/target/classes/generala/Dado.class create mode 100644 demo/target/classes/generala/Generala.class create mode 100644 demo/target/classes/generala/Jugada.class create mode 100644 demo/target/test-classes/generala/AppTest.class diff --git a/demo/pom.xml b/demo/pom.xml new file mode 100644 index 0000000..9afcabe --- /dev/null +++ b/demo/pom.xml @@ -0,0 +1,75 @@ + + + + 4.0.0 + + generala + demo + 1 + + demo + + http://www.example.com + + + UTF-8 + 1.7 + 1.7 + + + + + junit + junit + 4.11 + test + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/demo/src/main/java/generala/Dado.java b/demo/src/main/java/generala/Dado.java new file mode 100644 index 0000000..9658c7e --- /dev/null +++ b/demo/src/main/java/generala/Dado.java @@ -0,0 +1,33 @@ +package generala; + +import java.util.Arrays; + +public class Dado { + + private int[] dadosActuales = new int[5]; + + public Dado() { + + } + + // ------------ Metodos ------------ + public int[] getDados() { + return dadosActuales; + } + + public void setDados(int[] dadosActualizados) { + this.dadosActuales = dadosActualizados; + } + + public int[] generarNumerosAleatorios() { + // Funcion que genera numeros aleatorios + int[] dadosAleatorios = new int[5]; + for (int i = 0; i < 5; i++) { + int randomNumber = (int) Math.floor((Math.random() * (5 + 1 - 1)) + 1); + dadosAleatorios[i] = randomNumber; + } + + Arrays.sort(dadosAleatorios); + return dadosAleatorios; + } +} diff --git a/demo/src/main/java/generala/Generala.java b/demo/src/main/java/generala/Generala.java new file mode 100644 index 0000000..f024820 --- /dev/null +++ b/demo/src/main/java/generala/Generala.java @@ -0,0 +1,102 @@ +package generala; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; +import java.io.File; + +public class Generala { + // ESTA ES LA FUNCIÓN QUE HAY QUE IMPLEMENTAR +// TAMBIÉN PUEDEN AGREGAR OTRAS FUNCIONES y/o CLASES +// QUE NECESITEN PARA RESOLVER EL EJERCICIO DE LA +// MANERA MÁS ORDENADA POSIBLE + +String jugada(String dados) { + // Este metodo recibe un String el cual lo utilizamos en el Switch, dependiendo de que sea elvalor del + // string se ejecutara uno u otro caso + switch (dados) { + case "GENERALA" : { + System.out.println("GENERALA"); + return "GENERALA"; + } + case "POKER" : { + System.out.println("POKER"); + return "POKER"; + } + case "FULL" : { + System.out.println("FULL"); + return "FULL"; + } + case "ESCALERA" : { + System.out.println("ESCALERA"); + return "ESCALERA"; + } + default : { + System.out.println("NADA"); + return "NADA"; + } + } + +} +// Ustedes pueden ignorar esto + +String[] jugadas(String[] losdados) { + String[] ret = new String[losdados.length]; + int i = 0; + for (String dados : losdados) { + ret[i] = this.jugada(dados); + i++; + } + return ret; +} +// Ustedes pueden ignorar esto + +static String[] processBatch(String fileName) + throws Exception { + Scanner sc = new Scanner(new File(fileName)); + List lines = new ArrayList(); + while (sc.hasNextLine()) { + lines.add(sc.nextLine()); + } + return lines.toArray(new String[0]); +} + +public static void main(String[] args) + throws Exception { + Generala g = new Generala(); + /* IGNORAR PORQUE ESTO NO SE VA A EJECUTAR PARA USTEDES */ + if (args.length > 0) { + String[] jugadas = processBatch(args[0]); + String resultados[] = g.jugadas(jugadas); + for (String res : resultados) { + System.out.println(res); + } + return; + } + + // ESTO SI SE EJECUTA PARA USTEDES + // ----------------------------------------------------- + // Generar los numeros aleatorios + // Instanciamos el objeto Dadopara utilizar sus metodos + Dado dados1 = new Dado(); + // En el metodo "setDados" modficamos el valor actual de la variable; pasandole + // como argumento el objeto "dados1" con su metodo "generarNumerosAleatorios" + // "generarNumerosAleatorios" devolvera un array de enteros con numeros aleatorios + dados1.setDados(dados1.generarNumerosAleatorios()); + // Obtenemos los dados aleatorios y los guardamos en el array "dadosAleatorios" + int[] dadosAleatorios = dados1.getDados(); + + // Se imprimen los dados para poder comprar con el resultado arrojado luego + for (int i = 0; i < dadosAleatorios.length; i++) { + System.out.print(" [" + dadosAleatorios[i] + "] "); + } + + //Instanciamos el objeto "jugada1" para ejecutar las comprobaciones + Jugada jugada1 = new Jugada(); + //Llamamos al metodo tiro pasandole como argumento los dados que se generaron + jugada1.tiro(dadosAleatorios); + //"g" es un objeto de la clase Generala que ejecutara el metodo jugada. + //Le paso como parametro el string de la variabe de la clase Jugada + g.jugada(jugada1.getJugada1()); +} +} diff --git a/demo/src/main/java/generala/Jugada.java b/demo/src/main/java/generala/Jugada.java new file mode 100644 index 0000000..2e14d2b --- /dev/null +++ b/demo/src/main/java/generala/Jugada.java @@ -0,0 +1,107 @@ +package generala; + +public class Jugada { + + // Instanciamos la variable "jugada" como "NADA"; porque al ejecutarse los metodos de comprobacion, si ninguno actualiza esta + // variable con su respectivo valor como "GENERALA", "POKER", etc. Significa que no cumplio con ninguna de las jugadas y debe + // quedarse como "NADA" + private String jugada1 = "NADA"; + + //Constructor para instanciar un objeto Jugada y usar sus metodos + public Jugada() { + + } + + public String getJugada1() { + // retorna la variable de instancia actual + return this.jugada1; + } + + public void setJugada1(String jugada1) { + // Modifica la variable de instancia actual con el parametro que se le pase + this.jugada1 = jugada1; + } + + // ------ Comprueba si los numeros aleatorios de un array cumplen las caracteristicas de "GENERALA" ------ + public void generala(int[] dados) { + int contador = 0; + for (int i = 0; i < dados.length - 1; i++) { + // En caso de que el dado en la posicion "i" sea igual al dado en la posicion siguiente + // el contador aumenta en uno + if (dados[i] == dados[i + 1]) { + contador++; + } + } + // Si el contador llego a 4 es porque todas las comparaciones entre dados fueron iguales + // Entonces se actualiza la variable de instancia + if (contador == 4) { + setJugada1("GENERALA"); + } + } + + // ------ Comprueba si los numeros aleatorios de un array cumplen las caracteristicas de "POKER" ------ + public void poker(int[] dados) { + // IMPORTANTE: El metodo poker funciona igual que GENERALA con la diferencia de que el contador debe llegar a 3 para ser POKER + int contador = 0; + for (int i = 0; i < dados.length - 1; i++) { + if (dados[i] == dados[i + 1]) { + contador++; + } + } + + // Al estar el array ordenado de mayor a menor solo hay 2 opciones de POKER + // Una seria el numero menor al principio y otra el numero mayor al final + // En los dos casos los numeros en la posicion 1, 2, 3 son iguales + // por eso se realiza la comprobacion ademas de que el contador sea 3 + // array1 = [ 4, 5, 5, 5, 5 ] + // array2 = [ 4, 4, 4, 4, 5 ] + if (contador == 3 && dados[1] == dados[2] && dados[2] == dados[3]) { + setJugada1("POKER"); + } + } + + // ------ Comprueba si los numeros aleatorios de un array cumplen las caracteristicas de "FULL" ------ + public void full(int[] dados) { + // IMPORTANTE: El metodo "full" funciona igual que GENERALA con la diferencia de que el contador debe llegar a 3 para ser POKER + int contador = 0; + for (int i = 0; i < dados.length - 1; i++) { + if (dados[i] == dados[i + 1]) { + contador++; + } + } + + // Al estar el array ordenado de mayor a menor solo hay 2 opciones de FULL + // El numero en la posicion 2 es diferente al de la posicion anterior + // y tambien puede ser diferente a de la posicion siguiente + // array1 = [ 4, 4, 5, 5, 5 ] + // array2 = [ 4, 4, 4, 5, 5 ] + if (contador == 3 && dados[1] != dados[2]) { + setJugada1("FULL"); + } else if (contador == 3 && dados[2] != dados[3]) { + setJugada1("FULL"); + } + } + + // ------ Comprueba si los numeros aleatorios de un array cumplen las caracteristicas de "ESCALERA" ------ + public void escalera(int[] dados) { + int contador = 0; + for (int i = 0; i < dados.length - 1; i++) { + //Si el dado en la posicion [0] es 1 y le sumas 1, el resultado debe ser igual al dado de la posicion siguiente + if (dados[i] + 1 == dados[i + 1]) { + contador++; + } + } + if (contador == 4) { + this.jugada1 = "ESCALERA"; + } + } + + // ------ Comprueba si los numeros aleatorios de un array cumplen las caracteristicas de "POKER" ------ + public void tiro(int[] dados) { + // Se ejecuta todos los metodos de comprobacion + generala(dados); + poker(dados); + full(dados); + escalera(dados); + } +} diff --git a/demo/src/test/java/generala/AppTest.java b/demo/src/test/java/generala/AppTest.java new file mode 100644 index 0000000..9cd8e3b --- /dev/null +++ b/demo/src/test/java/generala/AppTest.java @@ -0,0 +1,20 @@ +package generala; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class AppTest +{ + /** + * Rigorous Test :-) + */ + @Test + public void shouldAnswerWithTrue() + { + assertTrue( true ); + } +} diff --git a/demo/target/classes/generala/Dado.class b/demo/target/classes/generala/Dado.class new file mode 100644 index 0000000..b7b087c Binary files /dev/null and b/demo/target/classes/generala/Dado.class differ diff --git a/demo/target/classes/generala/Generala.class b/demo/target/classes/generala/Generala.class new file mode 100644 index 0000000..31f8cd6 Binary files /dev/null and b/demo/target/classes/generala/Generala.class differ diff --git a/demo/target/classes/generala/Jugada.class b/demo/target/classes/generala/Jugada.class new file mode 100644 index 0000000..20a087a Binary files /dev/null and b/demo/target/classes/generala/Jugada.class differ diff --git a/demo/target/test-classes/generala/AppTest.class b/demo/target/test-classes/generala/AppTest.class new file mode 100644 index 0000000..54c3428 Binary files /dev/null and b/demo/target/test-classes/generala/AppTest.class differ -- libgit2 0.26.0