在文本冒险中解析匹配多个可能的字符串

Parsing Matching Multiple Possible Strings in a Text Adventure.

本文关键字:字符串 冒险 文本      更新时间:2023-10-16

我在大学的第一学期,我必须用c++做一个文本冒险游戏。到目前为止,我们已经完成了数组结构体指针。我试着用谷歌搜索我的问题,但是大多数其他用户使用的类我们还没有做过。

教授希望我们使用Go North, open door with key等命令。
我已经设法使它的工作通过使用热键,如n去北方,但显然我想做的是他希望我们。

我的问题是;如何制作由多个字符串组成的命令?

问题是我们需要为命令,对象和(如果在这个房间里有可能结合两件事)介词与另一个对象创建库。在每个库中都应该有要使用的单词,例如:命令是:使用,去,说话,阅读,等等……

摘自http://www.cplusplus.com/reference/iostream/istream/getline/

#include <iostream>
using namespace std;
int main () {
  char name[256], title[256];
  cout << "Enter your name: ";
  cin.getline (name,256);
  cout << "Enter your favourite movie: ";
  cin.getline (title,256);
  cout << name << "'s favourite movie is " << title;
  return 0;
}

尝试搜索getline或scanf函数。两者都从stdin(在您的示例中是prompt命令)读取格式化字符串。您也可以直接使用cin,问题是cin返回的字符串由第一个空格之前的字符组成。

如果您正在询问如何读取多单词命令,那么您可以使用getline()将一行输入作为字符串读取,然后使用stringstream读取该行中的每个单词,如下所示:

std::string line;
while (std::getline(std::cin, line)) {
    std::istringstream stream(line);
    std::string word;
    while (stream >> word) {
        // do something with this word
    }
}
  1. 使用std::string input << std::cin;之类的东西输入一行文本。
  2. 用空格/空格字符分割字符串
下步骤:

  1. 将命令标记化为动词/名词对,如Open/DoorGo/North
  2. 创建代表动词的类,并设计它们对对象或特定名词进行操作

一些要查的科目:

  • google文本冒险命令解析
  • 维基百科上的互动小说

我猜你正在使用cin来读取命令?在这种情况下,将输入输入到string中,使用find查找其中的空格,使用substr提取命令及其参数。尝试将所有子字符串转换为小写或大写,因为稍后比较它们会更容易。

现在取命令子字符串并将其与您拥有的所有命令进行比较。找到匹配项后,调用执行该命令的特殊函数,并将参数传递给该函数。例如,对于"go"命令,您可以使用go函数,该函数将方向作为参数。