playerTurn (modified to allow up to 3 re-rolls)
Note: the bold code has been added
public void playerTurn(TripleRollPlayer player) {
ResponseBox responseBox;
ListBox listBox;
int response, // holds answer from responseBox
choice; // holds answer from listBox
boolean noChoiceMade;
// create javabook objects
responseBox = new ResponseBox(mainWindow);
listBox = new ListBox(mainWindow, "Which die?");
listBox.addItem("Die 1");
listBox.addItem("Die 2");
listBox.addItem("Die 3");
// print out info
outputBox.printLine("****** Begin Turn for " + player.getName() +
" ******");
// roll the dice and report the values
player.rollDice(die1, die2, die3);
outputBox.printLine(" Die 1: " + die1.getValue() +
" Die 2: " + die2.getValue() +
" Die 3: " + die3.getValue());
// have the player evaluate the roll
player.evaluateRoll(die1, die2, die3);
outputBox.printLine(" " + translateKind(player.getRollKind()) +
" Score: " + player.getRollScore());
int rerolls = 0;
boolean done = false;
// while the player is not done and has rerolled 2 or fewer times
while (!done && rerolls < 3) {
// ask if player wants to re-roll a die
response = responseBox.prompt("Do you want to re-roll a die?");
// if so, prompt for the die
if (response == ResponseBox.YES) {
choice = listBox.getSelectedIndex();
noChoiceMade = false;
switch (choice) {
case 0: die1.rollDie();
break;
case 1: die2.rollDie();
break;
case 2: die3.rollDie();
break;
default: noChoiceMade = true;
done = true;
} // end switch
if (!noChoiceMade) {
rerolls++;
player.evaluateRoll(die1, die2, die3);
outputBox.printLine(" Re-roll die...");
outputBox.printLine(" Die 1: " + die1.getValue() +
" Die 2: " + die2.getValue() +
" Die 3: " + die3.getValue());
outputBox.printLine(" " +
translateKind(player.getRollKind()) +
" Score: " + player.getRollScore());
} // end if chose to re-roll a die
} // end if response was yes
// else response is no, so player is done
else
done = true;
} // end while
// add the score to the total score
player.addRollToTotal();
outputBox.printLine("****** Score so far for " + player.getName() +
": " + player.getTotalScore() + " ******");
} // end playerTurn