tittli
Erfahrenes Mitglied
So, langsam wirds peinlich....
Ich habe eine Methode, die mir einen 4-stelligen Zufallscode erstellt (und die auch funktioniert):
So. Nun habe ich eine Methode, die eine Lösung des Spielers einliesst und diese auf Richtigkeit überprüft. Maximal sind 8 Vorschläge möglich. Auch die funktioniert:
So. Nun wurde uns eine Methode vorgegeben, die den Ablauf einer einzelnen Spielrunde festlegt. Diese Methode ruft die beiden obengenannten Methoden auf, zusätzlich noch die printRoundResult()-Methode, die am Ende das Ergebnis bekannt gibt (und die ich noch schreiben muss):
So. Jetzt ist es meine Aufgabe, diese Methoden alle in einer play()-Methode zu vereinen:
Man soll am Ende einer Spielrunde entscheiden, ob man eine weitere Runde spielen will oder nicht. Komisch ist jetzt aber: Ist eine Spielrunde abgeschlossen, wird kein neuer Code generiert, sondern der alte bleibt erhalten (ich lasse den Code auf die Konsole ausgeben, um das Testen zu vereinfachen).
Sieht jemand den Fehler?
Vielen Dank bereits im Voraus!
gruss
Ich habe eine Methode, die mir einen 4-stelligen Zufallscode erstellt (und die auch funktioniert):
Java:
private void makeCode()
{
// To be implemented
String randomColor = "";
int codeLength = 1;
while (codeLength <= 3)
{
int colorValue = (int)(Math.random() * 6) + 1;
switch (colorValue)
{
case 1:
randomColor = "y";
break;
case 2:
randomColor = "o";
break;
case 3:
randomColor = "r";
break;
case 4:
randomColor = "b";
break;
case 5:
randomColor = "g";
break;
case 6:
randomColor = "p";
break;
}
codeLength = codemaker.length();
if(!codemaker.contains(randomColor))
{
codemaker = codemaker + randomColor;
codeLength = codemaker.length();
}
}
System.out.println(codemaker);
}
So. Nun habe ich eine Methode, die eine Lösung des Spielers einliesst und diese auf Richtigkeit überprüft. Maximal sind 8 Vorschläge möglich. Auch die funktioniert:
Java:
private void breakCode()
{
// To be implemented
while(inc < 4 && guesses < MAX_GUESSES)
{
Scanner scn = new Scanner(System.in);
String codebreaker = scn.nextLine();
char firstcolor = codebreaker.charAt(0);
char secondcolor = codebreaker.charAt(2);
char thirdcolor = codebreaker.charAt(4);
char fourthcolor = codebreaker.charAt(6);
if(codemaker.indexOf(firstcolor) != -1)
{
char first = codemaker.charAt(0);
if (first == firstcolor)
{
System.out.println("Schwarz");
inc++;
}
else
{
System.out.println("Weiss");
}
}
if(codemaker.indexOf(secondcolor) != -1)
{
char second = codemaker.charAt(1);
if (second == secondcolor)
{
System.out.println("Schwarz");
inc++;
}
else
{
System.out.println("Weiss");
}
}
if(codemaker.indexOf(thirdcolor) != -1)
{
char third = codemaker.charAt(2);
if (third == thirdcolor)
{
System.out.println("Schwarz");
inc++;
}
else
{
System.out.println("Weiss");
}
}
if(codemaker.indexOf(fourthcolor) != -1)
{
char fourth = codemaker.charAt(3);
if (fourth == fourthcolor)
{
System.out.println("Schwarz");
inc++;
}
else
{
System.out.println("Weiss");
}
}
guesses++;
if (inc != 4)
{
inc = 0;
}
}
}
So. Nun wurde uns eine Methode vorgegeben, die den Ablauf einer einzelnen Spielrunde festlegt. Diese Methode ruft die beiden obengenannten Methoden auf, zusätzlich noch die printRoundResult()-Methode, die am Ende das Ergebnis bekannt gibt (und die ich noch schreiben muss):
Java:
private void doRound()
{
makeCode();
breakCode();
printRoundResult();
}
So. Jetzt ist es meine Aufgabe, diese Methoden alle in einer play()-Methode zu vereinen:
Java:
public void play()
{
System.out.println("Let's play Mastermind!");
System.out.println("For you guesses, write \"x x x x\" where x is a color code:");
System.out.println("y: Yellow \no: Orange \nr: Red\nb: Blue\ng: Green\np: Purple");
// TODO: Implement acutal loop
Scanner scan = new Scanner (System.in);
String cont = "y";
while (cont.equalsIgnoreCase("y"))
{
doRound();
System.out.println("Play another round? (y/n)");
cont = scan.nextLine();
}
System.out.println(guesses);
}
Man soll am Ende einer Spielrunde entscheiden, ob man eine weitere Runde spielen will oder nicht. Komisch ist jetzt aber: Ist eine Spielrunde abgeschlossen, wird kein neuer Code generiert, sondern der alte bleibt erhalten (ich lasse den Code auf die Konsole ausgeben, um das Testen zu vereinfachen).
Sieht jemand den Fehler?
Vielen Dank bereits im Voraus!
gruss