Frage von firedestruction, 38

Java: Schere-Stein-Papier mit Best-Of-3?

Hallo liebe Com,

ich habe hier ein SSP-Spiel programmiert, aber wollte noch ein Best-Of-3 System einbauen. Ich habe schon versucht die erste while Schleife in eine while Schleife zu stecken, das hat aber nicht funktioniert. Wie geht das ganze? Hier der Code: public class SchereSteinPapier {

public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Random ran = new Random(); System.out.println("Wähle zwischen: 1=Schere; 2=Stein; 3=Papier.");

int pc;
int user;
int z;
z=1;


 
  
while (z==1) { 
  pc = ran.nextInt(3)+1;
  user = scanner.nextInt();
  if (pc == user) {
     System.out.println("Unentschieden");
  } 
  
  if (pc != user) {
    if (pc==1 && user==3 || pc==2 && user==1 || pc==3 && user == 2) {
      System.out.println("Verloren");
    } // end of if
    if (pc==3 && user ==1 || pc==1 && user==2 || pc==2 && user==3) {
      System.out.println("Gewonnen");
    } // end of if
  } // end of if
  z++;
  } // end of if
} // end of while

} // end of main

Antwort
von MrShisha, 35

Also mein erster Einfall wäre, dass du jeweils eine Variable für PC und User von dem Typ Integer deklarierst und auf 0 initialisierst (Nennen Sie wir mal "int pcScore" und int "userScore") . Und wenn der PC eine Runde gewinnt, dann wird eben pcScore um eins erhöht (pcScore++) und wenn der User eine Runde gewinnt wird userScore um eins erhöht (userScore++). Am Ende jedes durchlaufes musst du dann prüfen, ob einer der beiden Scores gleich 2 ist.

Bedeutet am Ende:

if(userScore == 2){

//User hat gewonnen, aktuelle Sitzung kann beendet werden.

}

Und eben andersherum.

Kommentar von MrShisha ,

Anhang:

Pack den Ablauf deines Spieles am besten in eine Methode. Das macht es dir am Ende eines Zuges einfacher den Punktestand zu überprüfen. Deine main-Methode wird dann in etwa so aussehen:

int scorePC = 0;
int scoreUser = 0;
int pc; int user; int z; z=1; public void naechster Zug(){ while (z==1) { pc = ran.nextInt(3)+1; user = scanner.nextInt(); if (pc == user) { System.out.println("Unentschieden"); } if (pc != user) { if (pc==1 && user==3 || pc==2 && user==1 || pc==3 && user == 2) { System.out.println("Verloren");
scorePC++;
  } if (pc==3 && user ==1 || pc==1 && user==2 || pc==2 && user==3) { System.out.println("Gewonnen");
scoreUser++
  } } z++; } }
}
main(){
while(scorePc != 2 || scoreUser != 2)
{
naechsterZug();
}
if(scorePc == 2)
{
//PC hat gewonnen
}
else if(scoreUser == 2)
{
//User hat gewonnen
}
}
Kommentar von firedestruction ,

Vielen Dank, ich habe es zwar verstanden, weiß aber nicht genau wo ich nun was hinschreiben soll.

Keine passende Antwort gefunden?

Fragen Sie die Community