2

我在大学的第一个学期,我必须用 C++ 制作一个文本冒险游戏。到目前为止,我们已经完成了数组结构指针。我试图用谷歌搜索我的问题,但是大多数其他用户使用我们尚未完成的课程。

教授希望我们使用 等命令Go Northopen door with key
已经设法通过使用热键来使其工作,例如n向北,但显然我想按照他希望我们的方式进行操作。

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

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

4

5 回答 5

1

取自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;
}
于 2011-12-07T15:50:09.433 回答
0

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

std::string line;
while (std::getline(std::cin, line)) {
    std::istringstream stream(line);
    std::string word;
    while (stream >> word) {
        // do something with this word
    }
}
于 2011-12-07T15:57:04.737 回答
0

尝试搜索 getline 或 scanf 函数。两者都从标准输入读取格式化字符串(在您的情况下是提示命令)。您也可以直接使用 cin,问题是 cin 返回一个由字符组成的字符串,直到第一个空格。

于 2011-12-07T15:48:31.327 回答
0
  1. 使用类似std::string input << std::cin;输入一行文本的方法。
  2. 按空格/空格字符拆分您的字符串。

下一步:

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

一些要查找的主题:

于 2011-12-07T16:00:33.870 回答
0

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

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

于 2011-12-07T16:02:20.467 回答