Java - Porque la consola queda en running

 
Vista:

Porque la consola queda en running

Publicado por Christian (3 intervenciones) el 22/04/2018 21:57:55
Tengo el siguiente problema, como tarea necesito simular un videojuego de peleadores y monstruos, hice la clase batalla que es donde se supone que pelean, pero en la clase Main al crear la instancia de batalla, no termina de ejecutar todo el código, se queda en ejecución y no muestra nada más.He revisado minuciosamente cada línea y no veo ningun error. En resumen, para que se entienda (pondré solo la clase Batalla y Main, las demas clases no creo que sea necesario ponerlas y evitar que lean mucho) tengo 2 arraylist donde estan los peleadores que van a batallar (que vienen de la clase Luchador, que no la voy a poner por lo que mencioné) y 1 arraylist de un monstruo. El problema sospecho que esta en el método pelea(), porque llega la consola hasta el resultado del lanzamiento de los dados, pero no me arroja nada despues, debería arrojarme que si gané la batalla o perdí, pero nada, les dejo mi código. De todas maneras, tengo mi programa alojado en este GitHub por si quieren verlo completo o clonarlo para que lo prueben ustedes: https://github.com/christ998/Avances/tree/master/src
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import java.util.ArrayList;
import java.util.Scanner;
 
public class Batalla {
    private ArrayList<Luchador> peleadores = new ArrayList<>();
    private ArrayList<Monstruo> monstruos = new ArrayList<>();
    int dif;
 
    public Batalla() {
        asignarMonstruo();
        asignarPeleadores();
        lanzarDado();
        pelea();
    }
 
    public void asignarPeleadores() {
        Scanner leer = new Scanner(System.in);
        System.out.println("Eliga la cantidad de luchadores que van a la batalla ");
        int cant = leer.nextInt();
 
        InventarioLuchador.mostrarInventario();
        System.out.println("Elija los "+cant+" luchadores (debe ingresar la posición)");
 
        for(int i=0; i < cant; i++){
            int pos = leer.nextInt();
            peleadores.add(InventarioLuchador.inventario.get(pos-1));
 
            System.out.println("Luchador listo para la batalla");
        }
        System.out.println("Luchadores listos");
    }
 
    public void asignarMonstruo() {
        Monstruo rival = new Monstruo();
        monstruos.add(rival);
    }
 
    public void lanzarDado() {
        Dado dado1 = new Dado(8);
        Dado dado2 = new Dado(6);
        this.dif = dado1.getCara()-dado2.getCara();
        System.out.println("La diferencia en el lanzamiento de dados es: "+this.dif);
    }
 
    public int getDado(){
        return Math.abs(this.dif);
    }
 
    public void ordenVelocidad(){
        ArrayList <Luchador> aux = new ArrayList<>(1);
        for(int i=0; i < peleadores.size();i++){
            for(int j=i+1; j < peleadores.size();j++){
                if(peleadores.get(i).getVel() < peleadores.get(j).getVel()){
                    aux.add(0,peleadores.get(i));
                    peleadores.add(i,peleadores.get(j));
                    peleadores.add(j,aux.get(0));
                }
            }
        }
    } //Este método ordena el Array de peleadores que van a pelear segun sus velocidades, de mayor a menor
 
    public int casoDado(int daño){
        if(this.dif > 0){
            daño = daño*this.dif;
        }
        if(this.dif < 0){
            daño = daño*getDado();
        }
        return daño;
    }
 
    public void ataqueJugador(int i){
        double ataq = peleadores.get(i).getAtk();
        if((peleadores.get(i).getFaccion().equals("Agua")&& monstruos.get(0).getFaccion().equals("Fuego"))|| (peleadores.get(i).getFaccion().equals("Fuego")) && monstruos.get(0).getFaccion().equals("Planta")){
            ataq = ataq*1.5;
        }
        if(peleadores.get(i).getFaccion().equals("Planta")&& monstruos.get(0).getFaccion().equals("Agua")){
            ataq = ataq*1.5;
        }
        if(this.dif > 0){
            double daño = (ataq-monstruos.get(0).getDef())*getDado();
            monstruos.get(0).disminuirVida(daño);
        }
        if(this.dif == 0 || this.dif < 0){
            double daño = ataq-monstruos.get(0).getDef();
            monstruos.get(0).disminuirVida(daño); //El metodo disminuir vida esta en la clase Monstruo
        }
    }
 
    public void ataqueMonstruo(int i){
        double ataq = monstruos.get(0).getAtk();
        if((monstruos.get(0).getFaccion().equals("Agua")&& peleadores.get(i).getFaccion().equals("Fuego"))|| (monstruos.get(0).getFaccion().equals("Fuego")) && peleadores.get(i).getFaccion().equals("Planta")){
            ataq = ataq*1.5;
        }
        if(monstruos.get(0).getFaccion().equals("Planta")&& peleadores.get(i).getFaccion().equals("Agua")){
            ataq = ataq*1.5;
        }
        if(this.dif < 0){
            double daño = (ataq-peleadores.get(i).getDefensa())*getDado();
            peleadores.get(i).disminuirVida(daño);
        }
        if(this.dif == 0 || this.dif > 0){
            double daño = ataq-peleadores.get(i).getDefensa();
            peleadores.get(i).disminuirVida(daño); //El metodo disminuir vida esta en la clase Luchador
        }
    }
 
    public void pelea(){
        for(int i=0; i < peleadores.size(); i++){
            do{
                ataqueJugador(i);
 
                ataqueMonstruo(i);
 
            }while(peleadores.get(i).getVida()<= 0 || monstruos.get(0).getHp()<=0);
            if(monstruos.get(0).getHp()<=0){
                System.out.println("HAS GANADO");
            }else{
                System.out.println("Murio tu luchador");
            }
 
        }
        System.out.println("PERDISTE LA BATALLA :/");
    }
}
 
public class Main {
    public static void main(String[] args) {
        InventarioLuchador ej = new InventarioLuchador();
        ej.agregarLuchador();
        ej.agregarLuchador();
        ej.agregarLuchador();
        ej.agregarLuchador();
        ej.agregarLuchador();
        Batalla bat = new Batalla();
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder