Как сделать?
…
Уважаемые коллеги, не могу понять одну странность. Предупреждаю, что ни разу не программист:
Есть код такого примерно вида
1. :mark
2. if action=1 : *p ‘hello world’
3. act ‘Напечатать hello world’ : action=1 & jump :mark
В моем представлении, при выборе действия “Напечатать hello world” должна выводиться надпись.
Так вот. Вместо того, чтобы напечатать hello world, проигрыватель пишет, что не найдена метка!
Может, я что-то не так делаю? Ровно тот же эффект, если строки 1 и 2 я смещаю вниз, после действия.
Метки в коде локации не доступны из кода действий.
Byte:
Метки в коде локации не доступны из кода действий.
А как тогда сделать, чтобы в рамках кода одной локации, в зависимости от выбранного действия исполнялись разные фрагменты кода?
Описать код в действиях :)
Еще есть вариант использования операторных скобок и dynamic’а:
на локации запоминаем код в переменной
$code1=
В действии вызываем dynamic $code1
jump’ы нельзя делать из действий, потому что действия могут добавляться на произвольных локациях, не обязательно “текущей” - в этом случае неясно, куда делать jump :)
Byte:
В действии вызываем dynamic $code1
Спасибо, разобрался!
junkiehipsta:
А как тогда сделать, чтобы в рамках кода одной локации, в зависимости от выбранного действия исполнялись разные фрагменты кода?
Есть еще один вариант: в самом начале кода локации проверять значение переменных и флажков, а при обработке действий выставлять нужные значения и делать переход по goto $curloc на текущую локацию.
Вот простая переделка вашего кода:
:mark
if action=1:
*p 'hello world'
end
act 'Напечатать hello world':
action=1
goto $curloc
end
P.S. Обращаю ваше внимание, что лучше использовать многострочную запись if и act это повышает наглядность и понятность кода игры.
Такой вопрос, а в меню можно засунуть что-нить динамичное?
Dark,
Можно попробовать анимированный gif
Неее… я поступил иначе=)
Имеется следующий вопрос:
В игре прописал зависимость некоторых событий от таймера в связи с чем хочу реализовать возможность сна через вводимые мной данные(в строке ввода). Тобишь ввожу 5 и сплю 5 часов/минут. Как реализовать такой ввод?
В $USERCOM прописываешь название локации-обработчика строи ввода(будет вызваться по нажатию Enter в строке ввода), в коде самой локации введенный текст берешь из переменной $USER_TEXT.
А можно показать пример с минутами в виде кода с ф-ией input? А то я чёт не очень понял…
Все справился сам, пришлось сделать армейским способом, но вроде работает. Потом буду доделывать - когда время будет.
=NOSgod=,
А поделись своим армейским способом?
=NOSgod=,
Я тебе объяснил как работать со строкой ввода, как ты и просил.
Функция INPUT не работает со строкой ввода, она открывает специальное окно для ввода текста.
См. http://qsp.su/tools/onlinehelp/opsfuncs_funcs_base.htm#func_input