Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - MirMiriam

Páginas: [1]
1
¡Muchísimas gracias! La verdad que con la dramatización lo he entendido mucho mejor  ;D

Un saludo.

2
Aaah vale estaba mezclándolo, ahora si lo entiendo gracias!!!
Otra pregunta en relación a las excepciones yo la he implementado en el accionlistener de AccionCrearSoldado indicando throws, ¿sería mejor "sacarla" fuera y hacerla en un método aparte?

3
Hola de nuevo, perdona pero no entiendo bien entonces la estructura, porque ¿no habría que meter el parseo en el "try"? Adjunto el error que me aparecía y que no puse en el anterior mensaje, por lo que veo viene del parseo pero no veo como arreglarlo:

Citar
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
   at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
   at java.lang.Integer.parseInt(Integer.java:592)
   at java.lang.Integer.parseInt(Integer.java:615)


4
Buenas noches de nuevo, sigo estudiando y quería perfeccionar el programa intentando meter alguna excepción (es un tema que me está costando bastante entender), pero lo estoy haciendo mal, este es el código que he hecho en el ActionListener de "AccionCrearSoldado":

Código: [Seleccionar]
            if (jtVida.getText().isEmpty() || jtArmadura.getText().isEmpty()) {
                JOptionPane.showMessageDialog(null, "El campo no puede estar vacío");
                try {
                    Integer valor = Integer.parseInt(jtVida.getText());
                    Integer valor2 = Integer.parseInt(jtArmadura.getText());
                } catch (NumberFormatException ex) {
                    JOptionPane.showMessageDialog(null, "El valor tiene que ser numérico");
                }
            }

He estado mirando un post reciente pero no consigo ver el error que estoy cometiendo.

De nuevo muchísimas gracias por cualquier ayuda que me puedas indicar.

5
Muchas gracias por todo de verdad, creo que lo he entendido peeero voy a darle unas cuantas vueltas e intentar hacer pequeños proyectos para asentar lo que me has enseñado porque así visto lo entiendo pero cuando empiece a hacer un nuevo proyecto será cuando me de cuenta de si de verdad lo he comprendido.
De nuevo muchísimas gracias  :) :)

6
Una última pregunta, o eso espero que ya bastante me estás ayudando, para mostrar el resultado de la batalla por un campo de texto en vez de por consola, ¿declaro primero una variable JTextField y la asocio al botón de Luchar o mejor implementar getContentPane() en todos los mensajes.

Gracias de nuevo.

7
¡Muchas gracias de nuevo ;D ;D! los botones de subir y bajar los tenía planteados con dos métodos asociados a la posición detallándolo como comentabas, restando para subir y sumando para bajar, pero lo veo mucho más claro con un solo método.

Me surgen dudas con el botón de la batalla, este no lo veo nada claro, como ya  está el método batalla ¿se podría plantear instanciándolo en la clase Batalla RPG y asociando a cuando se pinche?

Gracias de nuevo.

8
Hola de nuevo, estoy con el botón "Eliminar" y me gustaría, si es posible que me volvieras a ayudar ya que hay algo que no llego a entender de todo, a lo mejor es que lo estoy entendiendo mal tu explicación, con respecto a como indicar que el dato que tiene que eliminar es el del array, lo que he hecho es esto pero está claro que estoy equivocada porque no funciona (estoy en la clase PanelLista).

De nuevo gracias

Código: [Seleccionar]
    private void eliminar(){
        for (Soldado sold: ejercito.soldados)
            modeloLista.removeElement(sold);

    }

    private class ActionEliminarSoldado implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            if (btEliminar.isSelected()) {
                eliminar();
            }

9
Muchísimas gracias de verdad porque no veía la luz, con tus explicaciones, la verdad que son muy claras y sencillas, ahora me veo un poco más capaz de terminarlo  ;D Así que me atrevo con los botones que faltan junto con sus métodos y a cruzar los dedos  ;)

De nuevo muchísimas gracias.

10
Pues voy a utilizar el IDE de IntellJ IDEA, pero no aplicando un interfaz directamente sino escribiendo código ya que también soy de la opinión que es mejor escribir el código desde cero, pero estoy con el problema de que cuando voy a empezar me surgen tantas dudas  que me bloqueo y no consigo escribir ni una sola línea de código.

Te agradecería mucho un pequeño ejemplo de lo que comentas porque no lo entiendo bien, muchísimas gracias por la ayuda.

11
Muchas gracias, pero perdona que te pregunte, otra vez, porque no lo entiendo del todo y por confirmar, en la clase por ejemplo PanelArriba, ¿en el constructor llamo a la clase soldado y como de ella se desglosa Heroes y bestias ya podría aplicar un JList?

Perdona de nuevo, porque aunque veo que swing no es difícil al tener un código ya hecho me es más complicado pasarlo a una interfaz gráfica y me está costando más de lo que esperaba.

12
Pues en un principio he pensado en algo como la imagen que adjunto y una vez que le pinches en el botón de lucha que aparezca un cuadre con el desglose de la batalla.

13
Buenas noches de nuevo, Estoy intentando aplicar la librería swing al código con el que me ayudaron y no lo consigo, ya que al ir a empezar no si si es mejor hacer varias clases JPanel una para los Heroes y otra para las Bestias y dentro de ellas aplicar una estructura sencilla donde elegir el nombre, el tipo de héroe o bestia (hobbit, humano, Orco, etc), la vida y la armadura para luego dar un botón de lucha donde aparecerá el texto que ya teníamos.

Os Agradecería mucho si me pudieras ayudar de nuevo.

Un saludo.

14
!!Muchísimas gracias de verdad!! No sé como agradecerte todo lo que me has ayudado.

 ;D ;D ;D ;D

15
!Muchísimas gracias de verdad, porque estaba muy perdida!

La verdad pensaba que la herencia lo había comprendido mejor pero me ha resultado mucho más útil y sencillo de entender con la manera que indicas.

Una última pregunta si quisiera hacer por ejemplo que un Elfo incrementara su ataque en X puntos si se enfrenta a un Orco, ¿se podría realizar llamando de nuevo al método atacar() dentro de un método específico para esa clase Elfo o es mejor de otra manera?

Muchas gracias de nuevo  ;D

16
Hola a todos, llevo poco tiempo con la programación y estoy con un proyecto, se trata de un juego tipo RPG por turnos basado en el señor de los anillos.

Las características que tiene son las siguientes:

  • Los personajes se dividen en dos categorías: Héroes y Bestias.
  • El ataque de los Heroes se realiza mediante la tirada de dos dados con valores entre 0 y 100 y se elegirá el mayor de las dos tiradas.
  • El ataque de las Bestias será con el lanzamiento de un único dado y los valores irán entre 0 a 90
  • Sólo se producirá un daño al adversario si la potencia ofensiva del atacante es superior al nivel de armadura del defensor. Si es así el daño producido será la diferencia entre la potencia de ataque y el nivel de armadura del oponente.
  • el sistema de batalla, se enfrentarán siempre los personajes situados en la misma posición de cada ejército.
  • En el momento en que un personaje llegue a un nivel de vida igual o inferior a cero se producirá su muerte por lo que se eliminará de su posición y se desplazarán todos sus compañeros en posiciones posteriores para cubrir la baja

Mi problema es que no consigo que el programa finalice, ya que no acumula cuando un personaje ataca a otro, creo que mi función vida() calcula la vida de los héroes y las bestias, pero los héroes y las bestias que están al inicio de la función y los que se atacaron son las copias que tienes en los arreglos por lo tanto en si tus héroes y bestias originales nunca se atacaron y tienen toda la vida, pero, no sé como solucionarlo.

Adjunto el código que tengo:

Clase Ejercito:

Código: [Seleccionar]
public class Ejercito {
    String nombre;
    int puntosVida;
    int nivelResistencia;


    public Ejercito(String nombre, int puntosVida, int nivelResistencia) {
        this.nombre = nombre;
        this.puntosVida = puntosVida;
        this.nivelResistencia = nivelResistencia;

    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getPuntosVida() {
        return puntosVida;
    }

    public void setPuntosVida(int puntosVida) {
        this.puntosVida = puntosVida;
    }

    public int getNivelResistencia() {
        return nivelResistencia;
    }

    public void setNivelResistencia(int nivelResistencia) {
        this.nivelResistencia = nivelResistencia;
    }

Clase Heroes:

Código: [Seleccionar]
package com.tokioschool.Batalla.domain;

import java.util.List;

public class Heroes extends Ejercito {
    int dado1;
    int dado2;

    public Heroes(String nombre, int puntosVida, int nivelResistencia) {
        super(nombre, puntosVida, nivelResistencia);

    }

    public int mayorResultado(){
        dado1=(int) (Math.random()*(100+1));
        dado2=(int) (Math.random()*(100+1));
        System.out.println("primer dado:"+dado1);
        System.out.println("segundo dado:"+dado2);

        return Math.max(dado1, dado2);
    }

    public int atacar(Bestias bestias) {
        int ataque = mayorResultado();
        int resultado = bestias.getPuntosVida() - ataque;
        boolean vid = getPuntosVida() >= 0;
        String men = "Las tiradas no superan la armadura de la bestia, pasa el turno";
        do {

            if (ataque > bestias.getNivelResistencia()) {
                System.out.println(bestias.getPuntosVida() + " - " + ataque + "=" + resultado);
                System.out.println("Datos actualizados de " + bestias.getNombre() + " (Vida=" + resultado + " Armadura=" + bestias.getNivelResistencia() + ")");
                return resultado;
            } else
                System.out.println(men);
            return 0;
        }while (bestias.getPuntosVida() >=0);

    }

    public boolean vida( List<Heroes> heroes){
        boolean vidas = getPuntosVida()<=0;
        if(!vidas);
        System.out.println(getNombre()+" ha sido eliminado");
        return vidas;
    }

    public String toString(){
        return "Lucha entre "+getNombre()+" (Vida="+getPuntosVida()+" Armadura="+getNivelResistencia()+")";
    }

}

Clase Bestias

Código: [Seleccionar]
public class Bestias extends Ejercito {

    int dado;

    public Bestias(String nombre, int puntosVida, int nivelResistencia) {
        super(nombre, puntosVida, nivelResistencia);

    }

    public int getNivelResistencia(){
        return nivelResistencia;
    }

    public int tirarDadosBestias(){
        return dado =(int) (Math.random()*(90+1));
    }

    public int atacarBestias(Heroes heroe) {
        int at = tirarDadosBestias();
        int result = heroe.getPuntosVida() - at;
        String mensaje = "La tirada no ha superado la armadura del heroe, pasa el turno";
        do{
            if (at > heroe.getNivelResistencia()) {
                System.out.println("Turno de las bestias, el resultado del dado es :"+at);
                System.out.println("Datos actualizados de: " + heroe.getNombre() + " (Vida=" + result + " Armadura=" + heroe.getNivelResistencia() + ")");
                return result;
            } else
                System.out.println(mensaje);
            return 0;
        }while(heroe.getPuntosVida()>=0);

    }

    public boolean vida( List<Bestias> bestias){
        boolean vidas = getPuntosVida()<=0;
        if(vidas);
        System.out.println(getNombre()+" ha sido eliminado");
        return vidas;
    }

    public String toString(){
        return " y "+getNombre()+" (Vida="+getPuntosVida()+" Armadura="+getNivelResistencia()+")";
    }

}

Clase Batalla

Código: [Seleccionar]
import java.util.List;

public class Batalla {

    private static Heroes[] ejHero;
    private static Bestias[] ejeBestia;

    public Batalla() {
        ejHero = new Heroes[5];
        ejeBestia = new Bestias[4];
    }

    public static void batalla(List<Heroes> heroes, List<Bestias> bestias) {

        Heroes[] he = new Heroes[heroes.size()];
        he = heroes.toArray(he);

        Bestias[] be = new Bestias[bestias.size()];
        be = bestias.toArray(be);

        do {

            System.out.println(he[0].toString() + be[0].toString());
            System.out.println(he[0].atacar(be[0]));
            System.out.println(be[0].atacarBestias(he[0]));


            System.out.println(he[1].toString() + be[1].toString());
            System.out.println(he[1].atacar(be[1]));
            System.out.println(be[1].atacarBestias(he[1]));

            System.out.println(he[2].toString() + be[2].toString());
            System.out.println(he[2].atacar(be[2]));
            System.out.println(be[2].atacarBestias(he[2]));

            System.out.println(he[3].toString() + be[3].toString());
            System.out.println(he[3].atacar(be[3]));
            System.out.println(be[3].atacarBestias(he[3]));

            System.out.println(he[4].toString() + " se queda en guardia");


        } while (!he[0].vida(heroes) || !be[0].vida(bestias));

    }

}

Clase Principal:

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main (String args[]){
        List<Heroes> ejerHero = new ArrayList<>();
        List<Bestias> ejerBestias = new ArrayList<>();

        ejerHero.add(new Elfos("Legolas", 150, 30));
        ejerHero.add(new Humano("Aragorn", 150, 50));
        ejerHero.add(new Humano("Boromir",100, 60));
        ejerHero.add(new Humano("Gandalf",300, 10));
        ejerHero.add(new Hobbits("Frodo", 20, 10));

        ejerBestias.add(new Orcos("Lurtz", 200, 60));
        ejerBestias.add(new Orcos("Shagrat", 220, 50));
        ejerBestias.add(new Trasgo("Uglúk", 120, 30));
        ejerBestias.add(new Trasgo("Mauhúr", 100, 30));

        Batalla.batalla(ejerHero, ejerBestias);

    }
}

Agradecería cualquier ayuda, gracias de antemano!

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".