0

所以我和我的朋友正在尝试制作一个基于文本的视频游戏,我一直在研究如何降低编程。到目前为止,这是我们的 c++ 程序:

#include <iostream>
#include <stdio.h>

char Choice;

using namespace std;

int main()
{
    printf("You wake up to darkness.\n");
    printf("Confused and tired, you walk to the nearest house.\n");
    printf("You notice it's abandoned. What do you do?\n");
    printf("1. Walk Away.\n");
    printf("2. Jump.\n");
    printf("3. Open Door.\n");
    printf("Choose wisely.\n");
    cin >> Choice;

    if(Choice=1)
    {
        printf("The House seems to have a gravital pull on you. How strange.\n");
    }

    else if(Choice=2)
    {
        printf("Having Fun?\n");
    }

    return 0;
}

但是当我构建并运行它时,它会显示所有内容,但所有答案都是 if(Choice=1) 答案。我的程序中是否缺少需要的东西或部分内容相互矛盾?

4

1 回答 1

7

您需要比较运算符==,而不是赋值运算符=。这些是不同的运算符。使用=会改变 的值Choice,这不是你想要的。(你的编译器应该警告你=if语句中的使用。)

1是整数 1。您要检查'1'不同的字符(ASCII 值 49)。使用'1'而不是1.

if (Choice == '1')
{
    printf("The House seems to have a gravital pull on you. How strange.\n");
}
else if (Choice == '2')
{
    printf("Having Fun?\n");
}

此外,您正在混合两种类型的 I/O。用于cin输入是好的。您应该将其对应物cout用于输出,而不是printf.

cout << "You wake up to darkness." << endl;
cout << "Confused and tired, you walk to the nearest house." << endl;
于 2013-11-23T04:06:56.793 回答