RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2424908 views

Уважаемые коллеги, не могу понять одну странность. Предупреждаю, что ни разу не программист:
Есть код такого примерно вида
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[Ol(U23)leneri] #34 01.08.2010 08:33 (15 years ago)

Такой вопрос, а в меню можно засунуть что-нить динамичное?

Dark,
Можно попробовать анимированный gif

Dark[Ol(U23)leneri] #34 01.08.2010 19:09 (15 years ago)

Неее… я поступил иначе=)

Имеется следующий вопрос:
В игре прописал зависимость некоторых событий от таймера в связи с чем хочу реализовать возможность сна через вводимые мной данные(в строке ввода). Тобишь ввожу 5 и сплю 5 часов/минут. Как реализовать такой ввод?

В $USERCOM прописываешь название локации-обработчика строи ввода(будет вызваться по нажатию Enter в строке ввода), в коде самой локации введенный текст берешь из переменной $USER_TEXT.

А можно показать пример с минутами в виде кода с ф-ией input? А то я чёт не очень понял…

Все справился сам, пришлось сделать армейским способом, но вроде работает. Потом буду доделывать - когда время будет.

=NOSgod=,
А поделись своим армейским способом?

=NOSgod=,
Я тебе объяснил как работать со строкой ввода, как ты и просил.

Функция INPUT не работает со строкой ввода, она открывает специальное окно для ввода текста.
См. http://qsp.su/tools/onlinehelp/opsfuncs_funcs_base.htm#func_input

Log in or Register to post comments.