RosettaCodeData/Task/Pig-the-dice-game/Java/pig-the-dice-game-2.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]
)
)
;
}
}