Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Rewrite your solution to permit an arbitrary number of players. source.cpp #incl

ID: 3731890 • Letter: R

Question

Rewrite your solution to permit an arbitrary number of players.

source.cpp

#include <ctime>

#include <iomanip>

#include <iostream>

#include <string>

#include <random>

#include "Player.h"

using namespace std;

int main()

{

const int M = 37;

const int N = 5;

Player player[N];

player[0].setName("Edd"); player[0].setPoints(0);

player[1].setName("Ged"); player[1].setPoints(0);

player[2].setName("Jed"); player[2].setPoints(0);

player[3].setName("Ted"); player[3].setPoints(0);

player[4].setName("Zed"); player[4].setPoints(0);

default_random_engine dre(static_cast<size_t>(time(0)));

uniform_int_distribution<int> player_uid(0, N - 1);

uniform_int_distribution<int> dice_uid(1, 6);

int index = player_uid(dre);

do

{

int die1 = dice_uid(dre);

int die2 = dice_uid(dre);

int points = player[index].getPoints() + die1 + +die2;

player[index].setPoints(points);

player[index].setExtraTurn(false);

if (points > M)

{

player[index].setPoints(points / 2);

if (die1 == die2)

cout << player[index].getName() << '/' << setw(2) << die1 + die2 << '/' << setw(2) << player[index].getPoints() << " loses 1/2 points" << endl;

else

{

cout << player[index].getName() << '/' << setw(2) << die1 + die2 << '/' << setw(2) << player[index].getPoints() << " loses 1/2 points and next turn" << endl;

player[index].setLostTurn(true);

}

index = (index + 1) % N;

}

else if (points == M)

{

cout << player[index].getName() << '/' << setw(2) << die1 + die2 << '/' << setw(2) << player[index].getPoints() << endl;

cout << player[index].getName() << " wins" << endl;

}

else if (die1 == die2)

{

cout << player[index].getName() << '/' << setw(2) << die1 + die2 << '/' << setw(2) << player[index].getPoints() << " extra turn" << endl;

player[index].setExtraTurn(true);

}

else

{

cout << player[index].getName() << '/' << setw(2) << die1 + die2 << '/' << setw(2) << player[index].getPoints() << endl;

index = (index + 1) % N;

}

while (player[index].getLostTurn())

{

cout << player[index].getName() << " loses this turn" << endl;

player[index].setLostTurn(false);

index = (index + 1) % N;

}

}

while (player[index].getPoints() != M);

system("pause");

return 0;

}

player.h

#pragma once

#include <string>

using namespace std;

class Player

{

public:

Player(const string& new_name = "No Name");

string getName() const;

int getPoints() const;

void setName(const string& new_name);

void setPoints(int new_points);

bool getExtraTurn() const;

void setExtraTurn(bool new_extra_turn);

bool getLostTurn() const;

void setLostTurn(bool new_lost_turn);;

private:

string name;

int points;

bool lost_turn;

bool extra_turn;

};

player.cpp

#include "Player.h"

Player::Player(const string& new_name)

{

setName(new_name);

lost_turn = false;

extra_turn = false;

}

string Player::getName() const

{

return name;

}

bool Player::getLostTurn() const

{

return lost_turn;

}

void Player::setLostTurn(bool new_lost_turn)

{

lost_turn = new_lost_turn;

}

int Player::getPoints() const

{

return points;

}

void Player::setName(const string& new_name)

{

name = new_name;

}

void Player::setPoints(int new_points)

{

points = new_points;

}

bool Player::getExtraTurn() const

{

return extra_turn;

}

void Player::setExtraTurn(bool new_extra_turn)

{

extra_turn = new_extra_turn;

}

Explanation / Answer

I am doing changes in only in source.cpp file other two files remain same.

You can simply take input value(N) from terminal and Max_Point assumes as per your code.

#include <ctime>

#include <iomanip>

#include <iostream>

#include <string>

#include <random>

#include "Player.h"

using namespace std;

int main()

{
int N,M;
cout<<"how many players you want ? ";
cin>>N;

/* Choose random point (Value of M) and by reading your code it seems value of M must efficiently greater than value of N
So we can choose value of M greater then 7*N ... as per your code
*/
M=7*(rand()%N)+rand()%N;

Player player[N];

player[0].setName("Edd"); player[0].setPoints(0);

player[1].setName("Ged"); player[1].setPoints(0);

player[2].setName("Jed"); player[2].setPoints(0);

player[3].setName("Ted"); player[3].setPoints(0);

player[4].setName("Zed"); player[4].setPoints(0);

default_random_engine dre(static_cast<size_t>(time(0)));

uniform_int_distribution<int> player_uid(0, N - 1);

uniform_int_distribution<int> dice_uid(1, 6);

int index = player_uid(dre);

do

{

int die1 = dice_uid(dre);

int die2 = dice_uid(dre);

int points = player[index].getPoints() + die1 + +die2;

player[index].setPoints(points);

player[index].setExtraTurn(false);

if (points > M)

{

player[index].setPoints(points / 2);

if (die1 == die2)

cout << player[index].getName() << '/' << setw(2) << die1 + die2 << '/' << setw(2) << player[index].getPoints() << " loses 1/2 points" << endl;

else

{

cout << player[index].getName() << '/' << setw(2) << die1 + die2 << '/' << setw(2) << player[index].getPoints() << " loses 1/2 points and next turn" << endl;

player[index].setLostTurn(true);

}

index = (index + 1) % N;

}

else if (points == M)

{

cout << player[index].getName() << '/' << setw(2) << die1 + die2 << '/' << setw(2) << player[index].getPoints() << endl;

cout << player[index].getName() << " wins" << endl;

}

else if (die1 == die2)

{

cout << player[index].getName() << '/' << setw(2) << die1 + die2 << '/' << setw(2) << player[index].getPoints() << " extra turn" << endl;

player[index].setExtraTurn(true);

}

else

{

cout << player[index].getName() << '/' << setw(2) << die1 + die2 << '/' << setw(2) << player[index].getPoints() << endl;

index = (index + 1) % N;

}

while (player[index].getLostTurn())

{

cout << player[index].getName() << " loses this turn" << endl;

player[index].setLostTurn(false);

index = (index + 1) % N;

}

}

while (player[index].getPoints() != M);

system("pause");

return 0;

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote