您好!我目前正在C++中进行文本冒险,并且可以使用一些帮助。字符串解析器文本冒险
我试图做的是让用户输入类似如下的命令:
- “去厨房”
- “门户开放与关键”
,使游戏作出相应的反应
我们的老师给了我们下面的代码(我已经修改过),并且我很难理解它究竟做了什么以及我如何使用它来制作游戏。我对其进行了修改,以便用户可以输入string
s,并将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;
}
你有什么试过?你有多远?你能显示你写的代码吗?即使它不编译,或者即使它只是伪代码。 – 2012-01-06 01:00:04
C++标签是否正确?这看起来比C++更像C语言。我的意思不是迂腐 - 根据语言的不同,这些方法可能会有所不同。 – 2012-06-08 19:40:31