Programm(Spiel) neustarten

Joptionpane

Aktives Mitglied
Abend,


hab eben ein kleines Ratespiel programmiert, wo eine Zufallszahl erzeugt wird aber nicht genannt wird, der Spieler hat 4 Versuche die Zahl zu erraten, nach jedem Versuch wird angegeben ob die eingegeben Zahl größer oder kleiner als die gesuchte Zahl ist.

Ich will nun, dass nach Ende des Spiels gefragt wird: Noch eine Runde? Tippe 1 für ja und 0 für nein an.

Wie krieg ich es hin, dass das Spiel von vorn anfängt? (mit einer neuen Zahl).
Hoffe jemand kann da helfen.


LG
Java:
import java.util.Scanner;

public class Ratespiel3{
	public static void main(String[] args) {
		// Ratespiel

		int a = (int) ((Math.random() * 31) + 10); // Erzeugt zufallszahl
													// zwischen 10 und 40

		for (int i = 1; i <= 4; i++) { // for-schelife = 4 Rateversuche für DAU
			Scanner sc = new Scanner(System.in);
			System.out.println("Wie lautet ihre Zahl?");
			int x = sc.nextInt(); // DAU gibt seine Zahl ein

			if (x < a) {
				System.out.println("Die gesuchte Zahl ist größer als " + x);
			}

			if (x > a) {
				System.out.println("Die gesuchte Zahl ist kleiner als " + x);
			}

			if (x == a) {
				System.out.println("Sie haben gewonnen, die gesuchte Zahl war "
						+ a);
				break; // Falls vorzeitig die gesuchte Zahl erraten wird, wird
						// das Spiel beendet.
			}
		}
		System.out.println("Die Gesuchte zahl war " + a); //Falls DAU nicht auf die Zuffalszahl kommt, wird dieser Satz angegeben.

		// Soll neue Runde gespielt werden?
		Scanner sc = new Scanner(System.in);
		System.out
				.println("Wollen sie nocheinmal spielen? \n Tippen sie \n '1' für JA \n '0' für NEIN");
		int z = sc.nextInt();

		if (z == 0) {
			// Spiel beenden!!!!
		} else {
			// Spiel neustarten!!!!
		}
	}
}
 
pack doch einfach alles in ein "do-while"
am ende des programms fragst du eine eingegebene vriable ab und fütterst damit die while bedingung, und voila, das programm fängt von vorne an!
 
Du packst den ganzen Inhalt von deiner jetztigen main() Methode in eine andere z.B. (wenn du es weiterhin statisch haben willst):

Java:
public static boolean spielrunde() {
  //Inhalt aus der main()
  if (z == 0) {
    return true;
  } else {
    return false;
  }
}

Java:
public static void main(String[] args) {
  int zaehler = 0;
  while (zaehler < 4) {
    if (spielrunde()) {
      break;
      //ende
    }
    else {
      zaehler++;
    }
}

EDIT: Ausversehen zu früh abgeschickt!
 
Zuletzt bearbeitet:
pack doch einfach alles in ein "do-while"
am ende des programms fragst du eine eingegebene vriable ab und fütterst damit die while bedingung, und voila, das programm fängt von vorne an!


hi und danke schonmal, habs jetzt mal probiert (hatte zuvor noch nie eine do-while gebraucht bzw verwendet) , vom Anblick sehe ich selbst sofort das es nicht ganz stimmt, nur kann ich ja den Scanner vom z ja nicht in die Do-Schleife setzten, dadurch kommt nur 1x ganz am Anfang die frage nach einem neuen Spiel und egal was man da angibt es spielt immer und immer wieder.
noch i.ein tip? 🙂

mein code nun:

Java:
import java.util.Scanner;

public class Ratespiel3{
	public static void main(String[] args) {
		// Ratespiel

		Scanner sc = new Scanner(System.in);
		System.out.println("Wollen sie nocheinmal spielen? \n Tippen sie \n '1' für JA \n '0' für NEIN");
		int z = sc.nextInt();

		do {

			int a = (int) ((Math.random() * 31) + 10); 

			for (int i = 1; i <= 4; i++) { 

				Scanner sc1 = new Scanner(System.in);
				System.out.println("Wie lautet ihre Zahl?");
				int x = sc1.nextInt(); 

				if (x < a) {
					System.out.println("Die gesuchte Zahl ist größer als " + x);
				}

				if (x > a) {
					System.out.println("Die gesuchte Zahl ist kleiner als " + x);
				}

				if (x == a) {
					System.out
							.println("Sie haben gewonnen, die gesuchte Zahl war "
									+ a);
					break; 
				}
			}

			System.out.println("Die Gesuchte zahl war " + a); 

		}

		while (z != 0);

	}
}
 
Java:
        System.out.println("Wollen sie nocheinmal spielen? \n Tippen sie \n '1' für JA \n '0' für NEIN");
        int z = sc.nextInt();
Das muss natürlich in die while schleife. Und zwar hinter
Code:
System.out.println("Die Gesuchte zahl war " + a);
Das z musst du dann vor der Schleife deklarieren.
 
Java:
        System.out.println("Wollen sie nocheinmal spielen? \n Tippen sie \n '1' für JA \n '0' für NEIN");
        int z = sc.nextInt();
Das muss natürlich in die while schleife. Und zwar hinter
Code:
System.out.println("Die Gesuchte zahl war " + a);
Das z musst du dann vor der Schleife deklarieren.

Danke für den tipp.
Läuft einwandfrei. 🙂


EDIT:

Leider doch nicht 🙁
Die Abfrage funktioniert einwandfrei, jedoch wird keine neue Zahl erzeugt wenn ich eine neue Runde spielen will...


Java:
import java.util.Scanner;

public class Ratespiel3{
	public static void main(String[] args) {
		// Ratespiel

		int z;
		do {

			int a = (int) ((Math.random() * 31) + 10);

			for (int i = 1; i <= 4; i++) {

				Scanner sc1 = new Scanner(System.in);
				System.out.println("Wie lautet ihre Zahl?");
				int x = sc1.nextInt();

				if (x < a) {
					System.out.println("Die gesuchte Zahl ist größer als " + x);
				}

				if (x > a) {
					System.out.println("Die gesuchte Zahl ist kleiner als " + x);
				}

				if (x == a) {
					System.out.println("Sie haben gewonnen, die gesuchte Zahl war "	+ a);
					break;
				}
			}
			System.out.println("Die Gesuchte zahl war " + a);

			Scanner sc = new Scanner(System.in);

			System.out.println("Wollen sie nocheinmal spielen? \nTippen sie \n '1' für JA \n '0' für NEIN");
			z = sc.nextInt();
		}

		while (z != 0);

	}
}
 
Zuletzt bearbeitet:
hmmmm ok jetzt gehts 😵


komischer Zufall.
Hatte 8 Runden oder 9 Laufen lassen, war jedes mal die gleiche Zahl.
Eben jetzt waren es verschiedene 🙂
naja hat sich erledigt, danke!!
 

Neue Themen


Zurück
Oben