поэтому мы с моим другом пытаемся создать текстовую видеоигру, и я занимаюсь некоторыми исследованиями о том, как программировать. Вот наша 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 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). Есть ли что-то, отсутствующее в моей программе, которая нужна или части противоречат друг другу?
Вам нужен оператор сравнения ==
, а не оператор присваивания =
. Это разные операторы. Использование =
изменит значение 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");
}
Кроме того, вы смешиваете два типа ввода-вывода. Использование cin
для ввода является хорошим. Вы должны использовать свой экземпляр cout
для вывода, а не printf
.
cout << "You wake up to darkness." << endl;
cout << "Confused and tired, you walk to the nearest house." << endl;
printf
сcin
/cout
. В основном это будет работать, но они могут взаимодействовать странным образом, в основном потому, что они не координируют друг друга. Это не проблема, которую вы имеете в настоящее время. Скорее, если вы изучаете C ++, лучше встать на правильную ногу. Удачи и счастливого программирования!