在文本冒险中解析匹配多个可能的字符串
Parsing Matching Multiple Possible Strings in a Text Adventure.
我在大学的第一学期,我必须用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
}
}
- 使用
std::string input << std::cin;
之类的东西输入一行文本。 - 用空格/空格字符分割字符串
- 将命令标记化为动词/名词对,如
Open
/Door
和Go
/North
- 创建代表动词的类,并设计它们对对象或特定名词进行操作
一些要查的科目:
- google文本冒险命令解析
- 维基百科上的互动小说
我猜你正在使用cin
来读取命令?在这种情况下,将输入输入到string
中,使用find
查找其中的空格,使用substr
提取命令及其参数。尝试将所有子字符串转换为小写或大写,因为稍后比较它们会更容易。
现在取命令子字符串并将其与您拥有的所有命令进行比较。找到匹配项后,调用执行该命令的特殊函数,并将参数传递给该函数。例如,对于"go"命令,您可以使用go
函数,该函数将方向作为参数。