Wie bekomme ich es hin das die Lebenspunkte vom Monster in Java um eins abnehmen?

1 Antwort

Du brauchst eine .setLebenspunkte() oder eine .decreaseLebenspunkte() Methode in deiner Klasse.

//z.B. 
public void decreaseLebenspunkte(int damage){
     lebensPunkte -= damage;
}
//oder
public void setLebenspunkte(int val){
    lebensPunkte = val;
}

//beim aufrufen dann

monster.decreaseLebenspunkte(1);
//oder
monster.setLebenspunkte(monster.getLebenspunkte()-1);
Woher ich das weiß:Studium / Ausbildung – Informatikstudent
al23ma 
Fragesteller
 16.01.2022, 21:48

monster.setLebenspunkte(monster.getLebenspunkte()-1);

Also wenn ich das eingebe werden automatisch die Lebenspunkte um eins reduziert und vom Programm dann als neue Lebenspunkte fürs Monster angenommen.

0
al23ma 
Fragesteller
 16.01.2022, 22:02
@whgoffline

Wenn ich das einsetze bekomme ich leider alle Lebenspunkte abgezogen und nicht nur einen. Also wenn mein Monster 5 Leben hatte hat es danach 0 Leben. Was soll ich machen?

0
al23ma 
Fragesteller
 16.01.2022, 22:08
@whgoffline
if (3 == antwort) {
    scan = new Scanner(System.in);
    Monster monster;
    Zauberer zauberer;



    System.out.println("Bennen Sie bitte hier ihren neuen Zauberer:");
    name = scan.nextLine();
    Wuerfel wuerfel;

    wuerfel = new Wuerfel(6);
    zauberer = new Zauberer(name, 4, (5 * wuerfel.wuerfeln()), 7, 10, 2);
    monster = new Monster(4 * wuerfel.wuerfeln(), 5);
    System.out.println("Ihr Zauberer " + zauberer.getName() + " hat das Licht der Welt erblickt! ");

    {

        System.out.println("Ihr Zauberer " + zauberer.getName() + " hat einen Angriffswert von 4, multipliziert mit " +
                "ihrer Gewürfelten Zahl, ergibt das " + zauberer.getAngriffswert() +
                "Zu ihren normalen " + zauberer.getLebenspunkte() + " bekommt ihr Zauberer durch seinen heilenden Kräfte ");
        System.out.println("noch weitere " + zauberer.getHeilen() + " Lebenspunkte.Somit hat Ihr Zauberer insgesamt " + (zauberer.getLebenspunkte() + zauberer.getHeilen()) + " Lebenspunkte. ");
        System.out.println("Das Monster, gegen das sie kämpfen hat eine Angriffswert von 3, multipliziert " +
                "mit der gewürfelten Zahl vom Monster erbit das  " + monster.getAngriffswert() + ".");
        System.out.println("Das Moonster hat " + monster.getLebenspunkte() + " Lebenspunkte ");

        Wuerfel wuerfeln;
        wuerfeln = new Wuerfel(10);
        if (zauberer.getAngriffswert() > monster.getAngriffswert()) {
            monster.setLebenspunkte(monster.getLebenspunkte() - 1);

            System.out.println("Ihr Zauberer " + zauberer.getName() + " hat daher diesn Kampf gewonnen." +
                    " Daher hat ihr Zauberer nun " + zauberer.getLebenspunkte() + " und das Monster " + monster.getLebenspunkte() + " Lebenspunkte.");
        } else

            zauberer.setLebenspunkte(monster.getLebenspunkte() -1);
            System.out.println("Ihr Zauberer " + zauberer.getName() + " hat daher diesn Kampf leider verloren." +
                    " Daher hat ihr Zauberer nun nur noch " + zauberer.getLebenspunkte() + " und das Monster " + monster.getLebenspunkte() + " Lebenspunkte");


    }

}
0
whgoffline  16.01.2022, 22:09
@al23ma

Und der Code wo du setLebenspunkte und getLebenspunkte programmiert hast?

0
al23ma 
Fragesteller
 16.01.2022, 22:10
@whgoffline

Das hatte ich in einer Unterklasse gemacht

0
whgoffline  16.01.2022, 22:13
@al23ma

Da haben wir doch schonmal einen Fehler. Du musst setLebenspunkte natürlich auch richtig implementieren. Also tausch mal public int setLebenspunkte(int i) {return lebenspunkte;}

durch

public void setLebenspunkte(int val){
    lebenspunkte = val;
}
0
al23ma 
Fragesteller
 16.01.2022, 22:19
@whgoffline

Danke, jetzt funktioniert es. Noch mal vielen vielen dank, das Sie sich die Zeit genommen haben mir zu helfen.

1