您好!我目前正在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