所以我的朋友和我正在尝试制作基于文本的视频游戏,我一直在研究如何降低编程效果。这是我们到目前为止的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)答案。我的程序中是否缺少某些需要或部分相互矛盾的东西?
答案 0 :(得分: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;