Schere stein papier

xXlautiXx

Grünschnabel
Hi ich habe ein Schere Stein Papier Programm geschrieben. Es läuft auch aaaaaber es startet sich nach dem ablauf einfach neu durch die while schleife. Ist es möglich das sich das programm erst neu Startet wenn ich zB 5 oder so drücke? Ich bin noch sehr neu bei Java und würde mich über hilfe freuen
Mfg Erik
Hier noch der Java code
Code:
/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 26.02.2012
  * @author
  */
import java.util.Scanner;
public class SchereSteinPapier {



  public static void main(String[] args)
  {

  while (true)
  {


  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
 
Du hast offensichtlich ein paar Fälle vergessen:

(player1, player2):
1, 1 ? (durch player1 == player2)
1, 2 ?
1, 3
2, 1 ?
2, 2 ?(durch player1 == player2)
2, 3
3, 1 ?
3, 2
3, 3 ?(durch player1 == player2)

alle anderen Fälle (möglichen Wertkombinationen) werden bei deinem Programm ignoriert. Da du den Code in eine Endlosschleife gepackt hast, wird der ganze Code noch mal ausgeführt. Deine Endlosschleife beginnt mit
Java:
while(true){
in Zeile 16 und endet mit der geschweiften Klammer in Zeile 73. Der Code dazwischen wird so oft ausgeführt, bis du
Java:
System.exit();
oder
Java:
break;
aufrufst; du tust aber beides nicht, daher kann diese Endlosschleife niemals verlassen werden.
 
Pack alles in eine Funktion, ruf diese durch eine Taste auf. Wenn du ein Spiel beendet hast, verlasse die Funktion.
 
Indem du es noch mal startest. Alternativ könntest du aber auch das Programm auf Tastendruck beenden, das geht genau so.
 
Deine Idee würde ich gerne ma versuchen lime. Ich bin jedoch noch komplett neu, könntest du vieleicht noch ein wenig "hilfestellung" geben?
 
Java:
class SchereSteinPapier{
  public static void Spiel(){ 
    //Hier dein Spiel code
     
    //Hier ein Zeichen einlesen, wenn das Zeichen dem gewünschten 
    //Zeichen entspricht, Spiel(); nocheinmal aufrufen
    //Ansonsten System.exit(0); aufrufen.
  }

  public static void main(String[] args){
    Spiel();
  }
}
 
//Hier ein Zeichen einlesen, wenn das Zeichen dem gewünschten
//Zeichen entspricht, Spiel(); nocheinmal aufrufen
//Ansonsten System.exit(0); aufrufen.

Könntest du das vieleicht nochma bisschen erklären ? Ansonsten schonma danke =)

Sieht jetzt so aus.
Code:
/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 26.02.2012
  * @author
  */
import java.util.Scanner;
public class SchereSteinPapier {
public static void Spiel () {
   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");

         }
          }


    }
  }
}


  public static void main(String[] args)
  {

   Spiel();


}
}

   // end of main

 // end of class SchereSteinPapier
 
Zuletzt bearbeitet von einem Moderator:
Am ende der Spiel() Methode musst du jetzt wieder ein Zeichen einlesen. Dann prüfst du ob das z.B. 1 war. Wenn ja, wieder Spiel(); aufrufen. Wenn nein, dann System.exit(0); (Mit if/else)
 
Verbesserungsvorschlag:
mach am besten einen Button für jede Auswahl. Dann muss man nur auf den BUtton klicken und muss nicht irgendeine Zahl eingeben. Ist nur ein Tipp. :)
 
Zurück