Hallo
Sorry für den Titel meiner Frage, ich wusste nicht wie ich ihn nennen sollte.
Und zwar habe ich ein folgendes Problem,
wenn ich mein Applikation laufen lasse sollte ich den Verlauf des "Kampfes" auf der Konsole sehen können, leider sehen ich keinen Verlauf. Woran kann es liegen? :
Sorry für den Titel meiner Frage, ich wusste nicht wie ich ihn nennen sollte.
Und zwar habe ich ein folgendes Problem,
wenn ich mein Applikation laufen lasse sollte ich den Verlauf des "Kampfes" auf der Konsole sehen können, leider sehen ich keinen Verlauf. Woran kann es liegen? :
Java:
public class Held {
//Attribute
private String name;
private int lebenspunkte;
private int kraft;
private int geschicklichkeit;
private boolean boese;
private Waffe waffe;
// No-Arg-Konstruktor
public Held() {}
// Konstruktor mit Waffe
public Held(String name, int lebenspunkte, int kraft,
int geschicklichkeit, boolean boese, Waffe waffe) {
this.name = name;
this.boese = boese;
if (lebenspunkte >= 0){
this.lebenspunkte = lebenspunkte;
}
if(kraft >= 0 && kraft <= 100){
this.kraft = kraft;
}
if(geschicklichkeit >= 0 && geschicklichkeit <= 100){
this.geschicklichkeit = geschicklichkeit;
}
if(waffe.setFrei(false)) {
this.waffe = waffe;
}
}
//Konstruktor mit Argumenten
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;
}
}
public void setBoese(boolean boese) {
this.boese = boese;
}
public boolean isBoese() {
return boese;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setGeschicklichkeit(int geschicklichkeit){
this.geschicklichkeit = geschicklichkeit;
}
public boolean getGeschicklichkeit() {
if(this.geschicklichkeit >= 0){
this.geschicklichkeit = geschicklichkeit;
return true;
}
return false;
}
public void setKraft(int kraft){
this.kraft = kraft;
}
public int getKraft() {
return kraft;
}
public int getLebenspunkte(){
return lebenspunkte;
}
public boolean setLebenspunkte(int lebenspunkte){
if(lebenspunkte > 0){
this.lebenspunkte = lebenspunkte;
return true;
}
return false;
}
public void setWaffe(Waffe waffe) {
// Held trägt bereits eine Waffe
if(this.getWaffe() !=null) {
//Bereits vorhandenen Waffe
this.waffe.setFrei(true);
}
// Waffe wird ausgerüstet
this.waffe = waffe;
}
public Waffe getWaffe() {
return waffe;
}
// Objektmethode zum Begrüßen /Vorstellen
public String vorstellen() {
if(boese) {
return name+ ": Ich bin " + name + " und ich werde dich vernichten! HARRHARR";
}
return name+ ": Mein Name ist "+ name +" und ich freue mich "+
"auf einen ehrenvollen und fairen Kampf!";
}
// Held erleidet schaden
public void reduziereLebenspunkte(int schaden){
if(schaden >= lebenspunkte){
lebenspunkte = 0;
}else{
lebenspunkte -= schaden;
}
}
// Methoden zum schlagen einies anderen Helden
public int schlagen(Held andererHeld){
int schaden = 0;
// Schaden kann nur erzeugt werden, wenn der Held noch lebt
if(lebenspunkte >0){
schaden = (int) (kraft * (1-andererHeld.geschicklichkeit/ 100)
* Math.random());
andererHeld.reduziereLebenspunkte(schaden);
}
return schaden;
}
// Methode zum sterben
public String sterben (){
if(boese){
return name +": Das kann nicht sein! Der böse wird ewig leben";
}else{
return name + ": Das gute wird siegen,,!";
}
}
}
Java:
public class Waffe {
private int schaden = 1;
private boolean frei = true;
public Waffe(int schaden) {
if(schaden >= 0 && schaden <= 100) {
this.schaden = schaden;
}
}
public int getSchaden() {
return schaden;
}
public boolean getSchaden(int schaden) {
if(schaden >= 0 && schaden <= 100) {
this.schaden = schaden;
return true;
}
return false;
}
public boolean isFrei() {
return frei;
}
public boolean setFrei( boolean frei) {
if(!this.frei && !frei) {
return false;
}
this.frei = frei;
return true;
}
}
Java:
public class HeldenApp {
public static void main(String... args) {
Held shaggy = new Held("Shaggy", 200, 60, 70, false, new Waffe(30));
Held henny = new Held("Henny", 200, 65, 50, true, new Waffe(10));
HeldenApp.kampfDerHelden(shaggy, henny, 3000);
}
public static void kampfDerHelden(Held angreifer, Held verteidiger, int speed) {
// Name der helden speichern
String angreiferName = angreifer.getName();
String verteidigerName = verteidiger.getName();
// Text, der den Kampf der Helden dokumentiert.
String kampfgeschehen = angreiferName +" greift "+ verteidigerName +" an! \n\n" ;
// Die Helden begrüßen sich
kampfgeschehen += angreifer.vorstellen() +" \n "+ verteidiger.vorstellen() + "\n\n";
verzoegere(speed * 2);
// Die Helden kaempfen bis auf den Tod
while (angreifer.getLebenspunkte() > 0 && verteidiger.getLebenspunkte() > 0) {
// Angriff auf den verteidiger
kampfgeschehen += angreiferName + " schlaegt "+ verteidigerName +" !\n"+
verteidigerName +" erleidet schaden von: " +
angreifer.schlagen(verteidiger) +" und hat noch "+
verteidiger.getLebenspunkte()+" Lebenspunkte. \n\n";
verzoegere(speed);
// verteidiger antwortet mit gegenangriff
kampfgeschehen += verteidigerName + " schlaegt "+ angreiferName +" !\n"+
angreiferName +" erleidet schaden von: " +
verteidiger.schlagen(angreifer) +" und hat noch "+
angreifer.getLebenspunkte()+" Lebenspunkte. \n\n";
verzoegere(speed);
}
// Ein Held stirbt gibt ein entsprechendes Geräusch von sich
if(angreifer.getLebenspunkte() > 0) {
kampfgeschehen += verteidiger.sterben();
}else{
kampfgeschehen += angreifer.sterben();
}
// Kampfgeschehen zurückgeben
}
public static void verzoegere(int millisekunden) {
try{
Thread.sleep(millisekunden);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}