68 lines
1.9 KiB
Java
68 lines
1.9 KiB
Java
import java.util.Arrays;
|
|
import java.util.Random;
|
|
import java.util.Scanner;
|
|
import java.util.stream.IntStream;
|
|
|
|
public interface PigDice {
|
|
public static void main(String... arguments) {
|
|
final int maxScore = 100;
|
|
final int playerCount = 2;
|
|
final String[] yesses = {"y", "Y", ""};
|
|
|
|
final Scanner scanner = new Scanner(System.in);
|
|
final Random random = new Random();
|
|
|
|
final int[] safeScore = new int[2];
|
|
final int[] score = new int[2];
|
|
|
|
IntStream.iterate(0, player -> (player + 1) % playerCount)
|
|
.map(player -> {
|
|
boolean isRolling = true;
|
|
while (isRolling) {
|
|
System.out.printf(
|
|
"Player %d: (%d, %d) Rolling? (y/n) ",
|
|
player,
|
|
safeScore[player],
|
|
score[player]
|
|
);
|
|
isRolling =
|
|
safeScore[player] + score[player] < maxScore
|
|
&& Arrays.asList(yesses).contains(scanner.nextLine())
|
|
;
|
|
if (isRolling) {
|
|
final int rolled = random.nextInt(6) + 1;
|
|
System.out.printf("Rolled %d\n", rolled);
|
|
if (rolled == 1) {
|
|
System.out.printf(
|
|
"Bust! You lose %d but keep %d\n\n",
|
|
score[player],
|
|
safeScore[player]
|
|
);
|
|
return -1;
|
|
} else {
|
|
score[player] += rolled;
|
|
}
|
|
} else {
|
|
safeScore[player] += score[player];
|
|
if (safeScore[player] >= maxScore) {
|
|
return player;
|
|
}
|
|
System.out.printf("Sticking with %d\n\n", safeScore[player]);
|
|
}
|
|
}
|
|
score[player] = 0;
|
|
return -1;
|
|
})
|
|
.filter(player -> player > -1)
|
|
.findFirst()
|
|
.ifPresent(player ->
|
|
System.out.printf(
|
|
"\n\nPlayer %d wins with a score of %d",
|
|
player,
|
|
safeScore[player]
|
|
)
|
|
)
|
|
;
|
|
}
|
|
}
|