1

C++ に基づいてテキスト アドベンチャーを作成しようとしています。各パスへの特定のファイルを含むフォルダーを作成しました。部屋から南に行ったとします。「south」という名前のフォルダーに移動する必要があります。C++ で "cd .\south" のようなディレクトリを変更する方法がわからないため、ここで問題が発生しています。C++でディレクトリを移動する方法を教えてください。

私は使用しようとしました:

system("cd .\\south")

ただし、ディレクトリは変更されません。Google でも検索しましたが、使用方法がわからない「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

問題は、各systemコマンドが別々のプロセスで実行されるため、cdコマンドは機能しますが、次のコマンドには効果がないことです。

chdirLinux/Unix システムまたは Win32 API を使用している場合は使用できますが、SetCurrentDirectoryそれが実際にやりたいことかどうかはわかりません。

于 2013-04-17T09:11:48.313 に答える
0

あなたがしている特定の質問に対する答えは、すでに与えられています。しかし、ユーザーからのコマンドに応答するために、なぜ現在のディレクトリを変更しようとしているのだろうか。

おそらく、特定の知識を得たいためにこのようにしているのかもしれませんが、テキストの冒険に直面する平均的な方法は、コンピューターにフォルダーを作成することではなく、適切な構造を作成することであることを考慮してください。

少なくとも次のクラスが必要です: LocationObjectCharacter

ゲーム内で考えられるすべての場所とオブジェクトを表すには、場所とオブジェクトのベクトルが必要です。

プレイ キャラクターは、持ち運ぶことができるオブジェクトのリストも持っている必要があります (ただし、ゲーム内の他のキャラクターに拡張可能にすることができます)。

各場所には、名前、説明、および共通の出口 ( northsouthEastwestnenwseswupdownなど) の 10 の位置のベクトルが必要です。そのベクトル内に、その出口が選択されたときに移動する場所の番号を格納できます。

最後に、ゲームがコマンドを理解できるようにするために、プレーヤーの入力を解析する必要があります。

もちろん、これは冒険の最小値です。Inform などの既存のシステムを使用することもできますが、C++ のスキルを試しているかどうかはわかりません。

インタラクティブなフィクション フォーラムにアクセスして、冒険の真の専門家の助けを求めることができることを忘れないでください。

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

于 2013-04-17T09:33:00.347 に答える