Я почти закончил эту базовую программу для игры в кости, но не могу понять, что я сделал не так для srand.Предполагается случайным образом бросить 2 кубика для пользователя, и у них есть возможность оставить то, что они бросили (K) или снова бросить (R).Я хотел бы, чтобы программа выводила новые «случайные» числа для броска костей каждый раз, когда пользователь вводит «R», когда его спрашивают, хотят ли они бросить снова, но те же цифры продолжают отображаться.
ОстальныеПрограмма, кажется, работает хорошо - пользователь играет против компьютера.Как мне сгенерировать новые числа для roll1 и roll2, когда пользователь вводит «R», когда его просят сохранить или перекатить?
#include <stdlib.h> /// need this for srand() -- for random numbers
#include <time.h> /// need this for time() -- time
#include <iostream> /// need this for cout<< and cin>>
using namespace std; /// need this for cout<< and cin>>
int main()
{
int iseed = (int)time(0);
srand(iseed);
cout << "Beat the computer! \n";
int roll1 = 1+rand()%6; /// make a random number for die # 1 for user
int roll2 = 1+rand()%6; /// make a random number for die # 2 for user
int UserRoll = roll1 + roll2; /// totals the sum of die 1 and die 2 for the user
char keep;
do
{
cout << "You rolled a " << roll1 << " and a " << roll2 << " for a total of: " << UserRoll << "\n";
cout << "\n";
do
{
cout << "Would you like to keep this total, or roll again? \n";
cout << "\n";
cout << "Enter \"K\" for keep and \"R\" for roll again: \n";
cin >> keep;
if (keep != 'K' && keep != 'R')
{
cout << "That is not a valid choice. Please choose Y to keep your total or N to roll again. " << endl;
cout << "\n";
}
} while(keep != 'K' && keep != 'R');
if (keep == 'R')
{
cout << "You chose R--let's roll again. \n";
}
else
{
cout << "Great! Your total is " << UserRoll << "\n";
}
} while (keep == 'R');
int roll3 = 1+rand()%6; /// make a random number for die # 1 for computer
int roll4 = 1+rand()%6; /// make a random number for die # 2 for computer
int ComputerRoll = roll3 + roll4; /// totals the sum of die 1 and die 2 for the computer
cout << "The computer rolled a " << roll3 << " and a " << roll4 << " for a total of: " << ComputerRoll << "\n";
cout << "\n";
if (ComputerRoll < UserRoll)
{
cout << "Congratulations! You won! \n";
}
if (ComputerRoll > UserRoll)
{
cout << "Sorry. You lose. \n";
}
if (ComputerRoll == UserRoll)
{
cout << "It's a tie. \n";
}
return 0;
}
/*
SAMPLE RUNS:
------------
Beat the computer!
You rolled a 4 and a 6 for a total of: 10
Would you like to keep this total, or roll again?
Enter "K" for keep and "R" for roll again:
R
You chose R--let's roll again.
You rolled a 4 and a 6 for a total of: 10
Would you like to keep this total, or roll again?
Enter "K" for keep and "R" for roll again:
K
Great! Your total is 10
The computer rolled a 4 and a 6 for a total of: 10
It's a tie.
Process returned 0 (0x0) execution time : 8.763 s
Press any key to continue.
*/