From 5170e7b2e7eb5effa5b7b9590110d089d034d811 Mon Sep 17 00:00:00 2001 From: PC de clase Date: Thu, 29 Oct 2026 13:49:18 +0100 Subject: [PATCH] dados --- src/Metodos1.java | 10 +++- src/Metodos3.java | 1 - src/Metodos7.java | 149 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 src/Metodos7.java diff --git a/src/Metodos1.java b/src/Metodos1.java index 730af99..250b1e9 100644 --- a/src/Metodos1.java +++ b/src/Metodos1.java @@ -4,7 +4,7 @@ public class Metodos1{ public static void main(String[] args){ int numero=0; System.out.println("Introduce un entero"); - numero = leerEntero(); + numero = leerEnteroPositivo(); int resultado = potencias2(numero); System.out.printf("El resultado es %d\n",resultado); } @@ -13,19 +13,23 @@ public class Metodos1{ while(1 << result <= n) result++; return result; } - public static int leerEntero() { + public static int leerEnteroPositivo() { Scanner sc = new Scanner(System.in); boolean parar = false; int n = 0; while(!parar) { try { n = sc.nextInt(); - parar = true; } catch(Exception e){ System.out.println("Número invalido, intentalo otra vez"); } finally { sc.next(); } + if(n > 0) + parar = true; + else { + System.out.println("Tiene que ser positivo"); + } } sc.close(); return n; diff --git a/src/Metodos3.java b/src/Metodos3.java index 11d43a0..d9dd595 100644 --- a/src/Metodos3.java +++ b/src/Metodos3.java @@ -28,7 +28,6 @@ public class Metodos3 { parar = true; } catch(Exception e){ System.out.println("Número invalido, intentalo otra vez"); - } finally { sc.next(); } } diff --git a/src/Metodos7.java b/src/Metodos7.java new file mode 100644 index 0000000..e7aa40b --- /dev/null +++ b/src/Metodos7.java @@ -0,0 +1,149 @@ +import java.util.Random; +import java.util.Scanner; + +public class Metodos7 { + private class Jugador { + String nombre = "Anonimo"; + int puntos = 0; + } + + public static void main(String[] args) { + System.out.println("GUERRA DE DADOS"); + System.out.println("==============="); + + Scanner sc = new Scanner(System.in); + Random r = new Random(); + int puntosParaGanar = 1000; + + Metodos7 juego = new Metodos7(); + Jugador j1 = juego.new Jugador(); + Jugador j2 = juego.new Jugador(); + + switch (menuPrincipal(sc)) { + case 1: // Configuración + System.out.println("Cuantos puntos hacen falta para ganar?"); + puntosParaGanar = leerEnteroPositivo(sc); + case 2: // Jugar + System.out.println("Introduce el nombre del jugador 1"); + j1.nombre = sc.nextLine(); + System.out.println("Introduce el nombre del jugador 2"); + j2.nombre = sc.nextLine(); + + while (j1.puntos < puntosParaGanar && j2.puntos < puntosParaGanar) { + int puntos1 = tirarDados(j1, sc, r); + int puntos2 = tirarDados(j2, sc, r); + if(puntos1 == puntos2){ + System.out.println("Ha habido un empate!!"); + continue; + } + Jugador ganador, perdedor; + if (puntos1 > puntos2){ + ganador = j1; + perdedor = j2; + } else { + ganador = j2; + perdedor = j1; + } + int puntosGanador = puntos1 + puntos2; + int puntosPerdedor = (puntos1 < puntos2) ? puntos1 : puntos2; + System.out.printf("%s gana la ronda: +%dpts\n", ganador.nombre, puntosGanador); + ganador.puntos += puntosGanador; + System.out.printf("%s pierde la ronda: -%dpts\n", perdedor.nombre, puntosPerdedor); + perdedor.puntos -= puntosPerdedor; + mostrarPuntos(j1, j2); + System.out.println(); + } + + if (j1.puntos >= puntosParaGanar && j2.puntos >= puntosParaGanar) { + System.out.println("Ha habido un empate"); + } else if (j1.puntos > j2.puntos) { + System.out.printf("El ganador es %s\n", j1.nombre); + } else { + System.out.printf("El ganador es %s\n", j2.nombre); + } + System.out.println(); + break; + case 3: + default: + } + } + + private static void mostrarPuntos(Jugador j1, Jugador j2) { + System.out.printf("%s tiene %d puntos\n", j1.nombre, j1.puntos); + System.out.printf("%s tiene %d puntos\n", j2.nombre, j2.puntos); + System.out.println(); + } + + private static int tirarDados(Jugador j, Scanner sc, Random r) { + System.out.printf("Turno de %s\n", j.nombre); + System.out.println("Pulsa ENTER para tirar los dados"); + sc.nextLine(); + int d1 = r.nextInt(1, 7); + int d2 = r.nextInt(1, 7); + int resultado = d1; + System.out.printf("Has tirado un %d con modificador %d\n", d1, d2); + switch (d2) { + case 1: + resultado = 1; + for (int i = 2; i <= d2; i++) resultado *= i; + System.out.println("MODIFICADOR: Factorial"); + break; + case 2: + resultado = (d1 * (d1 + 1)) / 2; + System.out.println("MODIFICADOR: Sumatorio"); + break; + case 3: + resultado = d1 * d1; + System.out.println("MODIFICADOR: Cuadrado"); + break; + case 4: + resultado = 1; + System.out.println("MODIFICADOR: Elevar a 0"); + break; + case 5: + System.out.println("Sin modificador :-("); + break; + case 6: + resultado = 0; + System.out.println("MODIFICADOR: Sin puntos :-("); + break; + default: + } + System.out.printf("Ahora tu puntuación es %d\n", resultado); + System.out.println(); + return resultado; + } + + private static int menuPrincipal(Scanner sc) { + boolean parar = false; + while (!parar) { + System.out.print("Menu Principal:\n" + + "\t1-Configurar\n" + + "\t2-Jugar\n" + + "\t3-Salir\n"); + int n = leerEnteroPositivo(sc); + if (n > 0 && n <= 3) { + return n; + } else System.out.println("Numero invalido, elige uno entre las opciones"); + } + return 0; + } + + private static int leerEnteroPositivo(Scanner sc) { + boolean parar = false; + int n = -1; + while (!parar) { + try { + n = sc.nextInt(); + } catch (Exception e) { + System.out.println("Numero invalido vuelve a insertar uno"); + sc.nextLine(); + continue; + } + if (n > 0) parar = true; + else System.out.println("Tiene que ser un numero positivo!"); + } + sc.nextLine(); + return n; + } +} \ No newline at end of file