我不明白为什么这个功能不起作用

时间:2014-03-20 05:06:29

标签: c++ function

所以这是一个简单的基于文本的游戏,我从菜单开始创建。 我希望人们能够在按下“#”后播放游戏,但这个游戏功能不起作用。

#include <iostream>
#include <string>

using namespace std;

void menu()
{
char menuResponse;
cout << "[P]lay [O]ptions [C]redits\n";
cin >> menuResponse;
if (menuResponse == 'p')
{
    game();
}
else if (menuResponse == 'o')
{
    cout << "There's actually nothing to see here, sorry.\n";
    char optionResponse;
    cout << "[B]ack\n";
    cin >> optionResponse;
    menu();
}
else if (menuResponse == 'c')
{
    cout << "Created by Crusader Studios, 2014\n";
    char creditResponse;
    cout << "[B]ack\n";
    cin >> creditResponse;
    menu();
}
else
{
    cout << "Please type a valid letter.\n";
    menu();
}
}

void game()
{
    cout << "\t\t\tPrologue\n\n";
}
int main()
{
    cout << "\t\tWelcome to my first game, 'A Hero's Journey!'\n\n";
    cout << "To navigate through menus, type the letters inside the brackets. For            example,\n";
    cout << "pressing 'p' in a menu with [P]lay and [O]ptions will let you play.\n\n";
    char beginResponse;
    cout << "Do you understand? If so, press any key:\n";
    cin >> beginResponse;
    cout << "Great! Now we can begin our game!\n";
    menu();
    return 0;
}

玩游戏的功能是游戏无效(),菜单是无效菜单()。

2 个答案:

答案 0 :(得分:1)

你还没有宣布这个功能......

void game();

void menu()函数

之前声明它
void game();
void menu()
{
//... code
}

答案 1 :(得分:1)

你需要在使用之前给出函数原型,因为我们需要在C / C ++中使用头文件。

所以在使用之前, if(menuResponse ==&#39; p&#39;) {     游戏(); }

你应该,宣布原型。

void game();
....
if (menuResponse == 'p')
{
    game();
}