Hallo!
Bin beim OOP auf ein Tutorial auf youtube gestossen und habe fürs Verständnis mitprogrammiert.
Am Ende sollte er den Kampf ausgeben, macht er aber nicht. Ich kann den Fehler nicht finden!
Bitte um Hilfe.
Meine Helden-Klasse:
Bin beim OOP auf ein Tutorial auf youtube gestossen und habe fürs Verständnis mitprogrammiert.
Am Ende sollte er den Kampf ausgeben, macht er aber nicht. Ich kann den Fehler nicht finden!
Bitte um Hilfe.
Java:
package HeldenApp;
public class HeldenApp {
public static void main(String[] args) {
Held rudi= new Held("Rudi", 100, 100, 100, true);
System.out.println(rudi.vorstellen());
System.out.println("Name: " + rudi.getName());
System.out.println("Kraft: " + rudi.getKraft());
System.out.println("Geschick: " + rudi.getgeschicklichkeit());
System.out.println("Lebenspunkte: " + rudi.getLebenspunkte());
System.out.println("");
Held hamlet= new Held("Hamlet", 100, 100, 100, false);
System.out.println(hamlet.vorstellen());
System.out.println("Name: " + hamlet.getName());
System.out.println("Kraft: " + hamlet.getKraft());
System.out.println("Geschick: " + hamlet.getgeschicklichkeit());
System.out.println("Lebenspunkte: " + hamlet.getLebenspunkte());
System.out.println(HeldenApp.kampf(hamlet, rudi));
}
public static String kampf(Held angreifer, Held verteidiger){
//Name der Helden nochmals abspeichern (so man muss nicht immer die get-Methode aufrufen)
String nameAngreifer = angreifer.getName();
String nameVerteidiger = verteidiger.getName();
String kampfgeschehen = nameAngreifer +" attackiert " + nameVerteidiger+"\n\n";
//begrüssung
kampfgeschehen+=angreifer.vorstellen() +"\n"+ verteidiger.vorstellen()+"\n\n";
//Kampf
while(angreifer.getLebenspunkte() > 0 && verteidiger.getLebenspunkte() > 0){
//Angriff auf den Verteidiger
kampfgeschehen += nameAngreifer +" schlägt "+ nameVerteidiger + "\n"
+ nameVerteidiger + " erleidet Schaden von " + angreifer.schlagen(verteidiger) +
" und hat noch " + verteidiger.getLebenspunkte()+"Lebenspunkte.\n\n";
//Verteidiger antwortet
kampfgeschehen += nameVerteidiger +" schlägt "+ nameAngreifer + "\n"
+ nameAngreifer + " erleidet Schaden von " + verteidiger.schlagen(angreifer) +
" und hat noch " + angreifer.getLebenspunkte()+"Lebenspunkte.\n\n";
}
if(angreifer.getLebenspunkte() > 0){
kampfgeschehen+=verteidiger.sterben();
} else {
kampfgeschehen+=angreifer.sterben();
}
return kampfgeschehen;
}
}
Meine Helden-Klasse:
Java:
package HeldenApp;
public class Held {
//Attribute
private String name;
private int lebenspunkte;
private int kraft; //nicht höher als 100!
private int geschicklichkeit; //nicht höher als 100!
private boolean boese;
public Held(String name, int lebenspunkte, int kraft, int geschicklichkeit, boolean boese) {
this.name = name;
this.boese = boese;
if (lebenspunkte > 0) {
this.lebenspunkte = lebenspunkte;
}
if (kraft > 0) {
this.kraft = kraft;
}
if (geschicklichkeit > 0) {
this.geschicklichkeit = geschicklichkeit;
}
}
//getter und setter
public void boese(boolean boese) {
this.boese = boese;
}
public boolean isBoese() {
return boese;
}
public String getName() {
return name;
}
public int getKraft() {
return kraft;
}
public boolean setKraft(int kraft) {
if (kraft > 0) {
this.kraft = kraft;
return true;
}
return false;
}
public int getgeschicklichkeit() {
return geschicklichkeit;
}
public boolean setgeschicklichkeit(int geschicklichkeit) {
if (geschicklichkeit > 0) {
this.geschicklichkeit = geschicklichkeit;
return true;
}
return false;
}
public int getLebenspunkte() {
return lebenspunkte;
}
public boolean setLebenspunkte(int lebenspunkte) {
if (lebenspunkte > 0) {
this.lebenspunkte = lebenspunkte;
return true;
}
return false;
}
//Objektmethode zur Begrüssung
public String vorstellen() {
if (boese) {
return "HARHAR - mein Name ist " + name + ", der dunkle Herrscher!";
} else {
return "Ich bin " + name + ",ein Krieger des Lichts!";
}
}
//Held erleidet Schaden
public void reduziereLebenspunkte(int schaden) {
if (schaden >= lebenspunkte) {
lebenspunkte = 0;
} else {
lebenspunkte -= schaden;
}
}
//Methode zum angreifen
public int schlagen(Held andererHeld) {
int schaden = 0;
//Schaden kann nur gemacht werden wenn der Gegner noch lebt
if (lebenspunkte > 0) {
schaden = (int) (kraft * (1 - andererHeld.geschicklichkeit / 100) * Math.random()); //je höher geschick des anderen, umso höher der schaden!
andererHeld.reduziereLebenspunkte(schaden);
}
return schaden;
}
//Methode zum sterben
public String sterben() {
if (boese) {
return name + ": ARRRRGGGGG - das Böse wird sich rächen!";
} else {
return name + ": Das Licht wird über dich fallen!";
}
}
}