Methoden Einfache Loops?

Racheon

Mitglied
Hallo, ich bin jetzt über meinen letzten Fehler hinweggekommen ( Ich habe statt println immer printIn geschrieben, danke nochmal 😛), aber jetzt brauche ich erneut Hilfe. Ich habe diesmal keine Compilerfehler oder so etwas, habe aber ein kleines Textadventure geschrieben/angefangen, dass ich noch um ein paar Sachen erweitern will, damit es auch etwas spannend ist. Bisweilen bin ich so weit gekommen:
Java:
public class TextAdventure 
{
	public static void main(String[] args)
	{
        double money = 5; double life = 100; byte level = 1; double treasureRandom = Math.random() * 10;
		byte runaway1 = 1; byte fight1 = 2;
		
		System.err.println("STATUS");
		System.out.println("LEVEL: " + level);
		System.out.println("LEBEN: " + life);
		System.out.println("GOLD: " + money);
		System.out.println();
        
        System.out.println("Du bist auf einer Weggabelung. Richtung 1 oder 2?");
        int directionChoose1 = new java.util.Scanner(System.in).nextInt();
        
        
        if(directionChoose1 == 1)
        {
        	System.out.println();
            System.out.println("Ein Monster erscheint!");
            System.out.println("Willst du 1: Wegrennen oder 2: Kämpfen?");
            byte chooseOption = new java.util.Scanner(System.in).nextByte();
            
            if(chooseOption == 1)
            {
            	System.out.println();
            	System.out.println("Du bist geflüchtet. Spiel zuende.");
            }
            
            if(chooseOption == 2)
            {
            	double lifeMonster = 10;
            	System.out.println();
            	System.out.println("Der Kampf beginnt!");
            	    
            	if(lifeMonster > 0)
            	{
            		double attackMonster1 = Math.random() * 10;
            	    System.out.println();
            	    System.out.println("1: Angreifen");
            	    double attack1 = Math.random() * 10;
            	    System.out.printf("Du erzielst %s Schadenspunkte%n", attack1);
            	    lifeMonster -= attack1;
            	    System.out.printf("Dem Monster verbleiben %s Lebenspunkte!%n", lifeMonster);
            	    life -= attackMonster1;
            	    System.out.printf("Das Monster greift an und verursacht %s Schadenspunkte!%n", attackMonster1);
            	    System.out.printf("Dir verbleiben %s Lebenspunkte.%n", life);
            	    System.out.println("Gib 'next' ein, um fortzufahren.");
            	    String randomType = new java.util.Scanner(System.in).nextLine();
            	    
                	if(lifeMonster > 0)
                	{
                		double attackMonster2 = Math.random() * 10;
                	    System.out.println();
                	    System.out.println("1: Angreifen");
                	    double attack2 = Math.random() * 10;
                	    System.out.printf("Du erzielst %s Schadenspunkte%n", attack1);
                	    lifeMonster -= attack2;
                	    System.out.printf("Dem Monster verbleiben %s Lebenspunkte!%n", lifeMonster);
                	    life -= attackMonster2;
                	    System.out.printf("Das Monster greift an und verursacht %s Schadenspunkte!%n", attackMonster2);
                	    System.out.printf("Dir verbleiben %s Lebenspunkte.%n", life);
                	}  
                	
                	if(lifeMonster < 0)
                	{
                		System.out.println();
                		System.out.println("Monster wurde besiegt! Glückwunsch!");
                	}
            	}  
            }
        }
        
        if(directionChoose1 == 2)
        {
        	System.out.println();
        	System.out.println("Du findest eine Schatztruhe!");
        	money += treasureRandom;
        	System.out.printf("Du hast %s Gold gefunden! Du hast nun %s Gold!%n", treasureRandom, money);
        }
	}

}

Der Code ist schon etwas länger, ich hoffe ihr könnt ihn euch 5 Minuten durchlesen.
Ich erkläre kurz:Am Anfang kann man Links oder Rechts gehen, dann bekommt man entweder eine Truhe mit Geld oder der Kampf gegen ein Monster beginnt.
Und da würde ich gerne wissen, wie man von der Zeile
Java:
            	if(lifeMonster > 0)
bis
Java:
                	if(lifeMonster < 0)
                	{
                		System.out.println();
                		System.out.println("Monster wurde besiegt! Glückwunsch!");
                	}

einen Loop macht, damit der Kampf rundenbasiert abläuft. (Es wird solange wiederholt, bis die Datei merkt dass lifeMonster kleiner als Null ist.)
Am besten mit Code posten 😀

Der Code ist schlecht, bin immer noch ein Anfänger 🙂
Ich würde ansonsten noch gerne wissen;
- gibt es eine andere Möglichkeit ausser Math.random, eine zufällige Zahl zu generieren, denn Math.random nutzt ja soweit ich weiss immer double und generiert Kommazahlen. Wie macht man Nicht-Kommazahlen?
- und selbst wenn ich einen Loop einbauen würde, wie kann ich es dann schaffen, dass bei jeden Runde ein neuer Monster- und Spielerangriffsschaden generiert wird?

Wenn ihr mir helfen könnt, danke, ansonsten... Ich habe es etwas kompliziert geschrieben :/
 
Ohne jetzt genauer und intensiv genug in deinen Code zu schauen, um nachvollziehen zu können, was du da alles gemacht hast, empfehle ich dir eine while-Schleife:

Java:
while(lifeMonster > 0) { // Mache irgendetwas tolles
}

Eine andere Möglichkeit, um Random-Zahlen zu erstellen ist die Klasse [JAPI]Random[/JAPI]

Da kannst du das zum Beispiel so machen

Java:
Random rnd = new Random()
int life = rnd.nextInt(10) + 1

Damit würdest du eine Zahl zwischen 1 bis 10 generieren.
 
nicht alles in einer wurst runter schreiben ;-)

Das ist ein guter Tipp! 🙂

Um es Mal zu verdeutlichen: Schreibe eine zweite Klasse, packe dort deinen Inhalt rein und schreibe diesen in unterschiedlichen Methoden, wie

Java:
public void attackMonster() {
// Angriff hier durchführen
}

Dies rufst du dann einfach in der Main-Methode auf deinem Objekt von der Klasse auf.

Davon ein paar Methoden basteln, die unterschiedliche Dinge tuen und schon sieht es um einiges schöner aus. ;-)
 
du fragst in einem forum nach while... da werden dir meine Tipps zu OOP nicht viel helfen ;-)

mhnnn... das ist jetzt vielleicht etwas großkotzig rüber gekommen... so hab ichs nicht gemeint. ich denke eher das es für solche grundlegende themen besser möglichkeiten gibt als ein forum...

das buch aus meiner signator ist wirklich super für den anfang oder auch kapitel 3 oder 5 von Galileo Computing :: Java ist auch eine Insel - index helfen dir da sicher besser, schau dir das mal an.
 

Zurück
Oben