11.17. Phrases to decide other things

| Chapter 11: Phrases |

| 11.17. Phrases to decide other things

A condition is a yes/no decision, but we can also take decisions where the result is a value. Suppose we want to create a concept of the "grand prize", which will have different values at different times in play. Each time the "grand prize" is referred to, Inform will have to decide what its value is, and the following tells Inform how to make that decision:

> To decide which treasure is the grand prize:
> if the Dark Room has been visited, decide on the silver bars;
> decide on the plover's egg.

Note that we have to say what kind the answer will be: here it's a kind of thing called "treasure" (which we're supposing has already been created), and as it turns out only two treasures are ever eligible anyway (we're also supposing that the plover's egg and the silver bars are treasures already created, of course). And note also that the phrase must in all cases end with a "decide on ..." to say what the answer is:

decide on (value)

This phrase can only be used in the body of a definition of a phrase to decide a value. It causes the calculation to end immediately, with the outcome being the given value, which must be of the kind expected. Example: To decide which number is double (N - a number): let D be N times N; decide on D.

Now that we have "grand prize" created, we can use it just as we would use any other value, so for instance:

> if taking the grand prize, ...

As this is something of a dialect difference between English speakers, "what" and "which" are synonymous here, i.e., we could equally well write something like:

> To decide what number is the target score: ...

(A phrase to decide if something-or-other is exactly the same thing as a phrase to decide a truth state, and indeed, if we want to then we can use "decide on T", where T is a truth state, in its definition. For instance:

> To decide if time is short:
> if the time of day is after 10 PM, decide on true;
> ...
> decide on whether or not Jennifer is hurried.

"Decide on true" is exactly equivalent to the more normally used "decide yes", and of course it is optional. The last line is more interesting since it effectively delegates the answer to another condition.)

180
| Example Witnessed 2 A piece of ghost-hunting equipment that responds depending on whether or not the meter is on and a ghost is visible or touchable from the current location. |
RB

181
| Example A Haughty Spirit Windows overlooking lower spaces which will prevent the player from climbing through if the lower space is too far below. |
RB

Suppose we have a game in which the player can climb through windows which overlook rooms below. We want him to be allowed to climb out windows to reach a room on the same level or at most one level lower than the one he's on; otherwise, he should get a refusal, saying that he would break his neck. To figure out the height distance between the start room and the destination room, we might have a repeat loop look at all the directions one has to follow along the "best route" path between the two rooms, and record any ups and downs; then subtract the number of "up" steps from the number of "down" steps, and report what remains. "A Haughty Spirit" To decide what number is the distance (first place - a room) rises above (second place - a room): let the total distance be the number of moves from the first place to the second place; if the total distance is less than 1, decide on 0; let count of down moves be 0; let count of up moves be 0; let next place be the first place; repeat with counter running from 1 to the total distance: let the way be the best route from the next place to the second place; if the way is down, let count of down moves be the count of down moves plus 1; if the way is up, let the count of up moves be the count of up moves plus 1; let next place be the room the way from next place; let the decision be the count of down moves minus the count of up moves; decide on the decision. Now we just have to create windows and some action rules for interacting with them... A window is a kind of thing. A window is always fixed in place. A window can be open or closed. A window is usually closed. A window can be openable or unopenable. A window is usually openable. Understand "climb through [something]" as entering. Understand "jump through/out [something]" as entering. Before entering a closed window: say "[The noun] would have to be opened first." instead. Instead of entering a window: if the noun overlooks a room (called the far side): let fall be the distance the location rises above the far side; if fall is greater than 1, say "You'd break your neck." instead; say "You tumble into [the far side]."; move the player to the far side; otherwise: say "There's nowhere to go." Instead of examining a window: say "[The noun] [if the noun is open]opens over[otherwise]gives a view of[end if] [the list of rooms overlooked by the noun]." Here we must anticipate a little from next chapter, and provide ourselves with a way of keeping track of how windows and rooms relate to one another: Overlooking relates various windows to various rooms. The verb to overlook (it overlooks, they overlook, it overlooked, it is overlooked, it is overlooking) implies the overlooking relation. The initial appearance of a window is usually "[The item described] overlooks [the list of rooms overlooked by the item described]." The Square Keep is above the Winding Staircase. The Winding Staircase is above the Motte. A crown and a broken sword are in the Motte. The Bailey is west of the Motte. The long window is in the Keep. The long window overlooks the Bailey and the Motte. The narrow window is in the Winding Staircase. The narrow window overlooks the Bailey. Test me with "jump through window / open window / jump through window / d / x narrow window / open window / climb through window / e / up / down". We could then add rules to allow the player to look through windows and see things in the rooms below, but that would require more material from later chapters.

Previous | Contents | Next