2013-04-17 168 views
1

我正在嘗試基於C++進行文本冒險。我製作了包含每個路徑的特定文件的文件夾。假設我從一個房間南下,我需要進入一個名爲「南」的文件夾。我在這裏遇到問題,因爲我不知道如何在C++中更改「cd。\ south」這樣的目錄。請告訴我如何在C++中更改目錄。在C++中運行cmd命令

我試着使用:

system("cd .\\south") 

,但它不會改變目錄。我也在Google上搜索過,但它給了我不知道如何使用的另一個名爲「ShellExecute」的函數的鏈接。請幫助(我是一個完整的初學者)。

+1

嘗試'人2 chdir'。 –

+0

爲什麼你想要*進入特定的文件夾?一旦你改變當前進程的目錄,你想要做什麼? – zakinster

+1

如果你向南,然後向北,你在目錄「南/北」,但同一個房間?我不確定這是一個明智的設計;) –

回答

0

問題是,每個system命令將在分離的進程中執行,因此您的cd命令將工作,但不會對下一個命令有效。

如果您使用的是Linux/Unix系統,您可以使用chdir,對於Win32 API您可以使用SetCurrentDirectory,但我不確定它是否真的是您想要的。

+0

除非您提供解決方案,否則這並非真正的答案。 'chdir'。 –

2

system函數爲該命令創建一個新進程。這意味着任何目錄改變都將侷限於新進程。

你想要_chdir函數:

_chdir("south"); 

或者您可以使用Win32函數SetCurrentDirectory

注:_chdir是Windows CRT函數名,在POSIX系統(如Linux或OSX)這是chdir(不帶前導下劃線)。

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");

+0

我之前也讀過那篇文章,但是並不理解它。 – UtkarshSahu

0

這個問題的答案,你正在做的已經被賦予了特定的問題。但是,我想知道爲什麼你試圖改變當前目錄以回答用戶給出的命令。

也許你是這樣做的,因爲你想獲得特定的東西,但是,考慮到面對文本冒險的平均方法不是在計算機中創建文件夾,而是創建適當的結構。

你應該至少具有類:LocationObjectCharacter

你應該有地點和對象的載體,以代表遊戲中所有可能的地點和對象。

玩家角色還應該有一個他可以隨身攜帶的對象列表(可以讓遊戲中的其他角色擴展)。

每個位置都要有:名稱,描述,併爲共同退出十個位置的載體,如西NENWse,sw,up and down。在該矢量中,您可以存儲選擇該出口時要去的位置編號。

最後,你需要解析玩家的輸入,以便遊戲能夠理解命令。

這當然是冒險的最低要求。 您可以使用已經存在的系統,比如Inform,但我不知道您是否嘗試練習C++技能。

請記住,您可以通過訪問互動小說論壇尋找真正的專家的幫助下在冒險:

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

+0

謝謝先生!但是你知道嗎,我不願意學這麼多,因爲我正在做的這個項目只是我學校任務活動的一部分,所以它一定不是那麼複雜(只是一個基本的項目來教我們基本的cmd命令使用C++來執行。) – UtkarshSahu