Schönen Abend abermals =)
Ich sitze wieder an einer Aufgabe fest und ich hoffe ich kann hier wieder Hilfe erhalten.
Hier die Aufgabenstellung: Gruppenaufgabe 3.2: Rock-paper-scissors-lizard-Spock 19 GP Sheldon hat mit sei - Pastebin.com
Mein Problem ist, dass das ganze jetzt sehr unübersichtlich wurde und ich den Durchblick verloren habe und nicht weiß, wo ich was verbessern muss .-."
Bei "SRLW" müsste er eigentlich doch B mit 2 Punkten gewonnen haben, aber bei mir kommt lediglich:
"Draw.
An uneven number of symbols was given in the input!
The players played 2 rounds.
It's a draw.
Player wins with a score of 0!"
Was stimmt da nicht .-."
MfG,
- Deniz
Ich sitze wieder an einer Aufgabe fest und ich hoffe ich kann hier wieder Hilfe erhalten.
Hier die Aufgabenstellung: Gruppenaufgabe 3.2: Rock-paper-scissors-lizard-Spock 19 GP Sheldon hat mit sei - Pastebin.com
Mein Problem ist, dass das ganze jetzt sehr unübersichtlich wurde und ich den Durchblick verloren habe und nicht weiß, wo ich was verbessern muss .-."
Java:
import static java.lang.System.err;
public class RockPaperScissorsLizardSpockTournament {
/**
* Zwei Spieler A und B haben sich fuer ihr Symbol entschieden. Diese
* Methode entscheidet nun, welcher der beiden Spieler gewinnt, oder ob ein
* Unentschieden vorliegt.
*
* @param a
* Das Symbol, fuer das sich A entschieden hat.
* @param b
* Das Symbol, fuer das sich B entschieden hat.
* @return Wenn A gewinnt, wird 1 zurueckgegeben. Wenn B gewinnt, wird -1
* zurueckgegeben. Bei Unentschieden wird 0 zurueckgegeben.
*/
public static int whoWins(char a, char b) {
switch (a) {
case 'S': // Sciccors
switch (b) {
case 'S':
return 0;
case 'R':
return -1;
case 'W':
return -1;
case 'P':
return 1;
case 'L':
return 1;
}
case 'R': // Rock
switch (b) {
case 'R':
return 0;
case 'S':
return 1;
case 'W':
return -1;
case 'P':
return -1;
case 'L':
return 1;
}
case 'W': // Spock
switch (b) {
case 'W':
return 0;
case 'S':
return 1;
case 'R':
return 1;
case 'P':
return -1;
case 'L':
return -1;
}
case 'P': // Paper
switch (b) {
case 'P':
return 0;
case 'S':
return -1;
case 'W':
return 1;
case 'R':
return 1;
case 'L':
return -1;
}
case 'L': // Lizard
switch (b) {
case 'L':
return 0;
case 'S':
return -1;
case 'W':
return 1;
case 'P':
return 1;
case 'R':
return -1;
}
}
// Don't do any error handling!
return 0;
}
/**
* UEberpruefe ob das uebergebene Zeichen ein gueltiges Smybol ist.
*
* @param s
* Ein Zeichen, das ein Symbol darstellen sollte.
* @return True wenn das Zeichen gueltig is, ansonsten false.
*/
// TODO: Implementiere Methode checkValidSymbol(char s)
public static boolean checkValidSymbol(char s) {
switch (s) {
case 'L':
return true;
case 'S':
return true;
case 'W':
return true;
case 'P':
return true;
case 'R':
return true;
default:
return false;
}
}
public static void main(String[] args) {
if (args.length != 1) {
err.println("Usage: java RockPaperScissorsLizardSpockTournament letters");
err.println();
err.println("Letters is a continuous sequence of pairs of the following letters:");
err.println(" S - Scissors");
err.println(" P - Paper");
err.println(" R - Rock");
err.println(" L - Lizard");
err.println(" W - Spock");
err.println();
err.println("A sequence must consist of at least one pair of those letters, ");
err.println("where each pair consists of two letters. The first letter of a ");
err.println("indicates the symbol that player A has chosen. The second letter ");
err.println("indicates the symbol that player B has chosen. If the players ");
err.println("played two rounds, two pairs are simply concatenated. There must ");
err.println("be no space, comma or anything else separating two or more rounds!");
} else {
// TODO: Implementiere Schleife, die das Spielgeschehen auswertet.
int zaehler = 0;
String winner = new String();
int score = 0;
int scoreA = 0;
int scoreB = 0;
while (zaehler < args.length) {
if (checkValidSymbol(args[0].charAt(zaehler + 1)) == false) {
System.err.println("Invalid symbols in input!");
} else if (whoWins(args[0].charAt(zaehler + 1),
args[0].charAt(zaehler + 1)) == 0) {
System.out.println("Draw.");
} else if (whoWins(args[0].charAt(zaehler + 1),
args[0].charAt(zaehler + 1)) > 0) {
System.out.println("A wins.");
score += 1;
scoreA += 1;
} else {
System.out.println("B wins.");
scoreB += 1;
score -= 1;
}
zaehler++;
}
if (args.length == 0) {
System.out.println("No symbols given on as input!");
}
if (args[0].length() == 0) {
System.out.println("No symbols given on as input!");
}
if (args.length % 2 != 0) {
System.err
.println("An uneven number of symbols was given in the input!");
}
int rounds = args[0].length() / 2;
System.out.println("The players played " + rounds + " rounds.");
if (score > 0) {
winner = "A";
score = scoreA;
} else if (score < 0) {
winner = "B";
score = scoreB;
} else {
System.out.println("It's a draw.");
}
System.out.println("Player " + winner + " wins with a score of "
+ score + "!");
}
}
}
Bei "SRLW" müsste er eigentlich doch B mit 2 Punkten gewonnen haben, aber bei mir kommt lediglich:
"Draw.
An uneven number of symbols was given in the input!
The players played 2 rounds.
It's a draw.
Player wins with a score of 0!"
Was stimmt da nicht .-."
MfG,
- Deniz