Chapter 11: Phrases
11.7. Begin and end

In practice it is not enough to apply "if" or "while" to a single phrase alone: we want to give a whole list of phrases to be followed repeatedly, or to be followed only if a condition holds.

We do this using "begin" and "end", as in the following examples.

To comment upon (whatever - a thing):
    if whatever is transparent then say "I see right through this!";
    if whatever is an open door begin;
        say "Oh look, an open door!";
        if whatever is openable then say "But you could always shut it.";
    end if.

Here we group two phrases together under the same "if". Note that the "then" has been replaced by "begin", and that the end is marked by "end if".

Similarly for while:

while (condition) begin; (... phrases ...); end while

The "begin" of an "if" must of course match an "end if", not an "end while", and so on.


157
* Example  Matreshka
A SEARCH [room] action that will open every container the player can see, stopping only when there don't remain any that are closed, unlocked, and openable.

RB
158
* Example  Princess and the Pea
The player is unable to sleep on a mattress (or stack of mattresses) because the bottom one has something uncomfortable under it.

RB

The main point here is that we need to figure out where the stack meets the floor:

"Princess and the Pea"

The Topmost Turret is a room. A mattress is a kind of supporter. A mattress is always enterable. A mattress is portable.

A large mattress is a mattress in the Turret. A medium mattress is a mattress in the Turret. A small mattress is a mattress in the Turret.

Instead of sleeping when the player is on a mattress (called the bed):
    let the item be the bed;
    while the holder of the item is not a room
    begin;
        let the item be the holder of the item;
    end while;
    say "You can still feel something very uncomfortable under [the item]."

Instead of sleeping:
    say "You can't sleep standing up!"

Instead of looking under a mattress, say "You scout around, but are unable to determine what's causing you this discomfort. If only your maid Winnie were here. She's very good at this."

Test me with "sleep / enter small / sleep / get up / get small / put small on medium / get on small / sleep / get up / g / get medium / put medium on large / get on small / look / sleep".


PreviousContentsNext