gpt4 book ai didi

c++ - 字符串解析器文本冒险

转载 作者:行者123 更新时间:2023-11-30 04:30:22 25 4
gpt4 key购买 nike

您好!我目前正在使用 C++ 进行文本冒险,需要一些帮助。

我想做的是让用户输入如下命令:

  • '去厨房'
  • '用 key 开门'

并让游戏做出相应的 react 。

我们的老师给了我们以下代码(我已经修改过),我很难理解它到底在做什么以及我如何使用它来制作游戏。我对其进行了修改,以便用户可以输入 string,它确实将 string 美妙地标记为动词、宾语、介词和宾语 2。

但是接下来我需要做的是以某种方式将输入与可用命令列表进行比较。这就是我目前无法完成的事情。我是编程新手,需要将此作为我学习的家庭作业。任何帮助将非常感激。

struct command {
char* verb;
char* object;
char* preposition;
char* object2;
};

bool getTokens(char * acInput,
const char token_delimiter,
command * pTargetCommand)
{
char * pCurToken;

pCurToken = strtok (acInput, &token_delimiter);
if (pCurToken == NULL) {
printf("Error: Found no verb");
getchar();
return 1;
}
pTargetCommand->verb = pCurToken;

pCurToken = strtok (NULL, &token_delimiter);
if (pCurToken == NULL) {
printf("Error: Found no object");
getchar();
return 1;
}
pTargetCommand->object = pCurToken;

pCurToken = strtok (NULL, &token_delimiter);
if (pCurToken != NULL) {
pTargetCommand->preposition = pCurToken;

pCurToken = strtok (NULL, &token_delimiter);
if (pCurToken == NULL) {
printf("Error: Found no second object for preposition");
getchar();
return 1;
}

pTargetCommand->object2 = pCurToken;
}

pCurToken = strtok (NULL, &token_delimiter);
if (pCurToken != NULL) {
printf("Error: too many tokens.");
getchar();
return 1;
}
}



int _tmain(int argc, _TCHAR* argv[])
{
char acInput[256];
cin.getline (acInput,256);
command myCommand = { NULL };
int RoomChoice = 0;


printf ("Splitting string \"%s\" into tokens:\n", acInput);
getTokens(acInput, *TOKEN_DELIMITER, &myCommand);

printf ("Verb: %s\n", myCommand.verb);
printf ("object: %s\n", myCommand.object);
printf ("preposition: %s\n", myCommand.preposition);
printf ("object2: %s\n", myCommand.object2);

getchar();

return 0;
}

最佳答案

在不放弃太多家庭作业的情况下,您需要以某种方式将所有可用操作的列表读入一个结构,然后与该结构进行比较。

作为提示,根据模式,这可能是 switch() {} 语句或数组之类的集合。

考虑开关(myCommand.verb) 案例“走”:

在真实世界的应用程序中,您将启动一个命令对象工厂,然后调用其中一个。但是,在这里,我建议仔细考虑您的控制语句。

关于c++ - 字符串解析器文本冒险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com