here is the codes to a game in C++ but i need to modify it so it will work right
ID: 3532081 • Letter: H
Question
here is the codes to a game in C++ but i need to modify it so it will work right, all the sections that have comments are the section that needs to be modified. whoever gets to number 50 first wins the game, you can only add max number 6 to original guessed number but you can add 1 to 6.
// standardaddgame.cpp : Defines the entry point for the console application.
//
#include <iostream>
#include <limits>
#include <string>
#include <cmath>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
const int max_number = 50;
const int min_number = 0;
const int max_increase = 6;
const int HUMAN = 0;
const int ROBOT = 1;
const char end_of_line = ' ';
int readNumber(int number, int max_number, int max_increase);
bool readYesNoAnswer(const string& prompt = "Do you want to play another game? ");
int computeNumber(int number, int max_number, int max_increase);
void playNumberGame(int max_number, int max_increase, int min_number);
int main()
{
srand(unsigned(time(NULL)));
while(readYesNoAnswer("Do you want to play? "))
playNumberGame(max_number, max_increase, min_number);
system("pause");
return 0;
}
void playNumberGame(int max_number, int max_increase, int min_number)
{
cout << "2 players take turns selecting a number" << endl;
cout << "An ith selected number, n(i), is greater than any previously selected number" << endl;
cout << "For any i, 1 <= n(i+1)-n(i) <= "<< max_increase << endl;
cout << "The first player to select " << max_number << " wins" << endl;
int player_id = rand() % 2;
int number = min_number;
do
{
player_id = (player_id + 1) % 2;
cout << "The number is " << number << endl;
if(player_id == HUMAN)
{
cout << "It is the human player's turn" << endl;
cin >> number; // need to figure out how to check if this input is a good number, not letters or number that is addition more than 6 and not less than 1.
cout << "The human player chooses " << number << endl;
if(cin.peek() == ' ')
char discard = cin.get();
}
else
{
cout << "It is the robot player's turn" << endl;
number = 1 + rand() % max_increase; //random number generator, this is wrong, need to generate number that adds first or old guess and adds 1, 2, 3, 4, 5, or 6 to it.
cout << "The robot player chooses " << number << endl;
}
}
while(true); //replace true with missing condition, maybe to figure out who wins. continues or stop game. whoever gets to 50 first wins the game.
}
int readNumber(int old_number, int max_number, int max_increase) //check if old number is good with new number human input
{
bool good_new_number = false;
int new_number;
do
{
cout << "Please enter a new number: ";
cin >> new_number;
if(!cin.good())
{
cout << "You did not enter a number" << endl;
cin.clear();
}
else if(new_number <= old_number)
cout << new_number << " is not greater than " << old_number << endl;
else if(new_number > max_number)
cout << new_number << " is too big" << endl;
else if(new_number - old_number > max_increase)
cout << (new_number - old_number) << " is an increase that is greater than " << max_increase << endl;
else
good_new_number = true;
cin.ignore(numeric_limits<int>::max(), end_of_line);
}
while(!good_new_number);
return new_number;
}
bool readYesNoAnswer(const string& prompt)
{
cout << prompt;
string answer;
getline(cin, answer, ' ');
int length = answer.length();
return length == 0 || answer[0] == 'y' || answer[0] == 'Y';
}
int computeNumber(int number, int max_number, int max_increase) //stores all current number input
{
int difference = (number + max_increase) % (max_increase + 1);
if(difference == 0)
number = number + rand() % max_increase + 1;
else
number = number + max_increase + 1 - difference;
return number;
}
Explanation / Answer
try this code buddy this will be helpfull...
using namespace std;
const int max_number = 50;
const int min_number = 0;
const int max_increase = 6;
const int HUMAN = 0;
const int ROBOT = 1;
const char end_of_line = ' ';
int readNumber(int number, int max_number, int max_increase);
int computeNumber(int number, int max_number, int max_increase);
void playNumberGame(int max_number, int max_increase, int min_number);
int main()
{
srand(unsigned(time(NULL)));
cout << "Do you want to play the number game(Y or y)? ";
char answer;
cin >> answer;
while(answer == 'Y' || answer == 'y')
{
playNumberGame(max_number, max_increase, min_number);
cout << "Do you play the number game again(Y or y)? ";
cin >> answer;
}
system("pause");
return 0;
}
void playNumberGame(int max_number, int max_increase, int min_number)
{
int player_id = rand() % 2;
int number = min_number;
do
{
player_id = (player_id + 1) % 2;
cout << "The number is " << number << endl;
if(player_id == HUMAN)
{
cout << "It is the human player's turn" << endl;
number = readNumber(number, max_number, max_increase);
cout << "The human player chooses " << number << endl;
}
else
{
cout << "It is the robot player's turn" << endl;
number = computeNumber(number, max_number, max_increase);
cout << "The robot player chooses " << number << endl;
}
}
while(number < max_number);
if(player_id == HUMAN)
cout << "The human player wins!" << endl;
else
cout << "The human player loses" << endl;
}
int readNumber(int old_number, int max_number, int max_increase)
{
bool good_new_number = false;
int new_number;
do
{
cout << "Please enter a new number: ";
cin >> new_number;
if(!cin.good())
{
cout << "You did not enter a number" << endl;
cin.clear();
cin.ignore(numeric_limits::max(), end_of_line);
}
else if(new_number <= old_number)
cout << new_number << " is not greater than " << old_number << endl;
else if(new_number > max_number)
cout << new_number << " is too big" << endl;
else if(new_number - old_number > max_increase)
cout << (new_number - old_number) << " is an increase that is greater than " << max_increase << endl;
else
good_new_number = true;
}
while(!good_new_number);
return new_number;
}
int computeNumber(int number, int max_number, int max_increase)
{
if((max_number - number) % (max_increase + 1) == 0)
number = number + 1 + rand() % max_increase;
else
{
do
number = number + 1;
while((max_number - number) % (max_increase + 1) != 0);
}
return number;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.