我正在尝试基于C ++进行文本冒险。我创建了包含每个路径的特定文件的文件夹。假设我从一个房间向南走,我需要进入一个名为“南方”的文件夹。我在这里遇到问题,因为我不知道如何在C ++中更改像“cd。\ south”这样的目录。请告诉我如何在C ++中更改目录。
我试图使用:
system("cd .\\south")
但它不会更改目录。我还搜索了谷歌,但它提供了另一个名为“ShellExecute”的函数的链接,我不知道如何使用它。请帮忙(我是一个完整的初学者)。
答案 0 :(得分:2)
system
函数为命令创建一个新进程。这意味着任何目录更改都将是该新进程的本地目录。
您需要_chdir
功能:
_chdir("south");
或者,您可以使用WIN32函数SetCurrentDirectory
。
注意: _chdir
是Windows CRT函数名,在POSIX系统(如Linux或OSX)上是chdir
(没有前导下划线)。
答案 1 :(得分:2)
方向1:
您只需更改current directory
即可。为此阅读本文
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363806(v=vs.85).aspx
但是如果您的应用程序是多线程的。那你需要小心。因为当前目录对于整个应用程序是通用的,因此其他线程可能会更改应用程序current directory
。
方向2:
如果你需要通过执行系统命令来做到这一点(我不知道天气是否可能)。然后,您可以在Windows环境中使用&&
执行多个系统命令。
EG:system("cls && date && pause");
答案 2 :(得分:0)
问题是每个system
命令都将在不同的进程中执行,因此cd
命令将起作用,但对下一个命令无效。
如果您使用的是Linux / Unix系统,则可以使用chdir
;对于Win32 API,您可以使用SetCurrentDirectory
,但我不确定它是否真的是您想要做的。
答案 3 :(得分:0)
您正在做的具体问题的答案已经给出。但是,我想知道你为什么要尝试更改当前目录以回答用户给出的命令。
也许你这样做是因为你想获得特定的知识,但是,考虑到面对文本冒险的平均方式不是在计算机中创建文件夹,而是创建适当的结构。 / p>
您应该至少有以下课程:Location
,Object
,Character
你应该有位置和物体的矢量,以表示游戏中所有可能的位置和物体。
游戏角色还应该有一个他可以随身携带的物品清单(你可以将其扩展到游戏中的其他角色)。
每个位置都应该有:名称,描述和公共出口的十个位置的向量,例如北,南,东, west , ne , nw , se , sw ,上和下来。在该向量中,您可以存储选择该出口时要去的位置编号。
最后,您需要解析播放器的输入,以便游戏能够理解命令。
这当然是冒险的最低限度。 您可以使用现有的系统,例如Inform,但我不知道您是否正在尝试锻炼您的C ++技能。
请记住,您可以访问互动小说论坛寻找真正的冒险专家的帮助: