2013-11-11 5 views
4
@echo off 
color 0a 
title Horror Game 
echo. 
echo. 
echo. 
echo. 
echo Welcome to the game 
echo If you get scared 
echo Feel free to leave 
echo. 
echo. 
echo You are in a dark room. 
echo It is cold. 
echo All you hear is a scratching sound 
echo near your feet. 
echo What do you do? 
echo. 
echo. 
echo 1.) Feel around you 
echo 2.) Listen for anything else 
set/p input = Command? 
if %input% == "1" goto Feel 
if %input% == "2" goto Listen 
echo. 
echo. 
:Feel 
echo You feel around and hear a growl. 
echo As you realize the scratching was 
echo on your leg. 
echo. 
echo You remember nothing else. 
pause 
end 

Я пытаюсь сделать игру на основе текста для ЦМДА и всякий раз, когда я пытаюсь ввести ответ мгновенно закрывается, и я едва могу зачитать «Гото был неожиданным в это время»Гото был неожиданным в это время

ответ

7

Вы не правильно сформировали тесты. Вам необходимо заключить в двойные кавычки:

if "%input%" == "1" goto Feel 
if "%input%" == "2" goto Listen 

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

Вы должны рассмотреть возможность использования команда choice вместо set /p. Введите choice /? из командной строки.

В будущем запустите сценарий из командной строки, если у вас возникли проблемы с преждевременным завершением. Таким образом, окно не будет закрываться на вас, и у вас будет достаточно времени, чтобы прочитать ошибку.

Вы можете запустить командную строку быстро нажав Windows Key - R, набрав cmd и нажав Enter

+0

+1 Используя этот метод, вы можете ввести два ответа на слово, а также ответ, без каких-либо ошибок. – foxidrive

1

Вы должны удалить пространство между input и = в команде set, в противном случае вы фактически устанавливая переменную с именем input  (с пробелом в конце). Это работает, как ожидалось:

echo 1.) Feel around you 
echo 2.) Listen for anything else 
set/p input=Command? 
if %input% == "1" goto Feel 
if %input% == "2" goto Listen 
echo. 
echo. 
:Feel 
echo You feel around and hear a growl. 
echo As you realize the scratching was 
echo on your leg. 
echo. 
echo You remember nothing else. 

Однако без кавычек вокруг %input% это приведет к ошибке unexpected goto, если пользователь вводит вход с пробелом в ней. Возможно, предложение paddy использовать команду выбора - это, вероятно, путь.

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