for (int att = 1; att < 11; att++)
{
<body>;
//break will completely finish running the program
}
我正在制作一个CodeBreaker(Mastermind)游戏,而且我遇到的问题是在比一个小于11的需要时更早结束循环,然后将循环设置回att的初始化状态= 1。
att代表&#34;尝试&#34;。用户可以猜测随机生成的代码最多10次。一旦用户在少于10次尝试中猜到正确的代码,我想提示用户再次播放并生成新的随机代码。但是上面显示的循环仍在运行。
如何提前结束循环,但仍然继续运行程序?程序的大部分取决于这一个循环,因此break将完全阻止它运行。
答案 0 :(得分:6)
要set the loop back to the initialization state of att = 1
,您可以使用continue
:
for (int att = 1; att < 11; att++)
{
if(you_want_to_set_loop_back) {
att = 1;
continue; //It will begin the loop back with att=1, but if any other variable is modified, they will remain as it is (modified).
}
}
您可以在函数中编写循环,其中包含您想要的所有变量的初始值。并且只要你愿意,就继续调用这个函数。要打破循环,使用break并从函数返回或直接从循环返回而不是破坏它。
答案 1 :(得分:3)
您可以执行以下操作:
while(true){
for (int att = 1; att < 11; att++)
{
<body>;
//game, and when it finishes
break;
}
//Asks player if he wants to continue, if not then break again
}
答案 2 :(得分:1)
围绕for循环的while循环怎么样?
while(programRunning){
for (int att = 1; att < 11; att++)
{
<body>;
if(answer==correct){
att = 12; // ends the for-loop
}
}
if(gameOver){
programRunning = false; // unless you want to end the game, starts the for-loop from att = 1
}
}
答案 3 :(得分:1)
我想你可以尝试以下方式:
bool bQuitGame = false;
while(!bQuitGame)
{
for(att = 1; att < 10; ++att)
{
if(you want to only quit "for" but stay in "while")
{
<code...>
break;
}
else if(you want to quit "while")
{
<code...>
bQuitGame = true;
break
}
else if(you want to start the next iteration in "for")
{
<code..>
continue;
}
else //you want to stay in "for"
{
<code...>
}
}
}
答案 4 :(得分:0)
看起来您的问题可以通过这样的简单嵌套循环来解决:
while(!success){
for (int att = 1; att < 11; att++){
<body>;
if(answer is correct){
success = true;
break;
}
//break will completely finish running the program
}
}