15.16. Defining things with tables

| 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.

It's even possible to define kinds this way, though it's rare to need to create many kinds at once. (See the worked example "Reliques of Tolti-Aph" at the Inform website. There's no special syntax needed: rather than saying "Some jerseys are defined by..." we would say "Some kinds of jersey are defined by...")

271
| 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. |
RB

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

> Suppose we have a whole catalog-full of equipment that the player might want to purchase and use. We'll start by defining our purchasing rules: "Introduction to Juggling" We allow things to have prices, and the player's price to indicate how much money the player has: Section 1 - Mail-ordering defined Price is a kind of value. $100.99 specifies a price. The player has a price. The price of the player is $60.00. 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. All our orderable items in this example are toys, so "any toy" means any object of the toy kind, whether or not it is in view at the moment: 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 visible 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; decrease the price of the player by 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 and which is right in front of him: Instead of buying something: say "You already have [a noun]." So much for the general rules for this scenario. Now we move on to particulars: the actual items the player is allowed to order. Each item will have a description, a price, and a difficulty representing how skilled the player must be in order to make use of that item. 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. Section 2 - The Scenario Difficulty is a kind of value. The difficulties are easy, moderate, hard. The player has a difficulty. The difficulty of the player is easy. 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. 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." 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: say "[bold type][toy entry][roman type]: [description entry] [cost entry], [restriction entry]. [paragraph break]". When play begins: now right hand status line is "Budget: [price of the player]"; now left hand status line is "[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]". And of course this will be no fun unless the player is allowed to use the equipment: 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: if the difficulty of the player is less than hard and the difficulty of the player is the difficulty of the noun: now the difficulty of the player is the difficulty after the difficulty of the player. 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