// Assignment 8 solution #include #include #include #include #include #include using namespace std; const int GamePoints = 100; const int SKUNK = -1; int roll(); void printName(int playerNo); bool takeTurn(int playerNo, int& ptrPlayerPoints); //int updatePlayerPoints(int playerPoints, int pointsForTurn); void announceWinner(int playerNo, int points); int main() { srand(98); int player1Points = 0, player2Points = 0, player3Points = 0; while (true) { if(takeTurn(1, player1Points)) break; if(takeTurn(2, player2Points)) break; if(takeTurn(3, player3Points)) break; } } int roll() { int die1, die2; int sum; die1 = rand() % 6 + 1; die2 = rand() % 6 + 1; if (die1 == 1 && die2 == 1) sum = SKUNK; else if (die1 == 1 || die2 == 1) sum = 0; else sum = die1 + die2; // If the print flag is true, send output to file cout << " You rolled " << die1 << " and " << die2 << ". That's "; if (sum == SKUNK) cout << "SKUNK\n"; else cout << sum << endl; return sum; } // Return true if game is over bool takeTurn(int playerNo, int& playerPoints) { int pointTotalForTurn = 0; int pointTotalForRoll; int numberOfRollsPerTurn = playerNo == 1 ? 1 : (playerNo == 2 ? 3 : 25); printName(playerNo); cout << ", its your turn\n"; for (int i = 1; i <= numberOfRollsPerTurn; i++) { pointTotalForRoll = roll(); if (pointTotalForRoll == SKUNK) { pointTotalForTurn = 0; playerPoints = 0; break; } else if (pointTotalForRoll == 0) { pointTotalForTurn = 0; break; } else { pointTotalForTurn += pointTotalForRoll; if (playerPoints + pointTotalForTurn >= GamePoints) { playerPoints += pointTotalForTurn; cout << " That's " << pointTotalForTurn << " points for your turn\n"; announceWinner(playerNo, playerPoints); return true; } } } playerPoints += pointTotalForTurn; cout << " That's " << pointTotalForTurn << " points for your turn\n"; cout << "Total points = " << playerPoints << endl << endl; return false; } void printName(int playerNo) { switch (playerNo) { case 1: cout << "Larry"; break; case 2: cout << "Curly"; break; case 3: cout << "Moe"; break; default: cout << "Error: invalid player number\n"; exit(3); } } void announceWinner(int playerNo, int points) { printName(playerNo); cout << " won the game with " << points << " points\n"; }