#if-statement #inform7
#if-оператор #inform7
Вопрос:
Я решил попробовать свои силы в Inform7, и мне очень весело играть и смотреть, что с ним возможно. На данный момент, и используя учебные пособия, доступные мне в Интернете, я пытаюсь включить дневной / ночной цикл и режим сна, который станет доступен игроку только во время одного из ночных циклов. Я столкнулся с некоторыми проблемами из-за того, что Inform7 игнорирует мои операторы if, и проигрыватель может спать в любое время суток, чего я не хочу. Я уверен, что я упустил из виду что-то глупое, поскольку я только начал, но, может быть, кто-нибудь будет достаточно любезен, чтобы рассказать мне, что я мог бы сделать, чтобы исправить это? Большое спасибо.
Я прошу прощения за любые ошибки в моем коде, пожалуйста, имейте в виду, что я новичок и хочу учиться.
Вот мой код . . .
The sun is a backdrop. It is everywhere. The description is "Currently out of sight."
Night is a recurring scene. Night begins when play begins. Night begins when the time of day is 10:00 PM. Night begins when Dusk ends. Night ends when the time of day is 1:30 AM.
When Night begins:
say "The moon is up and the temperature drops abruptly to well below zero.";
now the description of the sun is "Currently out of sight."
The witching hour is a recurring scene. The witching hour begins when Night ends. The witching hour ends when the time of day is 5:00 AM.
When The witching hour begins:
say "You feel sleep calling you.";
now the description of the sun is "Currently out of sight.".
Day is a recurring scene. Day begins when The witching hour ends. Day ends when the time of day is 6:00 PM.
When Day begins:
say "The sun is now properly up.";
Dusk is a recurring scene. Dusk begins when Day ends. Dusk ends when the time of day is 10:00 PM.
When Dusk begins:
say "The sun is setting.";
A person is either awake or asleep. A person is usually awake.
Every turn:
if The witching hour is not happening:
instead of sleeping when the player is awake:
now the player is awake;
say "You can't sleep now. . .";
Every turn:
if The witching hour is happening:
instead of sleeping:
now the player is asleep;
say "You fall asleep. . .";
Every turn:
if The witching hour is happening:
instead of doing something other than waking up, waiting or sleeping when the player is asleep:
say ". . . You're sleeping.";
Every turn:
if The witching hour is happening:
instead of sleeping when the player is asleep:
say "Zzzz.";
Every turn:
if The witching hour is happening:
instead of waking up when the player is asleep:
now the player is awake;
say "You wake suddenly.";
Every turn:
if The witching hour is happening:
instead of doing something other than looking or sleeping when the player is awake:
say "You'd really rather just sleep. . .";
Ответ №1:
Вы не можете помещать правила instead (или любые другие типы правил) внутри других правил. Компилятор действительно должен выдавать ошибку, но, к сожалению, этого не происходит. Что вам нужно сделать, это удалить все Every turn:
строки и объединить все условия if с условиями правила instead . Например:
Instead of sleeping when the player is awake and the witching hour is not happening:
say "You can't sleep now. . .";
Instead of sleeping when the witching hour is happening:
now the player is asleep;
say "You fall asleep. . .";
и так далее для остальных правил.
Комментарии:
1. Большое вам спасибо! Я ценю это, это сразу устранило проблему! Это сводит меня с ума уже больше дня, и я не могу отблагодарить вас достаточно . , ,
2. @scuttlebug Если этот ответ помог решить вашу проблему, вам следует подумать о его принятии .