exit game & improved points calc

This commit is contained in:
Daniel Langbein 2024-12-15 16:17:06 +00:00
parent 0cd27b8d31
commit c1c87f07d8
Signed by: langfingaz
GPG Key ID: 6C47C753F0823002
2 changed files with 19 additions and 27 deletions

View File

@ -1,5 +1,6 @@
package org.example;
import java.util.NoSuchElementException;
import java.util.Scanner;
public class Game {
@ -60,6 +61,9 @@ public class Game {
}
} catch (NumberFormatException | SelectionException | IllegalStateException e) {
System.err.println(e.getMessage());
} catch (NoSuchElementException e){
// stdin closed (e.g. by pressing STRG + D)
System.exit(0);
}
}
}

View File

@ -1,11 +1,10 @@
package org.example;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
import static org.example.DiceEyes.FIVE;
import static org.example.DiceEyes.ONE;
public class Player implements DiceInteraction{
private final String name;
private int totalScore = 0;
@ -99,34 +98,23 @@ public class Player implements DiceInteraction{
return 0;
}
int ones = 0;
int fives = 0;
Map<DiceEyes, Integer> diceEyesCount = new HashMap<>();
for (Dice dice : dices) {
if (dice.isFixed() || dice.isMarked()) {
switch (dice.getDiceEyes()) {
case ONE:
ones++;
break;
case FIVE:
fives++;
break;
}
Integer count = diceEyesCount.getOrDefault(dice.getDiceEyes(), 0);
count++;
diceEyesCount.put(dice.getDiceEyes(), count);
}
}
int toggledScore = 0;
for (Map.Entry<DiceEyes, Integer> entry : diceEyesCount.entrySet()) {
DiceEyes diceEyes = entry.getKey();
int count = entry.getValue();
while (ones >= 3) {
toggledScore += ONE.triplePoints();
ones -= 3;
toggledScore += diceEyes.triplePoints() * (count / 3);
toggledScore += diceEyes.points() * (count % 3);
}
while (fives >= 3) {
toggledScore += FIVE.triplePoints();
fives -= 3;
}
toggledScore += ONE.points() * ones;
toggledScore += FIVE.points() * fives;
return toggledScore;
}
@ -138,11 +126,11 @@ public class Player implements DiceInteraction{
@Override
public String toString() {
String s2 = toStringHelper();
int tail = 6 * 3 + 5;
int head = s2.length() - tail;
String s1 = " ".repeat(head);
s1 += " 0 1 2 3 4 5 ";
// Create string `s1` of same length as `s2`.
String tail = " 0 1 2 3 4 5 ";
int headLength = s2.length() - tail.length();
String s1 = " ".repeat(headLength) + tail;
return s1 + "\n" + s2;
}