我试图创建一个用户必须经历迷宫的简单游戏。在迷宫的开头,我给用户提供了可能的路线,并询问用户下一条路线。如果用户输入正确的路线,我会带他到下一条路线。如果用户输入错误的路线,我会打印一条错误信息,然后再次提示,然后再次阅读他的输入。
我在打印错误消息后无法确定要执行的操作。我该如何回到循环的开头?我做了一些研究,并开始认为我应该使用do-while循环,但考虑到之间的迭代(重复这一步直到用户找到迷宫的退出),我很难弄清楚到底是怎么做的那。
这是我原来的if-else声明:
printf("Prompt for user input\n"); //step1
//user input
scanf("%s", &input); //step2
//check input
for (i = 0; i < 7; i++) {
if (strncmp(input, condition) == 0){//do something}
else{
printf("error\n");
//need to do steps 1 and 2 again
}
感谢您的时间,非常感谢任何帮助!
答案 0 :(得分:2)
根据你的问题,我可以理解你提示用户输入值,直到他给出了正确的答案,或者他完成了7次机会。
您可以使用do while循环:
int chanceCount = 0; //it will keep track of number of chances user gets
do {
printf("Prompt for user input\n");
//user input
scanf("%s", &input);
if (strncmp(input, condition) == 0)
{
//do something
break; /* come out of loop, as user gave correct answer*/
}
else
{
printf("error try again \n");
}
chanceCount ++;
}while(chanceCount != 7);
答案 1 :(得分:1)
最简单的方法是将其包装在另一个循环中。
bool game_over = false;
do {
printf("Prompt for user input\n"); //step1
//user input
scanf("%s", &input); //step2
//check input
bool input_okay = true;
for (i = 0; i < 7; i++) {
if (strncmp(input, condition) == 0) {
//do something
}
else{
printf("error\n");
input_okay = game_over = false;
break;
}
if (!input_okay)
continue; // restart do while
//
} while(!game_over);
需要标记(使用bool
中的stdbool.h
类型定义)以确保在do ... while
循环的正确范围内执行continue语句。
答案 2 :(得分:0)
bool OK = false
while( ! OK ) {
printf("Prompt for user input\n"); //step1
//user input
scanf("%s", &input); //step2
//check input
for (i = 0; i < 7; i++) {
if (strncmp(input, condition) == 0)
{//do something}
OK = true
}
else
{
printf("error\n");
//need to do steps 1 and 2 again
OK = false;
}
}
}