2016-10-24 3 views
0

Привет, сообщество stackoverflow! Прежде всего, это мой первый пост, и я не слишком хорош с техническими терминами, поэтому оправдываю любые ошибки или вещи такого рода в этом посте.IF/ELSE Заявления в пакетном режиме ...?

Я делаю текстовую приключенческую игру в пакетном режиме, и сейчас я работаю над ее небольшим сегментом. Для жизни меня я просто не могу понять, как делать утверждения IF/ELSE. Я пробовал вложенные условия, без успеха. Вот что у меня есть:

echo You step up to the light. Luckily, it's pretty dim, 
echo so you're not burning your corneas. 
echo: 
echo What would you like to do? 
echo: 
echo 1] Attempt to fix the light 
echo 2] Go back to do something else 
echo: 
set /p decision=I want to... 
if "%decision%"=="2" goto restartStartNoLightFix 
if "%decision%"=="1" goto 
echo That choice is invalid. 
ping localhost -n 4 >nul 
goto inspectFlickerLight 

@echo is off.

Я хочу, если «% solution%» == «1», за которым следует проверка наличия у игрока части для фиксации света. Вложенные условия были неудачными, как сказано, и так как это будет игра с полной версией, кажется, что с использованием goto checkvariable будет толковаться каждое решение, которое я использую. Кроме того, решение является постоянно меняющейся переменной, если это повлияет на что угодно.

Я ценю любую помощь с этим!

+1

Просьба пояснить, что вы подразумеваете под «вложенными условиями были провалы». 'if"% solution% "==" 1 "if% partcount%" GEQ "1" echo Fixing light' –

+0

Я не вижу никакого вложенного кода и не вижу кода для проверки детали, чтобы исправить свет. используют GOTO, но нет ярлыков для перехода. – Squashman

ответ

0

Как насчет проверки переменной непосредственно перед тем, как задать вопрос?

Echo=You step up to the light. Luckily, it's pretty dim, 
Echo= so you're not burning your corneas. 
Echo= 
If Defined LightFix (
    Echo=What would you like to do? 
    Echo= 
    Echo=1] Attempt to fix the light 
    Echo=2] Go back to do something else 
    Echo= 
    Set/P decision=I want to... 
    If "!decision!"=="2" GoTo :restartStartNoLightFix 
    If "!decision!"=="1" GoTo :inspectFlickerLight 
    Echo=That choice is invalid. 
    Ping localhost -n 4 >nul 
) 

Если переменная, в этом случае назвали % LightFix% для демонстрационных целей, ранее не был установлен, когда игрок получил роль, то они бы никогда не увидеть вопрос ,

В зависимости от ваших предпочтений вы можете написать это так же:

Echo=You step up to the light. Luckily, it's pretty dim, 
Echo= so you're not burning your corneas. 
Echo= 
If Not Defined LightFix (GoTo :NextBit) 
Echo=What would you like to do? 
Echo= 
Echo=1] Attempt to fix the light 
Echo=2] Go back to do something else 
Echo= 
Set/P decision=I want to... 
If "%decision%"=="2" GoTo :restartStartNoLightFix 
If "%decision%"=="1" GoTo :inspectFlickerLight 
Echo=That choice is invalid. 
Ping localhost -n 4 >nul 
:NextBit 

Я использую = после Echo, (мое личное предпочтение), вместо вашего использования пространства или толстой кишки.

Вот раздел из ваших реструктурированных комментариев.

If "%decision%"=="1" (
    If Defined hasPart (
     If "%hasPart%"=="True" (
      GoTo :fixFlickerLight 
     ) Else (
      Echo=You need the parts to fix the light! 
      Timeout 3 >Nul 
      GoTo :inspectFlickerLight 
     ) 
    ) 
) 
+1

Привет @Compo, не первый пример нужен DelayedExpanion? – LotPings

+0

В первом примере действительно требуется замедленное расширение переменной среды. Я использую задержанное расширение всегда после переменной 'set/p ' = текст приглашения ", так как пользователь может ввести намеренно или по ошибке строку, содержащую, например,' '', которая выводится с 'if '% solution%" == "2" 'в результате завершения пакетной обработки из-за синтаксической ошибки. Но «если»! Решение! »==« 2 »и замедленное расширение включено в верхней части командного файла, даже если пользователь с немецкой клавиатурой нажал Shift + 2 и набрал, поэтому по ошибке' '' вместо '2'. – Mofi

+0

@LotPings, я изменил верхний пример на замедленный формат расширения, но не добавил для него инструкцию, потому что мне действительно нужно добавить его в соответствующее место, которое я не могу обойтись без просмотра всего кода и структуры. – Compo

Смежные вопросы