Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  Yahtzee!
Language: C/C++
Code:
// CSIS123 Intro to Programming
// Project - Yahtzee Game!
// Jonathon Stewart

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>

using namespace std;

int rollDice (int &dice1, int &dice2, int &dice3, int &dice4, int &dice5);
int rollDice (int &dice);
int diceLoop (int &score, int &dice1, int &dice2, int &dice3, int &dice4, int &dice5, int &bonus_yahtzee);
int p1Reroll (int &dice1, int &dice2, int &dice3, int &dice4, int &dice5, string playername);
int GameOver (int playerscore, int compscore, bool forfeit, string playername);
int Round (bool &game, bool &forfeit, int &rounds, int ¤tRound, int playerscore, int compscore, string playername);
int compareFive (int num1, int num2, int num3, int num4, int num5, int &largest);
int compReroll (int &dice1, int &dice2, int &dice3, int &dice4, int &dice5);
int bonusYahtzee (int &bonus_yahtzee, int &score);

//A Yahtzee Game, based on three dice, against the computer that allows the user to set the number of rounds.
int main ()
{
  string playername;
  int p1dice1 = 0;
  int p1dice2 = 0;
  int p1dice3 = 0;
  int p1dice4 = 0;
  int p1dice5 = 0;
  int p1dice6 = 0;
  int compdice1 = 0;
  int compdice2 = 0;
  int compdice3 = 0;
  int compdice4 = 0;
  int compdice5 = 0;
  int compdice6 = 0;
  int compscore = 0;          //Initialize Variable for Computer Score
  int playerscore = 0;          //Initialize Variable for Player Score
  int rounds = 0;          // Initialize Variable for the Number of Rounds
  int currentRound = 0;
  bool game = true;          //Boolean flag for game
  bool forfeit = false;          //Boolean flag for forfeiting the game
  int player_yahtzee = 0; //player counter file for bonus yahtzee
  int computer_yahtzee = 0; // computer counter file for bonus yahtzee
  char play;               //Variable to allow player to choose whether or not to keep playing
  srand (time (0));
  cout << "Welcome to My Yahtzee Game! For this version of Yahtzee, you will be allowed to choose the number of rounds you wish" << endl;
  cout << "to play against the computer. The rules are as follows:" << endl;
  cout << "1. Five of a Kind (Yahtzee!) are worth 50 points. After the first Yahtzee, each additional Yahtzee will give a bonus 100 points." << endl;
  cout << "2. A Large Straight is worth 40 points." << endl;
  cout << "3. A Small Straight is worth 30 Points." << endl;
  cout << "4. A Full House is worth 25 Points." << endl;
  cout << "5. Four of a Kind is worth the full total of all dice." << endl;
  cout << "6. Three of a Kind is worth the full total of all dice." << endl;
  cout << "7. Two of a Kind is worth the full total of all dice." << endl;
  cout << "8. All other rolls will be the largest dice for that round." << endl; 
  cout << "9. Each Round, you will be given two rerolls per dice." << endl;
  cout << "Please enter your name. "; cin >> playername; cout << endl;
  cout << "Do You Want to play? "; cin >> play; cout << endl;
if (play == 'Y' || play == 'y')
    {
        (game = true);
        cout << playername << " how many Rounds do you wish to play? "; cin >> rounds; cout << endl;
    }

else if (play == 'N' || play == 'n')
    {
        forfeit = false;
        cout << "Thank you for playing " << playername << " . Goodbye." << endl;
    }   
while (game == true && rounds > 0) // While Loop for the Yahtzee Game. Calls to Multiple Functions for rolling dice, rerolling dice, scoring, and ending each round
{
rollDice (p1dice1, p1dice2, p1dice3, p1dice4, p1dice5);
    cout << playername << " rolls: " << p1dice1 << " | " << p1dice2 << " | " << p1dice3 << " | "<<  p1dice4 << " | " << p1dice5 << endl;
p1Reroll(p1dice1, p1dice2, p1dice3, p1dice4, p1dice5, playername);
    cout << playername << " rolls: " << p1dice1 << " | " << p1dice2 << " | " << p1dice3 << " | "<<  p1dice4 << " | " << p1dice5 << endl;
p1Reroll(p1dice1, p1dice2, p1dice3, p1dice4, p1dice5, playername);
    cout << playername << " rolls: " << p1dice1 << " | " << p1dice2 << " | " << p1dice3 << " | "<<  p1dice4 << " | " << p1dice5 << endl;
diceLoop(playerscore, p1dice1, p1dice2, p1dice3, p1dice4, p1dice5, player_yahtzee);
bonusYahtzee(player_yahtzee, playerscore);
rollDice (compdice1, compdice2, compdice3, compdice4, compdice5);
    cout << "The Computer rolls: " << compdice1 << " | " << compdice2 << " | " << compdice3 << " | "<<  compdice4 << " | " << compdice5 << endl;
compReroll (compdice1, compdice2, compdice3, compdice4, compdice5);
cout << "The Computer rolls: " << compdice1 << " | " << compdice2 << " | " << compdice3 << " | "<<  compdice4 << " | " << compdice5 << endl;
compReroll (compdice1, compdice2, compdice3, compdice4, compdice5);
cout << "The Computer rolls: " << compdice1 << " | " << compdice2 << " | " << compdice3 << " | "<<  compdice4 << " | " << compdice5 << endl;
diceLoop(compscore, compdice1, compdice2, compdice3, compdice4, compdice5, computer_yahtzee);
bonusYahtzee(computer_yahtzee, compscore);
Round (game, forfeit, rounds, currentRound, playerscore, compscore, playername);
}

GameOver(playerscore, compscore, forfeit, playername); //Function for determining whether the game ended in a Forfeit, a tie, a win, or a loss for the player
return 0;
}



int rollDice (int &dice1, int &dice2, int &dice3, int &dice4, int &dice5) //Function to roll all 5 dice.
    {

        dice1 = rand () % 6 + 1;
        dice2= rand () % 6 + 1;
        dice3 = rand () % 6 + 1;
        dice4 = rand () % 6 + 1;
        dice5 = rand () % 6 + 1;

        return 0;
    }
int rollDice (int &dice) // Function to allow for rolling a single dice
    {

        dice = rand () % 6 + 1;

        return 0;
    }
    
int p1Reroll (int &dice1, int &dice2, int &dice3, int &dice4, int &dice5, string playername) //Function for allowing the player to decide whether to reroll or not and then to decide which dice to reroll. Sends any dice to the single dice function.
{
char reroll;
cout << playername << " Would you like to reroll your dice? "; cin >> reroll; cout << endl;
if (reroll == 'Y' || reroll == 'y')
{
cout << playername << " Would you like to reroll Dice 1? " << dice1 << endl; cin >> reroll; cout << endl;
        if (reroll == 'Y' || reroll == 'y')
            {
                 rollDice(dice1);
            }
        cout << "Would you like to reroll Dice 2? " << dice2 << endl; cin >> reroll; cout << endl;
        if (reroll == 'Y' || reroll == 'y')
            {
                 rollDice(dice2);
            }
        cout << "Would you like to reroll Dice 3? " << dice3 << endl; cin >> reroll; cout << endl;
        if (reroll == 'Y' || reroll == 'y')
            {
                 rollDice (dice3);
            }
        cout << "Would you like to reroll Dice 4? " << dice4 << endl; cin >> reroll; cout << endl;
        if (reroll == 'Y' || reroll == 'y')
            {
                 rollDice (dice4);
            }
        cout << "Would you like to reroll Dice 5? " << dice5 << endl; cin >> reroll; cout << endl;
        if (reroll == 'Y' || reroll == 'y')
            {
                 rollDice (dice5);
            }
}
}

int compReroll (int &dice1, int &dice2, int &dice3, int &dice4, int &dice5) //Function to allow the Computer to determine whether or not it will reroll any of its dice. Based largely off of the same algorithims as the scoring function to determine whether the Computer has Yahtzee, FullHouse, ETC
{
static int numberOf1s = 0;
static int numberOf2s = 0;
static int numberOf3s = 0;
static int numberOf4s = 0;
static int numberOf5s = 0;
static int numberOf6s = 0;
bool TwoOfAKind = false;
bool ThreeOfAKind = false;
bool FourOfAKind = false;
bool FullHouse = false;
bool Yahtzee = false;
bool LongStraight = false;
bool SmallStraight = false;

numberOf1s = 0;
numberOf2s = 0;
numberOf3s = 0;
numberOf4s = 0;
numberOf5s = 0;
numberOf6s = 0;

    if (dice1 == 1) // If Statements to convert dice rolls into counters for integers to determine TwoOfAKind, ThreeOfAKind, FourOfAKind, Yahtzee, ETC
        {
            numberOf1s++;
        }
    if (dice2 == 1)
        {
            numberOf1s++;
        }
    if (dice3 == 1)
        {
            numberOf1s++;
        }
    if (dice4 == 1)
        {
            numberOf1s++;
        }
    if (dice5 == 1)
        {
            numberOf1s++;
        }
   
    if (dice1 == 2)
        {
            numberOf2s++;
        }
    if (dice2 == 2)
        {
            numberOf2s++;
        }
    if (dice3 == 2)
        {
            numberOf2s++;
        }
    if (dice4 == 2)
        {
            numberOf2s++;
        }
    if (dice5 == 2)
        {
            numberOf2s++;
        }
    if (dice1 == 3)
        {
            numberOf3s++;
        }
    if (dice2 == 3)
        {
            numberOf3s++;
        }
    if (dice3 == 3)
        {
            numberOf3s++;
        }
    if (dice4 == 3)
        {
            numberOf3s++;
        }
    if (dice5 == 3)
        {
            numberOf3s++;
        }
    if (dice1 == 4)
        {
            numberOf4s++;
        }
    if (dice2 == 4)
        {
            numberOf4s++;
        }
    if (dice3 == 4)
        {
            numberOf4s++;
        }
    if (dice4 == 4)
        {
            numberOf4s++;
        }
    if (dice5 == 4)
        {
            numberOf4s++;
        }
    if (dice1 == 5)
        {
            numberOf5s++;
        }
    if (dice2 == 5)
        {
            numberOf5s++;
        }
    if (dice3 == 5)
        {
            numberOf5s++;
        }
    if (dice4 == 5)
        {
            numberOf5s++;
        }
    if (dice5 == 5)
        {
            numberOf5s++;
        }
    if (dice1 == 6)
        {
            numberOf6s++;
        }
    if (dice2 == 6)
        {
            numberOf6s++;
        }
    if (dice3 == 6)
        {
            numberOf6s++;
        }
    if (dice4 == 6)
        {
            numberOf6s++;
        }
    if (dice5 == 6)
        {
            numberOf6s++;
        }

if (numberOf1s == 2 || numberOf2s == 2 || numberOf3s == 2 || numberOf4s == 2 || numberOf5s == 2 || numberOf6s == 2) //If statements using counter variables to set flags for various scoring mechanics
        {   if (numberOf1s == 3 || numberOf2s == 3 || numberOf3s == 3 || numberOf4s == 3 || numberOf5s == 3 || numberOf6s == 3)
                { 
                    (FullHouse = true);
                }
                
            else
                {
                    (TwoOfAKind = true);
                }
        }        
if (numberOf1s == 3 || numberOf2s == 3 || numberOf3s == 3 || numberOf4s == 3 || numberOf5s == 3 || numberOf6s == 3)
    {
    (ThreeOfAKind = true);
    }
if (numberOf1s == 4 || numberOf2s == 4 || numberOf3s == 4 || numberOf4s == 4 || numberOf5s == 4 || numberOf6s == 4)
    {
    (FourOfAKind = true);
    }
if (numberOf1s == 5 || numberOf2s == 5 || numberOf3s == 5 || numberOf4s == 5 || numberOf5s == 5 || numberOf6s == 5)
    {
    (Yahtzee = true);
    }
if (numberOf1s == 1 && numberOf2s == 1 && numberOf3s == 1 && numberOf4s == 1 && numberOf5s == 1 || numberOf2s == 1 && numberOf3s == 1 && numberOf4s == 1 && numberOf5s == 1 && numberOf6s == 1)
    {
    (LongStraight = true);
    }
if (numberOf1s >= 1 && numberOf2s >= 1 && numberOf3s >= 1 && numberOf4s >= 1  || numberOf2s >= 1 && numberOf3s >=1 && numberOf4s >= 1 && numberOf5s >= 1 || numberOf3s >= 1 && numberOf4s >= 1 && numberOf5s >= 1 && numberOf6s >= 1)
    {
    (SmallStraight = true);
    (TwoOfAKind = false);
    }
if (FullHouse == true) //if statement noting the computer will not reroll on a full house

    {
        cout << "The Computer has decided not to reroll any dice." << endl;
        return 0;
    }
else if (ThreeOfAKind == true) //if statement to allow computer to reroll dice when it has three of a kind to roll remaining dice that do not match

    {
        cout << "The Computer has decided to reroll dice." << endl;
    if (dice1 == dice2 && dice1 == dice3 && dice1 != dice4 && dice1 != dice5)
            {
                cout << "The Computer has decided to reroll Dice 4." << endl;
                rollDice (dice4);
                cout << "The Computer has decided to reroll Dice 5." << endl;
                rollDice (dice5);
            }
    else if (dice1 == dice4 && dice1 == dice5 && dice1 != dice2 && dice1 != dice3)
            {
                cout << "The Computer has decided to reroll Dice 2." << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 3." << endl;
                rollDice (dice3);
            }
    else if (dice2 == dice4 && dice2 == dice5 && dice2 != dice1 && dice2 != dice3) 
            {
                cout << "The Computer has decided to reroll Dice 1." << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 3." << endl;
                rollDice (dice3);
            }
    else if (dice2 == dice1 && dice2 == dice3 && dice2 != dice4 && dice2 != dice5)
            {
                cout << "The Computer has decided to reroll Dice 4." << endl;
                rollDice (dice4);
                cout << "The Computer has decided to reroll Dice 5." << endl;
                rollDice (dice5);
            }
    else if (dice3 == dice1 && dice3 == dice2 && dice3 !=dice4 && dice3 !=dice5)
            {
                cout << "The Computer has decided to reroll Dice 4." << endl;
                rollDice (dice4);
                cout << "The Computer has decided to reroll Dice 5." << endl;
                rollDice (dice5);
            }
    else if (dice3 == dice4 && dice3 == dice5 && dice3 != dice1 && dice3 != dice2) 
            {
                cout << "The Computer has decided to reroll Dice 1." << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 2." << endl;
                rollDice (dice2);
            }
    else if (dice4 == dice3 && dice4 == dice5 && dice4 != dice1 && dice4 != dice2)
            {
                cout << "The Computer has decided to reroll Dice 1." << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 2." << endl;
                rollDice (dice2);
            }
    else if (dice4 == dice1 && dice4 == dice2 && dice4 != dice3 && dice4 != dice5)
            {
                cout << "The Computer has decided to reroll Dice 3." << endl;
                rollDice (dice3);
                cout << "The Computer has decided to reroll Dice 5." << endl;
                rollDice (dice5);
            }
    else if (dice5 == dice3 && dice5 == dice4 && dice5 != dice1 && dice5 != dice2)
            {
                cout << "The Computer has decided to reroll Dice 1." << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 2." << endl;
                rollDice (dice2);
            }
    else if (dice5 == dice1 && dice5 == dice2 && dice5 != dice3 && dice5 != dice4)
            {
                cout << "The Computer has decided to reroll Dice 3." << endl;
                rollDice (dice3);
                cout << "The Computer has decided to reroll Dice 4." << endl;
                rollDice (dice4);
            }        
        return 0;
    }
else if (TwoOfAKind == true) //if statement when the computer has two of a kind to reroll dice that do not match

    {
            cout << "The Computer has decided to reroll dice." << endl;
        if (dice1 == dice2)
            {
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3);
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
            } 
        else if (dice1 == dice3)
           {
                cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
           }
        else if (dice1 == dice4)  
            {
                cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3);
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
            }
        else if (dice1 == dice5)
            {
                cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3);
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);
            }
        else if (dice2 == dice1)
            {
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3);
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
            } 
        else if (dice2 == dice3)
           {
                cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
           }
        else if (dice2 == dice4)  
            {
                cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3);
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
            }
        else if (dice2 == dice5)
            {
                cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3);
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);
            }
        else if (dice3 == dice2)
            {
                cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
            } 
        else if (dice3 == dice1)
           {
                cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
           }
        else if (dice3 == dice4)  
            {
                cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
            }
        else if (dice3 == dice5)
            {
                cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);
            }
        else if (dice4 == dice2)
            {
                cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3);
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
            } 
        else if (dice4 == dice3)
           {
                cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
           }
        else if (dice4 == dice1)  
            {
                cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3);
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
            }
        else if (dice4 == dice5)
            {
                cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3);
            }
        else if (dice5 == dice2)
            {
                cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3);
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);
            } 
        else if (dice5 == dice3)
           {
                cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);
           }
        else if (dice5 == dice4)  
            {
                cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);
                cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3);
            }
        else if (dice5 == dice1)
            {
                cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3);
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);
            }
        return 0;
    }

else if (FourOfAKind == true) // if statement when the computer has four of a kind to reroll dice that do not match

    {
        cout << "The Computer has decided to reroll dice." << endl;
        if (dice1 == dice2 && dice1 == dice3 && dice1 == dice4 && dice1 != dice5)
            {
                cout << "The Computer has decided to reroll Dice 5" << endl;
                rollDice (dice5);
            }
        else if (dice1 == dice2 && dice1 == dice3 && dice1 == dice5 && dice1 != dice4)
            {
                cout << "The Computer has decided to reroll Dice 4" << endl;
                rollDice (dice4);   
            }
        else if (dice1 == dice2 && dice1 == dice4 && dice1 == dice5 && dice1 != dice3)
            {
                cout << "The Computer has decided to reroll Dice 3" << endl;
                rollDice (dice3); 
            }
        else if  (dice1 == dice4 && dice1 == dice3 && dice1 == dice5 && dice1 != dice2)
            {
               cout << "The Computer has decided to reroll Dice 2" << endl;
                rollDice (dice2);  
            }
        else if (dice2 == dice3 && dice2== dice4 && dice2 == dice5 && dice2 != dice5)
            {
               cout << "The Computer has decided to reroll Dice 1" << endl;
                rollDice (dice1);   
            }
        return 0;
    }
    
else if  (Yahtzee == true) //if statement noting the computer will not reroll on a Yahtzee

    {
        cout << "The Computer has decided not to reroll any dice." << endl;
        return 0;
    }

else if (LongStraight == true) //if statement noting the computer will not reroll on a large straight

    {
        cout << "The Computer has decided not to reroll any dice." << endl;
        return 0;
    }
else if (SmallStraight == true) //if statement noting the computer will not reroll on a small straight
    {
        cout << "The Computer has decided not to reroll any dice." << endl;
        return 0;
    }
    
else //else statement that the computer will reroll if no flags are set, meaning no matches, and will roll any dice that are less than or equal to 3
    {   
            cout << "The Computer has decided to reroll dice." << endl;
      {
       if (dice1 <= 3)
         {
             cout << "The Computer has decided to reroll Dice 1" << endl;
             rollDice (dice1);
         }
       if (dice2 <= 3)
         {
             cout << "The Computer has deciced to reroll Dice 2" << endl;
             rollDice (dice2);
         }
       if (dice3 <= 3)
         {
             cout << "The Computer has decided to reroll Dice 3" << endl;
             rollDice (dice3);
         }
       if (dice4 <= 3)
         {
             cout << "The Computer has decided to reroll Dice 4" << endl;
             rollDice (dice4);
         }
       if (dice5 <=3)
         {
             cout << "The Computer has decided to reroll Dice 5" << endl;
             rollDice (dice5);
         }
      }
     }
        return 0;
    }


int diceLoop (int &score, int &dice1, int &dice2, int &dice3, int &dice4, int &dice5, int &bonus_yahtzee) //This is the Scoring Function that determines whether the dice rolls equal Yahtzee, Full House, Large Straight, etc
{
static int numberOf1s = 0; //Variables for counters, as well as flags for all the various scores are declared
static int numberOf2s = 0;
static int numberOf3s = 0;
static int numberOf4s = 0;
static int numberOf5s = 0;
static int numberOf6s = 0;
bool TwoOfAKind = false;
bool ThreeOfAKind = false;
bool FourOfAKind = false;
bool FullHouse = false;
bool Yahtzee = false;
bool LongStraight = false;
bool SmallStraight = false;
int largest = 0; // variable for largest is declared in the event that there are no pairs and no large or small straights so that the largest dice can be added to the score


numberOf1s = 0;
numberOf2s = 0;
numberOf3s = 0;
numberOf4s = 0;
numberOf5s = 0;
numberOf6s = 0;

    if (dice1 == 1) //if statements to add the dice totals to the counter variables
        {
            numberOf1s++;
        }
    if (dice2 == 1)
        {
            numberOf1s++;
        }
    if (dice3 == 1)
        {
            numberOf1s++;
        }
    if (dice4 == 1)
        {
            numberOf1s++;
        }
    if (dice5 == 1)
        {
            numberOf1s++;
        }
   
    if (dice1 == 2)
        {
            numberOf2s++;
        }
    if (dice2 == 2)
        {
            numberOf2s++;
        }
    if (dice3 == 2)
        {
            numberOf2s++;
        }
    if (dice4 == 2)
        {
            numberOf2s++;
        }
    if (dice5 == 2)
        {
            numberOf2s++;
        }
    if (dice1 == 3)
        {
            numberOf3s++;
        }
    if (dice2 == 3)
        {
            numberOf3s++;
        }
    if (dice3 == 3)
        {
            numberOf3s++;
        }
    if (dice4 == 3)
        {
            numberOf3s++;
        }
    if (dice5 == 3)
        {
            numberOf3s++;
        }
    if (dice1 == 4)
        {
            numberOf4s++;
        }
    if (dice2 == 4)
        {
            numberOf4s++;
        }
    if (dice3 == 4)
        {
            numberOf4s++;
        }
    if (dice4 == 4)
        {
            numberOf4s++;
        }
    if (dice5 == 4)
        {
            numberOf4s++;
        }
    if (dice1 == 5)
        {
            numberOf5s++;
        }
    if (dice2 == 5)
        {
            numberOf5s++;
        }
    if (dice3 == 5)
        {
            numberOf5s++;
        }
    if (dice4 == 5)
        {
            numberOf5s++;
        }
    if (dice5 == 5)
        {
            numberOf5s++;
        }
    if (dice1 == 6)
        {
            numberOf6s++;
        }
    if (dice2 == 6)
        {
            numberOf6s++;
        }
    if (dice3 == 6)
        {
            numberOf6s++;
        }
    if (dice4 == 6)
        {
            numberOf6s++;
        }
    if (dice5 == 6)
        {
            numberOf6s++;
        }

if (numberOf1s == 2 || numberOf2s == 2 || numberOf3s == 2 || numberOf4s == 2 || numberOf5s == 2 || numberOf6s == 2) //if statment to set flag for TwoOfAKind and/or Full House if true
        {   if (numberOf1s == 3 || numberOf2s == 3 || numberOf3s == 3 || numberOf4s == 3 || numberOf5s == 3 || numberOf6s == 3)
                { 
                    (FullHouse = true);
                }
                
            else
                {
                    (TwoOfAKind = true); //else statement for Two of a Kind if Full House is ThreeOfAKind is false but TwoOfaKind is true
                }
        }        
if (numberOf1s == 3 || numberOf2s == 3 || numberOf3s == 3 || numberOf4s == 3 || numberOf5s == 3 || numberOf6s == 3) //if statement to set the flag for ThreeOfAKind flag if true
    {
    (ThreeOfAKind = true);
    }
if (numberOf1s == 4 || numberOf2s == 4 || numberOf3s == 4 || numberOf4s == 4 || numberOf5s == 4 || numberOf6s == 4) // if statement to set the flag for FourOfAKind flag if true
    {
    (FourOfAKind = true);
    }
if (numberOf1s == 5 || numberOf2s == 5 || numberOf3s == 5 || numberOf4s == 5 || numberOf5s == 5 || numberOf6s == 5) // if statement to set the flag for Yahtzee if true
    {
    (Yahtzee = true);
    }
if (numberOf1s == 1 && numberOf2s == 1 && numberOf3s == 1 && numberOf4s == 1 && numberOf5s == 1 || numberOf2s == 1 && numberOf3s == 1 && numberOf4s == 1 && numberOf5s == 1 && numberOf6s == 1)
    {
    (LongStraight = true); //if statement to set the flag for LargeStraight if true
    }
if (numberOf1s >= 1 && numberOf2s >= 1 && numberOf3s >= 1 && numberOf4s >= 1  || numberOf2s >= 1 && numberOf3s >=1 && numberOf4s >= 1 && numberOf5s >= 1 || numberOf3s >= 1 && numberOf4s >= 1 && numberOf5s >= 1 && numberOf6s >= 1)
    {
    (SmallStraight = true); //if statement to set the flag for small straight if true. also sets flag for TwoOfAKind to false since it is possible to have both a small straight and a two of a kind
    (TwoOfAKind = false);
    }
if (FullHouse == true) //if else statements for scoring based on boolean flags

    {
        cout << "Full House! 25 Points!" << endl;
        (score = score + 25);
        return 0;
    }
else if (ThreeOfAKind == true)

    {
        cout << "Three of a Kind! " << dice1+dice2+dice3+dice4+dice5 << " Points!" << endl;
        (score = score + dice1+dice2+dice3+dice4+dice5);
        return 0;
    }
else if (TwoOfAKind == true)

    {
        cout << "Two of a Kind! " << dice1+dice2+dice3+dice4+dice5 << " Points!" << endl;
        (score = score + dice1+dice2+dice3+dice4+dice5);
        return 0;
    }

else if (FourOfAKind == true)

    {
        cout << "Four of a Kind! " << dice1+dice2+dice3+dice4+dice5 << " Points!" << endl;
        (score = score + dice1+dice2+dice3+dice4+dice5);
        return 0;
    }
    
else if  (Yahtzee == true)

    {
        cout << "Yahtzee! 50 Points!" << endl;
        (score = score + 50);
        (bonus_yahtzee++);// adds a count to the counter file for the bonus yahtzee
        return 0;
    }

else if (LongStraight == true)

    {
        cout << "Long Straight! 40 Points!" << endl;
        (score = score + 40);
        return 0;
    }
else if (SmallStraight == true)
    {
        cout << "Small Straight! 30 Points!" << endl;
        (score = score + 30);
        return 0;
    }
    
else 
    {   largest = compareFive(dice1, dice2, dice3, dice4, dice5, largest); // if no flag is set calls function to compare all five dice and get the largest dice for the score for the round
        cout << "Largest! " << largest << " Points!" << endl;
        (score = score + largest);
        return 0;
    }

}

int compareFive (int num1, int num2, int num3, int num4, int num5, int &largest) //Function to compare all 5 dice to get the largest dice for score in the event that no flag is set

{
if (num1>num2 && num1>num3 && num1>num4 && num1>num5) //if else statements to compare the dice for the largest dice
{    
    largest=num1;
}
else if (num2>num1 && num2>num3 && num2>num4 && num2>num5)
{    
    largest=num2;
}
else if (num3>num1 && num3>num2 && num3>num4 && num3>num5)
{    
    largest=num3;
}
else if (num4>num1 && num4>num2 && num4>num3 && num4>num5)
{    
    largest=num4;
}
else 
{
largest=num5;
}
return largest; 
}

int bonusYahtzee (int &bonus_yahtzee, int &score) //Function to check for Bonus Yahtzee
{
 if (bonus_yahtzee == 2) //Checks Counter file. If counter file is set to 2, it outputs the message and adds 100 points to the score and then subtracts 1 from the counter file to return the counter file to 1.
    {
        cout << " Bonus Yahtzee! 100 Points!" << endl;
        (score = score + 100);
        (bonus_yahtzee--);
        return 0;
    }
else 
    
        return 0;
}

int Round (bool &game, bool &forfeit, int &rounds, int ¤tRound, int playerscore, int compscore, string playername) //Function for the end of each round. Tells the round number, score at the end of the round, and asks if the player wishes to keep playing.
{
char play;
rounds--;
currentRound++;
cout << "For Round " << currentRound << " The Score is:" << endl;
cout << playername << " : " << playerscore << endl;
cout << "Computer: " << compscore << endl;
if (rounds > 0)
    {
        cout << "Do you wish to keep playing? "; cin >> play; cout << endl;
    if (play == 'Y' || play == 'y')
         {
         game = true;
         }
      else if (play == 'N' || play == 'n')
         {
        game = false;
        forfeit = true;
        }
     }
}     

int GameOver (int playerscore, int compscore, bool forfeit, string playername) //Function to end the game. Determins the winner of the game based on score, or whether the player forfeit or not
{
    if (playerscore > compscore && forfeit == false)
    {
      cout << "Congratulations " << playername << " you win! Thanks for playing." << endl;
    }
    else if (playerscore == compscore && forfeit == false)
    {
      cout << "The game ended in a tie. Thanks for playing" << endl;
    }
    else if (playerscore < compscore && forfeit == false)
    {
    cout << "Sorry, " << playername << ", you lose. Thanks for playing." << endl;
    }
    else if (forfeit == true)
    {
    cout << playername << " has forfeited the game. Thanks for playing." << endl;
    }
}    
          
Comments: