Chapter 11: Phrases
11.5. If

We now run through a few special phrases which control other phrases: causing them to repeat, perhaps, or to be skipped. These phrases are equivalent to the "control structures" of other computer programming languages: no system for interactive fiction can possibly be adequate unless it allows us to carry out arbitrary computations, so the pretence that Inform is not really a programming language must be dropped sooner or later. That time is now.

The phrase:

if (... condition ...) then (... another whole phrase ...)

causes the phrase after "then" to be followed only if the condition holds. Some people prefer to use a comma, which is treated just the same:

if (... condition ...), (... another whole phrase ...)

Because of this conventional use of a comma, it is a good idea to avoid using a comma in the condition itself:

if opening, closing a door, ...

tends to confuse Inform.

The sense of an "if" can be reversed by using the word "unless" instead. For example,

if the red door is not closed, ...

means the same as

unless the red door is closed, ...

"Unless" can be a good way to make the source text easier for humans to read.

There are many different forms of condition in Inform (and, as we shall see, we can easily add more), but the simplest is:

(first value) is (second value)

As always, Inform checks that these two values are of kinds which can be compared. The following will produce an objection, for instance:

if 10 is a door then say "Huzzah!"

since it makes no sense to ask the question, and the only result will be the baffled reply:

Problem. In the line 'if 10 is a door then say "Huzzah!"' , I can't determine whether or not '10 is a door', because it seems to ask if a number is some sort of door.

This, however, would be fine:

To comment upon (whatever - a thing):
    if whatever is transparent then say "I see right through this!";
    if whatever is an open door then say "Oh look, an open door!".

since "whatever" is known to be a thing, and Inform knows that things are indeed sometimes transparent and sometimes open doors.


PreviousContentsNext