简单的猜谜游戏,允许用户在正确猜测随机数后再次玩?

时间:2016-03-12 05:06:37

标签: c function random

^/(trucks|cars|planes|system|tools)(?![^\s?]*\?)

因此,在用户找到正确的随机数后,我希望他们能够再次玩游戏(如果他们想要的话)。如何让代码重新运行?我尝试在我的guessGame函数中执行此操作,但我知道这是错误的。

2 个答案:

答案 0 :(得分:0)

我看到的最简单的方法是让guessGame返回一个bool。如果他们做对了就是对的,如果他们弄错的话就是假的。然后在你的main中,有另一个bool变量,让我们说guessedRight,将它设置为guessGame的返回值,并将其用作while循环条件。

可能更容易的是将用户猜测的行移动到guessGame函数中(然后它不带参数)。那么你再次调用geussGame的尝试应该有效。

所以选项1:编辑guessGame的开头

void guessGame(){
    int guessed_num = 0;
    scanf("%d", &guessed_num);

然后完全删除

if (answer = 'n')
  return 0;

它没有用处,你的功能无论如何都是一个无效的返回类型。然后在main中调用guessGame。使用这种方法你也不需要一个while循环。

选项2:更改guessGame的返回类型

bool guessGame(){
     int guessed_num = 0;
     scanf("%d", &guessed_num);

扫描,得到答案,然后

if (answer = 'y')
    return true;

return false

然后在主要方面,我认为你实际上可以做到

while(guessGame()) {}

答案 1 :(得分:0)

由于我的英语不好,我会给你代码(由你修改)。

    #include<stdio.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #include<time.h>

    int random_num;

    int guessGame(int guessed_num) {


        if (guessed_num == random_num) {
           printf("Correct! That's the number.\n");
           return 1;
        } else if (guessed_num < random_num) {
              printf("Too low. Guess again.\n");
              return 0;
           } else {
              printf("Too high. Guess again.\n");
             return 0;
        }
    }

    int main() {
    char loop;
    while (1) {
    int guessed_num = 0;
    srand(time(NULL));
    random_num = rand() % 50 + 1;
    printf("I have a number between 1-50.\n");
    printf("Can you guess what it is?\n");
    printf("Enter your initial guess.\n");
    while (1) {
        scanf("%d", &guessed_num);
        int returnValue = guessGame(guessed_num);
        if (returnValue == 1) {
            break;
        }
    }
    printf("You wanna do it again? ");
    getchar();
    scanf("%c", &loop);
    if (loop == 'n') {
        break;
    }
}
return 0;
}