Erste Schritte Spielstart per Tastendruck

xXlautiXx

Mitglied
Hi Leute,
ich habe ein Schere, Stein, Papier spiel gebastelt. Doch es startet nach dem einer gewonnen hat nicht neu. Ich würde gerne das wenn man eine zahl (5 oder so) drückt, es neu startet. Leider habe ich keine Lösung sonst wo gefunden und dachte ich wende mich an euch. Wäre nett wenn ihr helfen könntet.
Mfg Lauti

Hier der Code bis jetzt :
Java:
 *
  * @version 1.0 vom 26.02.2012
  * @author
  */
import java.util.Scanner;
public class SchereSteinPapier {

  public static void main(String[] args)
  {

  System.out.println("1 entspricht Stein, 2 entspricht Schere, 3 entspricht Papier");
  Scanner in = new Scanner (System.in);
  System.out.println("Spieler 1 geben sie ihren Wert ein ");
  double player1= in.nextDouble();
  System.out.println("Spieler 2 geben sie ihren Wert ein");
  double player2= in.nextDouble();

  if ( player1 == player2)
  {
    System.out.println("Unentschieden");
  }
  else
  {
    if ( player1 == 1)
    {
      if ( player2 == 2)
      {
      System.out.println("Spieler 1 gewinnt");
      }
      else
      {
      System.out.println("Spieler 2 gewinnt");
      }
    }
    else
    {
      if ( player1 == 2 )
      {
        if (player2 == 1)
        {
          System.out.println("Spieler 2 gewinnt");
        }
        else
        {
          System.out.println("Spieler 1 gewinnt");
        }
      }
      else
        if (player1 == 3)
        {
         if (player2 == 1)
         {
            System.out.println("Spieler 1 gewinnt");
         }
         else {System.out.println("Spieler 2 gewinnt");

         }
        }
    }
  }

}
}

   // end of main

 // end of class SchereSteinPapier
 
Stichwort: Methoden definieren.
Nicht alles in die main klatschen, die ist nur zum Starten einer Applikation gedacht.

Definiere eine Klasse mit sauber strukturierten Methoden.
In deinem Fall würde es sogar ausreichen den Spielablauf gesamthaft in eine Methode auszulagern. In der main wird diese Methode in einer Schleife solange aufgerufen, solange der Anwender am Ende z.B. "5" eingibt, oder die Frage "neues Spiel starten" mit ja beantwortet.
 
Danke schonmal, ja an eine Schleife hatte ich auch gedacht, aber leider weis ich nicht genau wohin und wie ich was schreiben muss das es nur geht wenn ich zB 5 drücke? Auch mit der Methode kann ich leider nicht viel anfangen. Bin sehr sehr neu bei Java
 
GRUNDLAGEN LERNEN ... anstatt spiele zu programmieren ...

ich glaube kaum das dir bei diesem basic-thema jemand alles erklären wird was du dir auch selbst aneignen kannst ...

spiele haben in der regel sog. game-loops ... in diesen läuft logik und ggf grafik ... aber da du ja scheinbar nicht mal mit loops umgehen kannst solltest du sowas erstmal lernen ..
 
in dem du 1) do-while verwendest 2) als condition die prüfung der eingabe schreibst anstatt einem einfach true 3) mal nach "Java ist auch eine Insel" googlest und das durchgehst ... weil dir fehlen ja wirklich elementare grundlagen

ps : java.util.Scanner ist eine bequemlichkeits-klasse um sinnvoll und einfach inputstreams zu lesen
 
wenn du willst kannst du dir ja mal die kapitel 10 und 15-19 angucken in meiner signatur unten.... dann sollte so ziemlich alles über schleifen klar sein.... oder dir mal wie irgendjemand auch schon sagte JAVA IST AUCH EINE INSEL anguckst....
 
Ich geh ins Bett.
Hier eine vielleicht nicht optimale Lösung (mir gefällt der static boolean nicht), aber für Anfänger passts 🙂

Java:
import java.util.Scanner;

public class SchereSteinPapier {
	Scanner in = new Scanner (System.in);
	static boolean spielen = true;
	
	public static void main(String[] args) {
		while(spielen) {
			new SchereSteinPapier().eingabe();
		}
	}

	public void eingabe() {
		System.out.println("1 entspricht Stein, 2 entspricht Schere, 3 entspricht Papier");
		System.out.println("Spieler 1 geben sie ihren Wert ein ");
		double player1= in.nextDouble();
		System.out.println("Spieler 2 geben sie ihren Wert ein");
		double player2= in.nextDouble();
		auswertung(player1, player2);
	}

	public void auswertung(double player1, double player2) {
		if(player1 == player2) {
			System.out.println("Unentschieden");
			} else {
				if(player1 == 1) {
					if ( player2 == 2) {
						System.out.println("Spieler 1 gewinnt");
						} else {
							System.out.println("Spieler 2 gewinnt");
						}
					} else {
						if ( player1 == 2 ) {
							if (player2 == 1) {
								System.out.println("Spieler 2 gewinnt");
							} else {
								System.out.println("Spieler 1 gewinnt");
							}
						} else {
							if (player1 == 3) {
								if (player2 == 1) {
									System.out.println("Spieler 1 gewinnt");
								} else {
									System.out.println("Spieler 2 gewinnt");
								}
							}
						}
					}
			}
		System.out.println("Neues Spiel? Dann schreib 5!");
		if(in.nextDouble() != 5) {
			spielen = false;
		}
	}
}
 

Neue Themen


Zurück
Oben