基于文本的游戏中的 C++ 输入

C++ input in text based games

我正在制作基于文本的冒险游戏。

在介绍中我让游戏询问玩家的名字,他们必须输入他们的名字,然后它会在输出中显示他们的名字。

cout << "U.S Soldier: Who's your name, Soldier?" << endl;
_getch();
cout << "Type Your name: ";
cin.getline(name, 50);
cout << "U.S Soldier: I'm DIAZ, now let's go, " << name << "!!" << endl;

然后它会转到另一个段(我使用void命令)。

void prologue()
{
    system("cls");
    cout << "----------------------- PROLOGUE -------------------------" << endl;
    cout << "\n";
    cout << "\n";
    cout << "Diaz: come on, " << name << ", there's no time for rest!!" << endl;
}

但是在该段上,程序似乎忘记了上一段的输入(玩家姓名)。

它只显示为“1”,而不是我们之前输入的"name"

如何让程序在整个游戏过程中保留玩家姓名?

这是全部代码:

// getting player's name

void name()
{
    system("cls");
    char name[50];
    cout << "U.S Soldier: Hey, Wake Up!!" << endl;
    _getch();
    cout << "You: (regain conciousness)" << endl;
    _getch();
    cout << "U.S Soldier: Who's your name, Soldier?" << endl;
    _getch();
    cout << "Type Your name: ";
    cin.getline(name, 50);
    system("cls");
    cout << "U.S Soldier: Hey, Wake Up!!" << endl;
    cout << "You: (regain conciousness)" << endl;
    cout << "U.S Soldier: Who's your name, Soldier?" << endl;
    cout << "U.S Soldier: I'm DIAZ, now let's go, " << name << "!!" << endl;
    _getch();
    prologue();
}

// Intro (Prologue)

void prologue()
{
    system("cls");
    cout << "----------------------- PROLOGUE -------------------------" << endl;
    cout << "\n";
    cout << "\n";
    cout << "Diaz: come on, " << name << ", there's no time for rest!!" << endl;
}

您填充的 ​​name 对于 name() 方法是本地的。

prologue() 中,name 是方法 name(),而不是您期望的字符串。

您可以使 name(字符串)成为全局的。我也会避免使用同名的变量和方法(至少在你更精通这门语言之前)。

你的答案就在你的问题本身。

如何让程序在整个游戏过程中保留玩家名称?

如果您了解变量的范围和生命周期,就会知道您填充的名称是在 name() 中声明的,因此它是该函数的本地名称,无法在该函数之外访问.要使其在整个程序中都可访问,请将其声明为全局变量。

另外,您在 prologue() 中使用的名称是函数名称(),而不是您填充的变量。

你可以考虑这样做cin.getline(name, 50);主要还是创建一个角色对象并将此名称分配给角色对象

如果您在 block/function 中声明一个变量,它是 block/function 的本地变量。在这里你可以在 name() 函数中使用 name 变量。要在另一个函数中使用它,要么全局声明它(即在所有函数之外),要么将它作为参数传递给 prologue() 函数。还要避免对不同的标识符使用 same/similar 名称。