From 38fe9675d3ae6d99c38c7bf7030f526a771f8f83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=20Mu=C3=B1oz?= Date: Mon, 25 Nov 2024 12:08:37 +0100 Subject: [PATCH] feat(ch 5): independence day --- src/tutorialJava/UtilsArrays.java | 13 ++ .../independenceDay/CampoBatalla.java | 178 ++++++++++++++++++ .../capitulo5/independenceDay/Humano.java | 62 ++++++ .../capitulo5/independenceDay/Malvado.java | 53 ++++++ .../capitulo5/independenceDay/Principal.java | 25 +++ 5 files changed, 331 insertions(+) create mode 100644 src/tutorialJava/capitulo5/independenceDay/CampoBatalla.java create mode 100644 src/tutorialJava/capitulo5/independenceDay/Humano.java create mode 100644 src/tutorialJava/capitulo5/independenceDay/Malvado.java create mode 100644 src/tutorialJava/capitulo5/independenceDay/Principal.java diff --git a/src/tutorialJava/UtilsArrays.java b/src/tutorialJava/UtilsArrays.java index 0efd5d7..6ad2037 100644 --- a/src/tutorialJava/UtilsArrays.java +++ b/src/tutorialJava/UtilsArrays.java @@ -149,6 +149,19 @@ public class UtilsArrays { } + /* + * @param m + */ + public static void imprimeMatriz (char m[][]) { + for (int i = 0; i < m.length; i++) { + for (int j = 0; j < m[i].length; j++) { + System.out.print(m[i][j] + " "); + } + System.out.println(); + } + } + + public static void ordenaArray (int a[], boolean asc) { boolean hayIntercambios; do { diff --git a/src/tutorialJava/capitulo5/independenceDay/CampoBatalla.java b/src/tutorialJava/capitulo5/independenceDay/CampoBatalla.java new file mode 100644 index 0000000..71c631c --- /dev/null +++ b/src/tutorialJava/capitulo5/independenceDay/CampoBatalla.java @@ -0,0 +1,178 @@ +package tutorialJava.capitulo5.independenceDay; + +import java.util.Arrays; + +import tutorialJava.Utils; + +public class CampoBatalla { + + private String nombre; + private Humano humanos[] = new Humano[20]; + private Malvado malvados[] = new Malvado[20]; + + /** + * + * @param nombre + */ + public CampoBatalla (String nombre) { + this.nombre = nombre; + + for (int i = 0; i < humanos.length; i++) { + humanos[i] = new Humano("H-" + i); + } +// humanos[humanos.length - 1].setPuntosVida( +// humanos[humanos.length - 1].getPuntosVida() * 2); + + Humano ultimoHumano = humanos[humanos.length - 1]; + ultimoHumano.setPuntosVida(ultimoHumano.getPuntosVida() * 2); + + for (int i = 0; i < malvados.length; i++) { + malvados[i] = new Malvado("M-" + i); + } + // Establezco el doble de puntos de vida al último malvado + Malvado ultimoMalvado = malvados[malvados.length - 1]; + ultimoMalvado.setPuntosVida(ultimoMalvado.getPuntosVida() * 2); + } + + + public void mezclaHumanos () { + for (int i = 0; i < humanos.length; i++) { + int ind1 = Utils.obtenerNumeroAzar(0, humanos.length - 1); + int ind2 = Utils.obtenerNumeroAzar(0, humanos.length - 1); + Humano aux = humanos[ind1]; + humanos[ind1] = humanos[ind2]; + humanos[ind2] = aux; + } + } + + public void mezclaMalvados () { + for (int i = 0; i < malvados.length; i++) { + int ind1 = Utils.obtenerNumeroAzar(0, malvados.length - 1); + int ind2 = Utils.obtenerNumeroAzar(0, malvados.length - 1); + Malvado aux = malvados[ind1]; + malvados[ind1] = malvados[ind2]; + malvados[ind2] = aux; + } + } + + /** + * + */ + public void batalla () { + do { + // Disparo sobre el primer malvado vivo + Malvado m = getPrimerMalvadoVivo(); + m.setPuntosVida(m.getPuntosVida() - + Utils.obtenerNumeroAzar(5, 25)); + if (m.getPuntosVida() <= 0) { + m.setVivo(false); + m.setPuntosVida(0); + } + + // Sólo si queda algún malvado vivo, disparo sobre humano + if (getPrimerMalvadoVivo() != null) { + // Disparo sobre el primer humano vivo + Humano h = getPrimerHumanoVivo(); + h.setPuntosVida(h.getPuntosVida() - + Utils.obtenerNumeroAzar(5, 25)); + if (h.getPuntosVida() <= 0) { + h.setVivo(false); + h.setPuntosVida(0); + } + } + + // Imprimo campo de batalla + System.out.println(toString()); + System.out.println(); + + } while(getPrimerHumanoVivo() != null && + getPrimerMalvadoVivo() != null); + + // Si llego hasta aquí, un bando no tiene soldados vivos + if (getPrimerHumanoVivo() != null) { + System.out.println("Han ganado los humanos"); + } + else { + System.out.println("Han ganado los malvados"); + } + + } + + public Humano getPrimerHumanoVivo() { + for (int i = 0; i < humanos.length; i++) { + if (humanos[i].isVivo()) { + return humanos[i]; + } + } + return null; + } + + public Malvado getPrimerMalvadoVivo() { + for (int i = 0; i < malvados.length; i++) { + if (malvados[i].isVivo()) { + return malvados[i]; + } + } + return null; + } + + + + + + + + public String getNombre() { + return nombre; + } + + public void setNombre(String nombre) { + this.nombre = nombre; + } + + public Humano[] getHumanos() { + return humanos; + } + + public void setHumanos(Humano[] humanos) { + this.humanos = humanos; + } + + public Malvado[] getMalvados() { + return malvados; + } + + public void setMalvados(Malvado[] malvados) { + this.malvados = malvados; + } + + public String toString() { + StringBuffer sb = new StringBuffer("Campo: " + this.nombre); + sb.append("\nHumanos: "); + for (int i = 0; i < humanos.length; i++) { + if (humanos[i].isVivo()) { + sb.append(humanos[i].getNombre() + ":" + + humanos[i].getPuntosVida() + ":" + + humanos[i].isVivo() + " "); + } + } + + sb.append("\nMalvados: "); + for (int i = 0; i < malvados.length; i++) { + if (malvados[i].isVivo()) { + sb.append(malvados[i].getNombre() + ":" + + malvados[i].getPuntosVida() + ":" + + malvados[i].isVivo() + " "); + } + } + + return sb.toString(); + } + + +} + + + + + diff --git a/src/tutorialJava/capitulo5/independenceDay/Humano.java b/src/tutorialJava/capitulo5/independenceDay/Humano.java new file mode 100644 index 0000000..bf77832 --- /dev/null +++ b/src/tutorialJava/capitulo5/independenceDay/Humano.java @@ -0,0 +1,62 @@ +package tutorialJava.capitulo5.independenceDay; + +import tutorialJava.Utils; + +public class Humano { + + private int puntosVida; + private String nombre; + private boolean vivo; + + /** + * + */ + public Humano() { + } + + /** + * + * @param puntosVida + * @param nombre + * @param vivo + */ + public Humano(String nombre) { + puntosVida = Utils.obtenerNumeroAzar(50, 100); + this.nombre = nombre; + vivo = true; + } + + public int getPuntosVida() { + return puntosVida; + } + + public void setPuntosVida(int puntosVida) { + this.puntosVida = puntosVida; + } + + public String getNombre() { + return nombre; + } + + public void setNombre(String nombre) { + this.nombre = nombre; + } + + public boolean isVivo() { + return vivo; + } + + public void setVivo(boolean vivo) { + this.vivo = vivo; + } + + public String toString() { + return "Humano [puntosVida=" + puntosVida + ", nombre=" + nombre + ", vivo=" + vivo + "]"; + } + +} + + + + + diff --git a/src/tutorialJava/capitulo5/independenceDay/Malvado.java b/src/tutorialJava/capitulo5/independenceDay/Malvado.java new file mode 100644 index 0000000..cfb4529 --- /dev/null +++ b/src/tutorialJava/capitulo5/independenceDay/Malvado.java @@ -0,0 +1,53 @@ +package tutorialJava.capitulo5.independenceDay; + +import tutorialJava.Utils; + +public class Malvado { + + private int puntosVida; + private String nombre; + private boolean vivo; + + public Malvado() { + super(); + } + + public Malvado(String nombre) { + this.puntosVida = Utils.obtenerNumeroAzar(50, 100); + this.nombre = nombre; + this.vivo = true; + } + + public int getPuntosVida() { + return puntosVida; + } + + public void setPuntosVida(int puntosVida) { + this.puntosVida = puntosVida; + } + + public String getNombre() { + return nombre; + } + + public void setNombre(String nombre) { + this.nombre = nombre; + } + + public boolean isVivo() { + return vivo; + } + + public void setVivo(boolean vivo) { + this.vivo = vivo; + } + + public String toString() { + return "Malvador [puntosVida=" + puntosVida + ", nombre=" + nombre + ", vivo=" + vivo + "]"; + } + + + + + +} diff --git a/src/tutorialJava/capitulo5/independenceDay/Principal.java b/src/tutorialJava/capitulo5/independenceDay/Principal.java new file mode 100644 index 0000000..cc857dc --- /dev/null +++ b/src/tutorialJava/capitulo5/independenceDay/Principal.java @@ -0,0 +1,25 @@ +package tutorialJava.capitulo5.independenceDay; + +import tutorialJava.Utils; + +public class Principal { + + public static void main(String[] args) { + CampoBatalla campo = new CampoBatalla("Rute"); + + campo.mezclaHumanos(); + campo.mezclaMalvados(); + System.out.println(campo.toString()); + + campo.batalla(); + + } + +} + + + + + + +