我正在尝试基于 C++ 进行文本冒险。我制作了包含每个路径的特定文件的文件夹。假设我从一个房间往南走,我需要进入一个名为“south”的文件夹。我在这里遇到问题,因为我不知道如何在 C++ 中更改像“cd .\south”这样的目录。请告诉我如何在 C++ 中更改目录。
我尝试使用:
system("cd .\\south")
但它不会更改目录。我也在谷歌上搜索过,但它提供了另一个名为“ShellExecute”的函数的链接,我不知道如何使用。请帮助(我是一个完整的初学者)。
该system
函数为命令创建一个新进程。这意味着任何目录更改都将是该新进程的本地。
您想要该_chdir
功能:
_chdir("south");
或者,您可以使用 WIN32 功能SetCurrentDirectory
。
注意: _chdir
是 Windows CRT 函数名称,在 POSIX 系统(如 Linux 或 OSX)上是chdir
(不带前导下划线)。
方向 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");
您正在做的具体问题的答案已经给出。但是,我想知道您为什么要尝试更改当前目录以响应用户给出的命令。
也许你这样做是因为你想获得一些特定的知识,但是,要考虑到面对文本冒险的一般方式不是在计算机中创建文件夹,而是创建适当的结构。
您至少应该有以下课程:Location
, Object
,Character
您应该有位置和对象的向量,以便表示游戏中所有可能的位置和对象。
游戏角色还应该有一个他可以随身携带的物品列表(尽管您可以将其扩展到游戏中的其他角色)。
每个位置应该有一个:名称、描述和一个由十个位置组成的公共出口的向量,例如north , south , east , west , ne , nw , se , sw , up和down。在该向量内,您可以存储选择该出口时要走的位置编号。
最后,您需要解析玩家的输入,以便游戏能够理解命令。
当然,这是冒险的最低要求。您可以使用现有的系统,例如 Inform,但我不知道您是否正在尝试锻炼您的 C++ 技能。
请记住,您可以通过访问互动小说论坛寻求真正的冒险专家的帮助:
问题是每个system
命令都将在单独的进程中执行,因此您的cd
命令将起作用,但对下一个命令无效。
chdir
如果您在 Linux/Unix 系统或Win32 API 上,您可以使用,SetCurrentDirectory
但我不确定它是否真的是您想要做的。