1

我正在尝试基于 C++ 进行文本冒险。我制作了包含每个路径的特定文件的文件夹。假设我从一个房间往南走,我需要进入一个名为“south”的文件夹。我在这里遇到问题,因为我不知道如何在 C++ 中更改像“cd .\south”这样的目录。请告诉我如何在 C++ 中更改目录。

我尝试使用:

system("cd .\\south")

但它不会更改目录。我也在谷歌上搜索过,但它提供了另一个名为“ShellExecute”的函数的链接,我不知道如何使用。请帮助(我是一个完整的初学者)。

4

4 回答 4

2

system函数为命令创建一个新进程。这意味着任何目录更改都将是该新进程的本地。

您想要该_chdir功能:

_chdir("south");

或者,您可以使用 WIN32 功能SetCurrentDirectory

注意: _chdir是 Windows CRT 函数名称,在 POSIX 系统(如 Linux 或 OSX)上是chdir(不带前导下划线)。

于 2013-04-17T09:12:50.410 回答
2

方向 1: 简单地说,你要做的就是改变current directory. 为此,请阅读本文 http://msdn.microsoft.com/en-us/library/windows/desktop/aa363806(v=vs.85).aspx

但是如果您的应用程序是多线程的。那么你需要小心。因为当前目录对整个应用程序是通用的,所以其他线程可能会更改应用程序current directory

方向2: 如果你需要通过执行系统命令来做到这一点(我不知道天气是可能的)。然后您可以&&在 Windows 环境中执行多个系统命令。

例如:system("cls && date && pause");

于 2013-04-17T09:26:23.437 回答
0

您正在做的具体问题的答案已经给出。但是,我想知道您为什么要尝试更改当前目录以响应用户给出的命令。

也许你这样做是因为你想获得一些特定的知识,但是,要考虑到面对文本冒险的一般方式不是在计算机中创建文件夹,而是创建适当的结构。

您至少应该有以下课程:Location, Object,Character

您应该有位置和对象的向量,以便表示游戏中所有可能的位置和对象。

游戏角色还应该有一个他可以随身携带的物品列表(尽管您可以将其扩展到游戏中的其他角色)。

每个位置应该有一个:名称、描述和一个由十个位置组成的公共出口的向量,例如north , south , east , west , ne , nw , se , sw , updown。在该向量内,您可以存储选择该出口时要走的位置编号。

最后,您需要解析玩家的输入,以便游戏能够理解命令。

当然,这是冒险的最低要求。您可以使用现有的系统,例如 Inform,但我不知道您是否正在尝试锻炼您的 C++ 技能。

请记住,您可以通过访问互动小说论坛寻求真正的冒险专家的帮助:

http://www.intfiction.org/forum/

于 2013-04-17T09:33:00.347 回答
0

问题是每个system命令都将在单独的进程中执行,因此您的cd命令将起作用,但对下一个命令无效。

chdir如果您在 Linux/Unix 系统或Win32 API 上,您可以使用,SetCurrentDirectory但我不确定它是否真的是您想要做的。

于 2013-04-17T09:11:48.313 回答