CMD Apllikationsverlauf (?)

fiber

Bekanntes Mitglied
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? :
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();
		}
	}
}
 

Joose

Top Contributor
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? :

Weil du in deinem Code nirgends eine Zeile hast die auf der Konsole ausgegeben werden soll!

In der Methode "kampfDerHelden" baust du dir diesen Kampfverlauf zwar zusammen ... aber du gibst diesen String weder auf der Konsole aus noch als Rückgabewert zurück!
Ohne entsprechenden Code wird es zu keiner Ausgabe kommen.
 

fiber

Bekanntes Mitglied
hab´s :) Ich musste nur überall System.out.println schreiben.( bin noch nicht so fit beim Programmieren, leider!)

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.
		System.out.println(angreiferName +" greift "+ verteidigerName +" an! \n\n") ;
		
		// Die Helden begrüßen sich
		System.out.println( 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
			System.out.println( 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
			System.out.println( 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) {
			System.out.println(verteidiger.sterben());
		}else{
			System.out.println( angreifer.sterben());
		}
		// Kampfgeschehen zurückgeben
	}
	public static void verzoegere(int millisekunden) {
		try{
			Thread.sleep(millisekunden);
		} catch(InterruptedException ex) {
			Thread.currentThread().interrupt();
		}
	}
}
 
Zuletzt bearbeitet:

Oben