如何解决你如何在 C++ 游戏中设置失败条件?
/我尝试在 C++ 上创建一个猜数游戏,我继续制作了一个程序,该程序生成一个从 1 到 1000 的随机数,并设置一个获胜条件。也就是说,如果用户输入随机生成的数字,那么他们就赢了。但我也想设置一个失败的条件。例如,在用户输掉游戏之前,用户只有 10 次尝试。我有一种感觉,答案很简单,但我就是无法深入研究。\
#include <string>
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void tips()
{
std::cout << "Pay attention to what the system inputs.\n";
std::cout << "If Too High,Lower you're number base on your latest guess\n";
std::cout << "If Too Low,Guess a higher number base on your latest guess\n";
}
void help()
{
std::cout << "The Instruction of the game is to guess the random generated number from one to a thousand\n";
}
void quit_game()
{
std::cout << "You have quited the Game\n";
}
void play_game()
{
int random = rand() % 1001;
std::cout << "Guess A Number:\n";
while(true)
{
int guess;
std::cin >> guess;
if(guess == random)
{
std::cout << "You Are Victorous!\n";
break;
} else if (guess < random)
{
std::cout << "Too low\n";
}else
{
std::cout << "Too high\n";
}
}
}
int main ()
{
srand(time(NULL));
int selected;
do
{
std::cout << "0. Quit Game" << std::endl << "1. Play Game\n";
std::cout << "2. Help" << std::endl << "3. Tips\n";
std::cin >> selected;
switch (selected)
{
case 0:
quit_game();
break;
case 1:
play_game();
break;
case 2:
help();
break;
case 3:
tips();
break;
default:
std::cout << "You have entered an invalid option\n";
}
}
while (selected != 0);
}
解决方法
您可以在 play_game 函数中使用另一个变量来跟踪玩家的尝试次数。
void play_game()
{
static const int MAX_GUESSES = 10; // You can change this
int number_of_guesses = 0;
int random = rand() % 1001;
std::cout << "Guess A Number:\n";
while(true)
{
int guess;
std::cin >> guess;
if(guess == random)
{
std::cout << "You Are Victorous!\n";
break;
} else if (guess < random)
{
std::cout << "Too low\n";
}else
{
std::cout << "Too high\n";
}
++number_of_guesses;
if (number_of_guesses == MAX_GUESSES)
{
std::cerr << "Too many guesses!" << std::endl;
break;
}
}
}
,
您可以使用 for 循环代替 while(true)
:
#include <string>
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void tips()
{
std::cout << "Pay attention to what the system inputs.\n";
std::cout << "If Too High,Lower you're number base on your latest guess\n";
std::cout << "If Too Low,Guess a higher number base on your latest guess\n";
}
void help()
{
std::cout << "The Instruction of the game is to guess the random generated number from one to a thousand\n";
}
void quit_game()
{
std::cout << "You have quited the Game\n";
}
void play_game(std::size_t max_guesses)
{
int random = rand() % 1001;
std::cout << "Guess A Number:\n";
for(std::size_t i=0;i<max_guesses;++i)
{
int guess;
std::cin >> guess;
if(guess == random)
{
std::cout << "You Are Victorous!\n";
return;
} else if (guess < random)
{
std::cout << "Too low\n";
}else
{
std::cout << "Too high\n";
}
}
std::cout << "You Lost!\n";
return;
}
int main ()
{
srand(time(NULL));
constexpr std::size_t num_guesses=5;
int selected;
do
{
std::cout << "0. Quit Game" << std::endl << "1. Play Game\n";
std::cout << "2. Help" << std::endl << "3. Tips\n";
std::cin >> selected;
switch (selected)
{
case 0:
quit_game();
break;
case 1:
play_game(num_guesses);
break;
case 2:
help();
break;
case 3:
tips();
break;
default:
std::cout << "You have entered an invalid option\n";
}
}
while (selected != 0);
}
,
您需要使用一个全局变量作为最大尝试次数,并使用另一个变量来计算用户播放次数。
const unsigned Maximum_try = 10;
void play_game()
{
static unsigned number_of_play = 0;
int random = rand() % 1001;
std::cout << "Guess A Number:\n";
while (true)
{
int guess;
std::cin >> guess;
number_of_play++;
if (guess == random)
{
std::cout << "You Are Victorous!\n";
break;
}
else if (guess < random)
{
std::cout << "Too low\n";
}
else
{
std::cout << "Too high\n";
}
if (number_of_play == Maximum_try)
{
std::cout << "The answer was: " << random << std::endl;
std::cout << "YOU LOSE! Try again dear :-)\n";
number_of_play = 0;
break;
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。