你好,我是C ++的新手。
我正在进行一次测试文字冒险,但无法获得选择查看角色Kyung的选项的冒险。
我在做什么错了?
我试图使用else if表达式使程序查看Kyung,但是当我键入“ TURN”以尝试查看kyung时,程序结束。 我不知道我在做什么错。
#include <iostream>
using namespace std;
int main()
{
string choice;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " |__________________________________________" << endl;
cout << " /..........................................." << endl;
cout << " /............................................" << endl;
cout << " /............................................." << endl;
cout << " /.............................................." << endl;
cout << " /..............................................." << endl;
cout << " /................................................" << endl;
cout << " /................................................." << endl;
cout << " /.................................................." << endl;
cout << " /..................................................." << endl;
cout << " /...................................................." << endl;
cout << " /....................................................." << endl;
cout << " /......................................................" << endl;
cout << " /......................................................." << endl;
cout << " /........................................................" << endl;
cout << " /........................................................." << endl;
cout << " /.........................................................." << endl;
cout << "/..........................................................." << endl;
cout << "You wake-up in a empty room, you are on the ground." << endl;
stupid1:
cout << "Choices: type STAND to stand." << endl;
cin >> choice;
if(choice == "STAND") {
cout << " you stood up." << endl;
stupid2:
cout << " | ---------------------------- " << endl;
cout << " | | ---------------------- | " << endl;
cout << " | | | _____ | | " << endl;
cout << " | | | / | | | " << endl;
cout << " | | | | | | | " << endl;
cout << " | | | \ / | | " << endl;
cout << " | | | __| |___ | | " << endl;
cout << " | | | / \ | | " << endl;
cout << " | | |___|____________|_____| | " << endl;
cout << " | |__________________________| " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " |_________________________________________________________" << endl;
cout << " /.........................................................." << endl;
cout << "/..........................................................." << endl;
cout << " You see a painting on the wall." << endl;
} else {
cout << "That is not a choice." << endl;
goto stupid1;
}
cout << "Choices, type TURN to turn around, or type INSPECT to inspect painting." << endl;
cin >> choice;
if(choice == "INSPECT") {
cout << " " << endl;
cout << " __________________________________________________ " << endl;
cout << " | | " << endl;
cout << " | | " << endl;
cout << " | | " << endl;
cout << " | | " << endl;
cout << " | _____________ | " << endl;
cout << " | / \ | " << endl;
cout << " | | | | " << endl;
cout << " | | __ __ | | " << endl;
cout << " | | O | O | | " << endl;
cout << " | | | | | " << endl;
cout << " | | |_ | | " << endl;
cout << " | | | | " << endl;
cout << " | \ ----- / | " << endl;
cout << " | _____| |_______ | " << endl;
cout << " | __/ \____ | " << endl;
cout << " | / \ | " << endl;
cout << " | / \ | " << endl;
cout << " | | | | " << endl;
cout << " | | | | " << endl;
cout << " |_____|______________________________________|_____| " << endl;
cout << " " << endl;
cout << " " << endl;
cout << "You inspected the painting." << endl;
stupid3:
cout << "Type BACK to go back." << endl;
cin >> choice;
if(choice == "BACK") {
cout << "You went back." << endl;
goto stupid2;
} else if(choice == "TURN"){
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " /-\/-\ | " << endl;
cout << " | | | | " << endl;
cout << " | | | | " << endl;
cout << " _____\ | /__ | " << endl;
cout << " / \ | " << endl;
cout << " | _____ _____ | | " << endl;
cout << " | W | | " << endl;
cout << " \____ __/ | " << endl;
cout << " / \ | " << endl;
cout << "__________________/_ _\____________________| " << endl;
cout << "....................| |.......................\ " << endl;
cout << "....................| |........................\ " << endl;
cout << "....................|_/-\_|.........................\ " << endl;
cout << ".....................................................\ " << endl;
cout << "......................................................\ " << endl;
cout << ".......................................................\ " << endl;
cout << "........................................................\ " << endl;
cout << ".........................................................\ " << endl;
cout << "..........................................................\ " << endl;
cout << "............................................................" << endl;
cout << "You saw Kyung" << endl;
} else {
cout << "That is not a choice." << endl;
goto stupid3;
}
}
return 0;
}
答案 0 :(得分:0)
这仅仅是因为您的TURN
选择位于INSPECT
选择之内:
if(choice == "INSPECT") {
...
if(choice == "BACK") {
cout << "You went back." << endl;
goto stupid2;
} else if(choice == "TURN"){
...
}
}
如果是这样的块,则应将其从TURN
中移出INSPECT
:
if(choice == "INSPECT") {
...
}
...
if(choice == "BACK") {
cout << "You went back." << endl;
goto stupid2;
} else if(choice == "TURN"){
...
}
更多:
您应该避免在代码中使用goto
,因为调试goto
代码确实很困难,请在Spaghetti code阅读更多信息。您可以通过对游戏循环使用while
循环,对每个选项使用function
来重构代码。
以下是带有while
循环的工作版本:
#include <iostream>
using namespace std;
void startRoom()
{
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " |__________________________________________" << endl;
cout << " /..........................................." << endl;
cout << " /............................................" << endl;
cout << " /............................................." << endl;
cout << " /.............................................." << endl;
cout << " /..............................................." << endl;
cout << " /................................................" << endl;
cout << " /................................................." << endl;
cout << " /.................................................." << endl;
cout << " /..................................................." << endl;
cout << " /...................................................." << endl;
cout << " /....................................................." << endl;
cout << " /......................................................" << endl;
cout << " /......................................................." << endl;
cout << " /........................................................" << endl;
cout << " /........................................................." << endl;
cout << " /.........................................................." << endl;
cout << "/..........................................................." << endl;
cout << "You wake-up in a empty room, you are on the ground." << endl;
}
void standChoice()
{
cout << " you stood up." << endl;
cout << " | ---------------------------- " << endl;
cout << " | | ---------------------- | " << endl;
cout << " | | | _____ | | " << endl;
cout << " | | | / | | | " << endl;
cout << " | | | | | | | " << endl;
cout << " | | | \ / | | " << endl;
cout << " | | | __| |___ | | " << endl;
cout << " | | | / \ | | " << endl;
cout << " | | |___|____________|_____| | " << endl;
cout << " | |__________________________| " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " |_________________________________________________________" << endl;
cout << " /.........................................................." << endl;
cout << "/..........................................................." << endl;
cout << " You see a painting on the wall." << endl;
}
void notChoice()
{
cout << "That is not a choice." << endl;
}
void inspectChoice()
{
cout << " " << endl;
cout << " __________________________________________________ " << endl;
cout << " | | " << endl;
cout << " | | " << endl;
cout << " | | " << endl;
cout << " | | " << endl;
cout << " | _____________ | " << endl;
cout << " | / \ | " << endl;
cout << " | | | | " << endl;
cout << " | | __ __ | | " << endl;
cout << " | | O | O | | " << endl;
cout << " | | | | | " << endl;
cout << " | | |_ | | " << endl;
cout << " | | | | " << endl;
cout << " | \ ----- / | " << endl;
cout << " | _____| |_______ | " << endl;
cout << " | __/ \____ | " << endl;
cout << " | / \ | " << endl;
cout << " | / \ | " << endl;
cout << " | | | | " << endl;
cout << " | | | | " << endl;
cout << " |_____|______________________________________|_____| " << endl;
cout << " " << endl;
cout << " " << endl;
cout << "You inspected the painting." << endl;
}
void turnChoice()
{
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " | " << endl;
cout << " /-\/-\ | " << endl;
cout << " | | | | " << endl;
cout << " | | | | " << endl;
cout << " _____\ | /__ | " << endl;
cout << " / \ | " << endl;
cout << " | _____ _____ | | " << endl;
cout << " | W | | " << endl;
cout << " \____ __/ | " << endl;
cout << " / \ | " << endl;
cout << "__________________/_ _\____________________| " << endl;
cout << "....................| |.......................\ " << endl;
cout << "....................| |........................\ " << endl;
cout << "....................|_/-\_|.........................\ " << endl;
cout << ".....................................................\ " << endl;
cout << "......................................................\ " << endl;
cout << ".......................................................\ " << endl;
cout << "........................................................\ " << endl;
cout << ".........................................................\ " << endl;
cout << "..........................................................\ " << endl;
cout << "............................................................" << endl;
cout << "You saw Kyung" << endl;
}
void gameLoop()
{
string choice;
startRoom();
cout << "Choices: type STAND to stand." << endl;
while(true)
{
cin >> choice;
if(choice == "STAND")
{
standChoice();
cout << "Choices, type TURN to turn around, or type INSPECT to inspect painting." << endl;
}
else if(choice == "INSPECT")
{
inspectChoice();
cout << "Type BACK to go back." << endl;
}
else if(choice == "TURN")
{
turnChoice();
cout << "Type BACK to go back." << endl;
}
else if(choice == "BACK")
{
cout << "You went back." << endl;
standChoice();
cout << "Choices, type TURN to turn around, or type INSPECT to inspect painting." << endl;
}
else if(choice == "EXIT")
{
break;
}
else
{
notChoice();
cout << "Choices: type STAND to stand." << endl;
}
}
}
int main()
{
gameLoop();
return 0;
}