| Chapter 15: Tables |

| 15.16. Defining things with tables

Suppose we need to create a collection of items which differ in their properties, but are basically part of a larger pattern. For instance, here we set up what we need to make a collection of coloured shirts:

> A jersey is a kind of thing. A jersey is wearable. A jersey has a number called year established. A jersey has a text called citation. The description of a jersey is "Since [year established], the Tour de France has awarded this jersey to the [citation]."

Now we have the pattern, but making the actual shirts is tedious and repetitive:

> The yellow jersey is a jersey. The year established of the yellow jersey is 1919. The citation of the yellow jersey is "race leader". The polkadot jersey...

And so on. Instead, we can use a table to abbreviate all of this:

> "Tour des Maillots"

> The Staging Area is a room. A jersey is a kind of thing. A jersey is wearable. Some jerseys in the Staging Area are defined by the Table of Honorary Jerseys. The description of a jersey is "Since [year established], the Tour de France has awarded this jersey to the [citation]."

> Table of Honorary Jerseys

> jersey | year established | citation
> a yellow jersey | 1919 | "race leader"
> a polkadot jersey | 1933 | "King of the Mountains"
> a green jersey | 1953 | "highest point scorer on sprints"
> a white jersey | 1975 | "best cyclist aged 25 or less"

The first column provides names for the new things to be created. Subsequent columns provide property values. Note that we did not need to say that jerseys have a number called "year established" because Inform is able to infer this from the column heading and the presence of numbers in the column; similarly for "citation". Lastly, note that if any entry is blank (written "--") then that particular property is simply not set for that particular item.

Note that Inform reads articles such as "the" or "a" in the first column just as it would when something is created with any other sentence.

218
| Example Sweeney A conversation where each topic may have multiple questions and answers associated with it, and where a given exchange can lead to new additions to the list.

219
| Example Introduction to Juggling Assortment of equipment defined with price and description, in a table.

> Suppose we have a whole catalog-full of equipment that the player might want to purchase and use. "Introduction to Juggling" Backstage is a room. "A muffled black room with felt on the floors and walls. A glowing sign over the stage door says SHOW IN PROGRESS." Price is a kind of value. $100.99 specifies a price. Difficulty is a kind of value. The difficulties are easy, moderate, hard. Since we are going to use price and difficulty in the table that defines our juggling equipment, we need to mention these kinds of value before the line that says how toys are defined. The plural of toy is toys. A toy is a kind of thing. Some toys are defined by the Table of Juggling Equipment. Table of Juggling Equipment
> toy | cost | restriction | description | difficulty | outcome
> an economy bounce ball set | $10.00 | "comes in set of three" | "A fairly ordinary rubber ball, solid color." | moderate | "You create of the balls a cascade of moving color."
> an acrylic contact ball | $14.00 | "should be bought with ball polish" | "A large clear ball, not for throwing but for using in various hand tricks." | hard | "You rotate the ball between your fingers and pass it over the backs of your hands."
> a UV-reactive contact ball | $55.00 | "appears to glow in dark rooms" | "Similar to the ordinary acrylic contact ball, but UV-reactive." | hard | "The ball glows as it passes between your fingers and over the backs of your hands, rolls up to your wrist, snaps through the air-- all apparently of its own accord."
> a ball polish set | $10.00 | "useful only with acrylic contact balls" | "Three bottles of polish and a rag for keeping acrylic contact balls scratch-free." | hard | "You juggle the polish bottles with difficulty, since they are full of sloshing liquid."
> a teaching beanbag set | $8.00 | "set of three" | "Soft, easily-juggled bag." | easy | "You juggle the beanbags with basic competence."
> a stage ball set | $13.50 | "comes in set of three" | "Not much different in appearance from the economy bounce ball, but larger so as to be visible from a stage." | moderate | "You create of the balls a cascade of moving color, visible from quite a distance."
> a fireball set | $33.00 | "will not be sold to minors" | "A ball has wicking and a fuel-source inside so that it will burn while being juggled." | hard | "You juggle the fireballs rapidly, careful never to hold any of them a moment longer than necessary."
Notice that we are allowed to define "description" and other already-known properties in the table as well. The player has a price. The price of the player is $60.00. The Juggling Equipment Catalog is a thing in Backstage. Instead of examining the Catalog: say "You read through the offerings, including: [paragraph break]"; repeat through Table of Juggling Equipment begin; say "[bold type][toy entry][roman type]: [description entry] [cost entry], [restriction entry]. [paragraph break]"; end repeat. And because we're allowing the player to order things that he can't currently see, we need to borrow a special kind of grammar from the Understanding chapter: Understand "buy [any toy]" as ordering. Understand the command "order" as something new. Understand the command "order" as "buy". Ordering is an action applying to one thing. Check ordering: if the cost of the noun is greater than the price of the player, say "You only have [price of the player], while [the noun] would cost [cost of the noun]." instead; Carry out ordering: move the noun to the player; change the price of the player to the price of the player minus the cost of the noun. Report ordering: say "You order [a noun], which is delivered instantly." We should also handle the situation where the player orders another of something he has already bought: Instead of buying something: say "You already have [a noun]." When play begins: change right hand status line to "Budget: [price of the player]"; change left hand status line to "[location], feeling [if the difficulty of player is easy]incompetent[end if][if the difficulty of player is moderate]moderately skilled[end if][if the difficulty of player is hard]highly skilled[end if]". The player has a difficulty. The difficulty of the player is easy. Understand "juggle [something]" as juggling. Juggling is an action applying to one thing. Check juggling: if the noun is not a toy listed in the Table of Juggling Equipment, say "You can't juggle [a noun]!" instead; if the difficulty of the noun is greater than the difficulty of the player, say "You're not quite ready to juggle something like [the noun]. Better to start with an easier toy." instead. Carry out juggling: if a random chance of 1 in 3 succeeds begin; if the difficulty of the player is less than hard and the difficulty of the player is the difficulty of the noun, change the difficulty of the player to the difficulty after the difficulty of the player; end if. Report juggling: say "[outcome of the noun][paragraph break]". Instead of burning the fireball set: say "It will flame by itself when you use it." Test me with "read catalog / buy economy / buy beanbag / juggle economy / juggle beanbag / juggle beanbag / juggle beanbag / juggle beanbag / juggle beanbag / juggle beanbag / juggle economy / juggle economy / juggle economy / buy fireball set / juggle fireball".

Previous | Contents | Next