The document describes a program that implements the dice game PIG between two players. It includes functions to print intro text, get player names, roll dice in a player's turn and update scores. The humanTurn function allows a player to roll multiple times in a turn until getting a 1 or choosing to stop. The program runs a loop where players take turns rolling until one reaches or exceeds a winning score of 100.
this is what i have. i really need help on updating the scores only..pdf
1. this is what i have. i really need help on updating the scores only. like if a person gets pig on
their second turn their score would be what the have before.
You are to finish the program below that implements the dice game PIG played by 2 human
players.
Pig is a dice game where each player during their turn rolls a 6-sided die. If the player rolls a 2
through 6, they decide whether they want to keep their turn score or roll again. If they roll a 1,
the player loses all the points for that turn, thus receiving a turn score of 0 and that turn is over.
The first player to reach 100 points or more wins.
this is what i have. i really need help on updating the scores only. like if a person gets pig on
their second turn their score would be what the have before.
You are to finish the program below that implements the dice game PIG played by 2 human
players.
#include
#include
#include
#include
using namespace std;
const int PLAYER1 = 0;
const int PLAYER2 = 1;
const int WINNING_SCORE = 100;
// after long a while realized i needed this
int turn = PLAYER1;
//FIXME (1): Implement the printIntro function
void printIntro ()
{
cout << "Welcome to the dice game Pig!" << endl;
cout << "The objective is to be first to score 100 points." << endl;
return;
}
//FIXME (4, 5, 6): Implement the humanTurn function
int humanTurn (string playername, int playerscore)
{
2. // have to print the player name (first playerfirst)
cout << playername << endl;
// have to roll the dice to see either if they rolled a pig or not
int dice = rand() % 6 + 1;
// now have to write an if statment whether or not they get 1 or anything else
if ( dice == 1)
{
cout << "You rolled a 1 (PIG!)" << endl;
cout << "Your turn is over" << endl;
}
else
{
playerscore += dice;
cout << "You rolled a " << dice << endl;
}
cout << "Your score: " << playerscore << endl;
if( dice == 1){
// if players it the first then the next player should be player2
if(turn == PLAYER1)
turn = PLAYER2;
// vise versa
else
turn = PLAYER1;
}
else{
cout << "Do you want to roll again? (y/n): ";
char answer;
cin >> answer;
cout << endl;
3. if( answer != 'y')
{
if( turn == PLAYER1)
turn = PLAYER2;
else
turn = PLAYER1;
}
}
// mind tried must keepgoing
return playerscore;
}
int main() {
srand(4444);
// setup and initialize variables
int player1score = 0;
int player2score = 0;
string player1name;
string player2name;
printIntro();
cout << endl;
// FIXME (2): get names of players
cout << "Player 1 - Enter your name: ";
cin >> player1name;
cout << endl;
cout << "Player 2 - Enter your name: ";
cin >> player2name;
cout << endl;
//play game
while (player1score < WINNING_SCORE && player2score < WINNING_SCORE) {
//player 1's turn or player 2's turn
4. if (turn == PLAYER1) {
player1score = humanTurn(player1name, player1score);
}
else {
player2score = humanTurn(player2name, player2score);
}
//FIXME (3): update turn value
// based on whose turn it is, update the turn variable to other player
}
// FIXME (7): Output who won the game.
if(player1score >= WINNING_SCORE)
{
cout << player1name << endl;
cout << "You rolled a 6"<< endl;
cout << "Your score: "<< player1score << endl;
cout << endl;
cout << player1name << " wins!" << endl;
}
else
{
cout << player2name << endl;
cout << "You rolled a 6" << endl;
cout << "Your score: " << player2score << endl;
cout << endl;
cout << player2name << " wins!" << endl;
}
return 0;
}
Solution
#include
#include
#include
using namespace std;
5. const int PIG=-1;
const int PLAYER1 = 0;
const int PLAYER2 = 1;
const int WINNING_SCORE = 100;
//const PIG would indicate that a player just got 1
// after long a while realized i needed this
int turn = PLAYER1;
//FIXME (1): Implement the printIntro function
void printIntro ()
{
cout << "Welcome to the dice game Pig!" << endl;
cout << "The objective is to be first to score 100 points." << endl;
return;
}
//FIXME (4, 5, 6): Implement the humanTurn function
//I have modified the function definition as per the requirement
int humanTurn (string playername)
{
int turnscore;
// have to print the player name (first playerfirst)
cout << playername << endl;
// have to roll the dice to see either if they rolled a pig or not
int dice = rand() % 6 + 1;
// now have to write an if statment whether or not they get 1 or anything else
if ( dice == 1)
{
cout << "You rolled a 1 (PIG!)" << endl;
cout << "Your turn is over" << endl;
// if players it the first then the next player should be player2
if(turn == PLAYER1)
turn = PLAYER2;
// vise versa
else
turn = PLAYER1;
return PIG;
6. }
else
{
cout << "You rolled a " << dice << endl;
cout << "Do you want to roll again? (y/n): ";
char answer;
cin >> answer;
cout << endl;
if( answer != 'y')
{
turnscore=dice;
if( turn == PLAYER1)
turn = PLAYER2;
else
turn = PLAYER1;
}
else{
int diceReturned=humanTurn (playername);
//A recursive call to humanTurn function is made if a player chooses to roll again
if(diceReturned==PIG){
return PIG;
}
else{
turnscore=diceReturned+dice;
}
//if player gets 1 on the second turn, then PIG is returned
//else, the dice is added to turn score
}
}
// mind tried must keepgoing
return turnscore;
}
int main() {
// setup and initialize variables
int scoreInitial=0;
7. int player1score = 0;
int player2score = 0;
string player1name;
string player2name;
printIntro();
cout << endl;
// FIXME (2): get names of players
cout << "Player 1 - Enter your name: ";
cin >> player1name;
cout << endl;
cout << "Player 2 - Enter your name: ";
cin >> player2name;
cout << endl;
//play game
while (player1score < WINNING_SCORE && player2score < WINNING_SCORE) {
//player 1's turn or player 2's turn
if (turn == PLAYER1) {
scoreInitial = humanTurn(player1name);
if(scoreInitial==PIG){
cout << "Your score: " << player1score << endl;
cout<<" ";
}
else{
player1score+=scoreInitial;
cout << "Your score: " << player1score << endl;
cout<<" ";
}
}
else {
scoreInitial = humanTurn(player2name);
if(scoreInitial==PIG){
cout << "Your score: " << player2score << endl;
cout<<" ";
}
else{
8. player2score+=scoreInitial;
cout << "Your score: " << player2score << endl;
cout<<" ";
}
}
//FIXME (3): update turn value
// based on whose turn it is, update the turn variable to other player
}
// FIXME (7): Output who won the game.
if(player1score >= WINNING_SCORE)
{
cout << player1name << endl;
cout << "You rolled a 6"<< endl;
cout << "Your score: "<< player1score << endl;
cout << endl;
cout << player1name << " wins!" << endl;
}
else
{
cout << player2name << endl;
cout << "You rolled a 6" << endl;
cout << "Your score: " << player2score << endl;
cout << endl;
cout << player2name << " wins!" << endl;
}
return 0;
}
SAMPLE IMPLEMENTATION THAT I TESTED:
Welcome to the dice game Pig!
The objective is to be first to score 100 points.
Player 1 - Enter your name: K1
Player 2 - Enter your name: K2
K1
You rolled a 2
Do you want to roll again? (y/n): y
9. K1
You rolled a 5
Do you want to roll again? (y/n): y
K1
You rolled a 4
Do you want to roll again? (y/n): n
Your score: 11
K2
You rolled a 2
Do you want to roll again? (y/n): y
K2
You rolled a 6
Do you want to roll again? (y/n): y
K2
You rolled a 2
Do you want to roll again? (y/n): y
K2
You rolled a 5
Do you want to roll again? (y/n): n
Your score: 15
K1
You rolled a 1 (PIG!)
Your turn is over
Your score: 11
K2
You rolled a 4
Do you want to roll again? (y/n): y
K2
You rolled a 2
Do you want to roll again? (y/n): y
K2
You rolled a 3
Do you want to roll again? (y/n): y
K2
You rolled a 2
Do you want to roll again? (y/n): y
10. K2
You rolled a 3
Do you want to roll again? (y/n): y
K2
You rolled a 2
Do you want to roll again? (y/n): n
Your score: 31
K1
You rolled a 6
Do you want to roll again? (y/n): y
K1
You rolled a 5
Do you want to roll again? (y/n): y
K1
You rolled a 1 (PIG!)
Your turn is over
Your score: 11
K2
You rolled a 1 (PIG!)
Your turn is over
Your score: 31
K1
You rolled a 5
Do you want to roll again? (y/n): y
K1
You rolled a 5
Do you want to roll again? (y/n): y
K1
You rolled a 6
Do you want to roll again? (y/n): y
K1
You rolled a 3
Do you want to roll again? (y/n): n
Your score: 30
K2
You rolled a 4
11. Do you want to roll again? (y/n): y
K2
You rolled a 4
Do you want to roll again? (y/n): y
K2
You rolled a 3
Do you want to roll again? (y/n): y
K2
You rolled a 3
Do you want to roll again? (y/n): y
K2
You rolled a 3
Do you want to roll again? (y/n): y
K2
You rolled a 2
Do you want to roll again? (y/n): n
Your score: 50
K1
You rolled a 2
Do you want to roll again? (y/n): y
K1
You rolled a 2
Do you want to roll again? (y/n): y
K1
You rolled a 6
Do you want to roll again? (y/n): y
K1
You rolled a 1 (PIG!)
Your turn is over
Your score: 30
K2
You rolled a 1 (PIG!)
Your turn is over
Your score: 50
K1
You rolled a 1 (PIG!)
12. Your turn is over
Your score: 30
K2
You rolled a 6
Do you want to roll again? (y/n): y
K2
You rolled a 4
Do you want to roll again? (y/n): y
K2
You rolled a 2
Do you want to roll again? (y/n): y
K2
You rolled a 5
Do you want to roll again? (y/n): n
Your score: 67
K1
You rolled a 2
Do you want to roll again? (y/n): y
K1
You rolled a 5
Do you want to roll again? (y/n): y
K1
You rolled a 4
Do you want to roll again? (y/n): y
K1
You rolled a 4
Do you want to roll again? (y/n): y
K1
You rolled a 4
Do you want to roll again? (y/n): n
Your score: 49
K2
You rolled a 6
Do you want to roll again? (y/n): y
K2
You rolled a 3
13. Do you want to roll again? (y/n): y
K2
You rolled a 2
Do you want to roll again? (y/n): y
K2
You rolled a 3
Do you want to roll again? (y/n): y
K2
You rolled a 3
Do you want to roll again? (y/n): n
Your score: 84
K1
You rolled a 6
Do you want to roll again? (y/n): y
K1
You rolled a 1 (PIG!)
Your turn is over
Your score: 49
K2
You rolled a 6
Do you want to roll again? (y/n): y
K2
You rolled a 5
Do you want to roll again? (y/n): n
Your score: 95
K1
You rolled a 2
Do you want to roll again? (y/n): n
Your score: 51
K2
You rolled a 3
Do you want to roll again? (y/n): y
K2
You rolled a 3
Do you want to roll again? (y/n): n
Your score: 101
14. K2
You rolled a 6
Your score: 101
K2 wins!
Please let me know in case of any doubts :)