Java Wiederholung des Programms
Ich bin Anfänger in Java und experimentiere momentan etwas rum, ich habe folgenden Quelltext zu einen minispiel um zu entscheiden ob ich blocken oder angreifen will :
public class Minigame {
public static void main(String[] args) throws java.io.IOException {
System.out.print("Aktion wählen : ");
System.out.print("Angriff = 1 / Blocken = 2");
System.out.print(" : Bitte Zahl eingeben: ");
java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
String input = in.readLine();
if (Integer.parseInt(input) == 1 ) {
AngriffMensch();
} else {
BlockMensch();
}
}
Nun habe ich am Ende einen Lebenstest :
static void LebenstestMonster(int dieValue) { if (dieValue <= 0) { System.out.println("Das Monster ist tot!"); }
else if (dieValue >= 1 || dieValue <= 100) {
System.out.println("Es hat noch " + LebenMonster + " Leben übrig!");
System.out.println();
// hier möchte ich wieder ganz zum anfang :
AngriffMensch();
}
}
darin steht ein Übergang auf die Methode AngriffMensch() ich möchte aber das das Programm wieder ganz zum start geht und erneut abfragt ob ich angreifen oder blocken möchte, wie geht das bzw was müsste ich statt AngriffMensch() eingeben ?
6 Antworten
main(args);
D.h. die Methode erneut aufrufen, die das ganze startet.
Einfach alles was wiederholt werden soll, beispielsweise in eine while-Schleife, eine sinnvolle Schleifenbedingung wäre da, so lange das Laben vom Monster > 0 ist beispielsweise. Du kannst aber auch mit Runden arbeiten und dann wenn du den Kampf auf z.b. 3 Runden beschränkst in der while sagen, while(i <= 3) {} dabei solltest du i vorher noch als Integer mit den Wert = 1 definieren und am Ende der Schleife i++; schreiben. Wenn du nach Runden gehst würde ich dir dann for-Schleifen empfehlen, da kannst du dann einfach schreiben: for(int i = 0; i < 3; i++) {...}. Diese Schleifen solltest du kennen. Es gibt noch andere und auch andere Arten solche Arten von Schleifen zu erreichen, beispiel Rekursion, wirst du aber noch nicht brauchen.
Kannst du nicht die Argumente in main weglassen? Dann könntest du einfach main(); aufrufen.
Wenn nicht, würde ich den Rumpf von main in eine neue Funktion packen, z. B. mainneu oder main überladen (ohne Argumente) und dann mainneu();, bzw. main(); aufrufen.
public static void main(String[] args) throws java.io.IOException {
while (true) {
System.out.println("Aktion wählen: ");
System.out.println("1 = Angriff\n2 = Blocken");
System.out.println("Bitte Zahl eingeben: ");
java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
String input = in.readLine();
if (Integer.parseInt(input) == 1 ) {
AngriffMensch();
} else {
BlockMensch();
}
}
}
Statt true kannst du natürlich auch irgendeine andere sinnvolle Bedingung einbauen. So wird das ganze halt ewig wiederholt, bis du das Programm durch irgendeine Eingabe beendest.
Ganz einfach: main(null); -> oder packe diesen Teil in eine Methode und lass ihn sich selbst aufrufen, oder Schleife