windows — Запуск команд cmd в стеке переполнения

Я пытаюсь сделать текстовое приключение на основе C ++. Я сделал папки, которые содержат конкретные файлы для каждого пути. Предположим, я иду на юг из комнаты, мне нужно зайти в папку с именем «юг». У меня возникли проблемы, так как я не знаю, как изменить каталог, как «cd. \ South» в C ++. Подскажите пожалуйста, как сменить каталог в C ++.

Я пытался использовать:

system("cd .\\south")

но это не меняет каталог. Я также искал в Google, но он дает ссылку на другую функцию под названием ShellExecute, которую я не знаю, как использовать. Пожалуйста, помогите (я начинающий).

1

Решение

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.

НАПРИМЕР: system("cls && date && pause");

2

Проблема в том, что каждый system Команда будет выполняться в отдельных процессах, поэтому ваш cdКоманда будет работать, но не будет действовать для следующих команд.

Вы могли бы использовать chdir если вы работаете в системе Linux / Unix или SetCurrentDirectory для Win32 API, но я не уверен, действительно ли это то, что вы хотите сделать.

0

Ответ на конкретный вопрос, который вы делаете, уже дан. Однако мне интересно, почему вы пытаетесь изменить текущий каталог, чтобы ответить на команду, заданную пользователем.

Может быть, вы делаете это таким образом, потому что вы хотите овладеть чем-то конкретным, однако учтите, что средний способ противостоять текстовому приключению — это не создавать папки на компьютере, а создавать соответствующие структуры.

Вы должны иметь классы по крайней мере для: Location, Object, Character

У вас должен быть вектор локаций и объектов, чтобы представлять все возможные локации и объекты в игре.

Игровой персонаж также должен иметь список предметов, которые он может носить с собой (хотя вы можете сделать это расширяемым для других персонажей в игре).

Каждое местоположение должно иметь: имя, описание и вектор из десяти позиций для общих выходов, таких как к северу, юг, восток, запад, Небраска, северо-западный, се, ЮЗ, вверх а также вниз. Внутри этого вектора вы можете сохранить номер местоположения, которое нужно выбрать при выборе выхода.

И, наконец, вам нужно проанализировать ввод игрока, чтобы игра могла понимать команды.

Это, конечно, минимум приключений.
Вы можете использовать уже существующие системы, такие как Inform, хотя, опять же, я не знаю, пытаетесь ли вы применить свои навыки C ++.

Помните, что вы можете обратиться за помощью к настоящим специалистам по приключениям, посетив интерактивный игровой форум:

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

0
По вопросам рекламы [email protected]