Classic Computer Magazine Archive ST-Log ISSUE 35 / AUGUST 1989 / PAGE 36

The Compukid Connection: WUZZLERS



My eight-year-old son and I learned to program at the same time. I would say we learned to do it together, but in reality it was more like side by side. I went my own way, writing mouse-driven children's programs, and he went his, writing games of all kinds. One of his first efforts was Hangman, the age-old word-guessing game. He displayed dashes corresponding to the letters in the word and a hangman's gallows. Guesses were made primarily on the basis of trial and error, with a little help from word length and letter position as correct answers were given. If the player guessed a letter wrong, body parts of a stick were progressively added; when the stick figure was complete, the player lost the round. His game mimicked precisely the version I had played on paper as a child, and I was impressed. I wanted to do my own version of Hangman.

Wuzzlers is a version of Hangman, but with a twist: A piece of a picture puzzle is displayed for each word. If the user guesses a letter that is not in the word, another piece of the puzzle is displayed. The developing picture reminds the player that his guesses are running out and provides a hint as to what the mystery word could be. Thus, the "hangman"—in this case, the puzzle—is not simply a foreteller of doom but rather an aid that increases the likelihood of success.

I originally designed the program as a practice aid for beginning readers, but it could also be used for vocabulary building, spelling lists, rebus puzzles, foreign noun acquisition or just plain fun. The program consists of a game screen and a file-creation screen, both of which are accessible from a shell screen. As programming for children is my specialty, I wanted to make the program simple enough for the youngest potential Hangman players. Some concessions to these young users were required, and I will discuss them in detail later. But first, let's take a look at the program.


Disk preparation

The minimum hardware requirements for use of the program are a 520ST with a single-sided drive and a color monitor. Follow the ST-LOG disk instructions to decompress WUZZLERS.ARC, and transfer the files WUZZLERS.PRG and WUZZLERS.DAT to the root directory of a freshly formatted disk (that is, do not put them in a folder). An additional file in the ARCed file, WUZZLERS.LST, contains the GFA BASIC source code for the program. Only WUZZLERS.DAT and WUZZLERS.PRG are needed on your play disk. Make sure your screen is in low resolution. Insert the disk in Drive A and double-click on WUZZLERS.PRG. A shell screen will appear, offering the choices Play the Game, Make a Puzzle and EXIT.

Playing the game

Click the mouse on "Play the Game." The game screen is shown with the following mouse-controlled boxes: EXIT, PLAY, HELP and the alphabet boxes. When the game screen first appears, a green alert box is on the left-hand side of the screen. Choose the number of players and type the players' names as requested. Instructions will be displayed near the top of the screen. Each player works on a separate puzzle and initiates his turn by clicking the PLAY box when directed to do so.

When a puzzle is loaded, a broken line is drawn under the alphabet boxes to indicate how many letters are in the puzzle words and one piece of the puzzle is displayed in the large box on the left-hand side of the screen. Use the mouse to guess the letters in the puzzle word. A perfect score of nine points is possible on a puzzle. Each time you guess a letter that is not in the puzzle word, one point is deducted from the possible nine and another piece of the puzzle is displayed.

When the last piece of the puzzle has been placed in the box, you may keep guessing, as long as each letter you guess is in the word. If one more guess is wrong, your turn is forfeited (with a score of 0 for that puzzle) and the mystery word is revealed.

Statistics on scores are revised at the end of each turn and displayed in the bottom right-hand corner of the screen. "# Puzzles" (printed in yellow text) indicates the number of puzzles a player has successfully solved; a running total of the number of points a player has accumulated is displayed in green text.

This game is open-ended: You can end the game whenever you please or continue as long as you like. If you play long enough, a purple alert box will eventually announce that all the puzzles on the disk have been used. If you want to continue at that point, you'll be seeing the same puzzle files again. You won't have another disk of puzzles available this first time, but in the future, when you see this message, it can serve as a cue to put another puzzle disk in the same drive from which the program was loaded. Click on EXIT, and you'll be looking at the shell screen again.

Creating/adding a puzzle file

Click "Make a Puzzle." The file-creation screen will appear. This subprogram allows you to develop and alter puzzle files for use with the game. Options on this screen include EXIT, SAVE, HELP, LOAD and a variety of drawing options. Use the mouse to select colors, drawing options, fill patterns and magnify mode. A white "easel" is on the left half of the screen. Drawing and filling are achieved by simply pressing either mouse button while the mouse is on the easel.

Two different size "nibs" are available for drawing; click the DRAW option once for a tiny dot; twice for a larger one. You can slowly "drag" the mouse on the easel, holding either button down, to draw a continuous line. The fill pattern box (to the right of the FILL option) displays the currently selected fill pattern (the default pattern is solid). Click repeatedly on the box to scroll through the many patterns offered. To fill a shape on the easel, make sure FILL and the desired fill pattern are selected, place the mouse within the shape and click either button.

Other drawing options (LINE, FRAME and CIRCLE) require you to press the left button once to begin the operation and again to set the final shape/line in place. For example, to draw a line, click the left mouse button on the easel where you want the line to start, let go of the button, move the mouse to wherever you want the line to end and click the left button again. DEGAS users are accustomed to "dragging" the mouse with the left button down to perform these operations. My choice of two clicks of the left button is one of my concessions to young users, who sometimes have difficulty dragging the mouse.

Once you have begun a drawing operation, you can end it without drawing the shape/line in either of two ways. One is simply to click the right mouse button. The other is to move the mouse away from the easel and click either button.

To erase a small area of the easel, use one of the DRAW nibs and the color white (or your picture's background color). If you want to erase the entire easel, click on BLANK. To use magnify mode, click the magnification grid in the lower right-hand corner of the screen. Then move the mouse to the easel. The mouse will be replaced by a small rectangle. Move the rectangle to surround the area you want to magnify. Press the left mouse button. A red box will surround the identified section of the easel and a magnified representation of that section will be displayed in the magnification grid. Each square in the grid represents one pixel within the red box on the easel.

Now you can draw on the magnification grid directly (with the left button), and corresponding changes will automatically take place on the easel. Colors may be reselected while in the magnify mode. To exit the magnify mode, click the right button or click the left button anywhere on the screen except on the grid or the color choice area.

Pressing the UNDO key will erase the last change you made on the easel, but you must press UNDO before clicking the mouse button again. If you press UNDO just after exiting the magnify mode, all the changes you made while in that mode will be erased and your picture will be restored to its previous state. When you are done with a picture, click SAVE to type in your puzzle word and save the puzzle to disk. When typing the word, be sure to spell it correctly. You may use only the letters from "A" to "Z" in the twelve-letter puzzle word. Hyphenated words, apostrophes and multiple-word entries are not allowed. The Backspace key may be used to edit.

If there is no file called WUZZLERS.DAT on the root directory of the disk in the drive from which the program was loaded, the program will create one when it saves your puzzle. Two opportunities to change your mind are offered during the saving process; when you first click on SAVE and after you have typed in the puzzle word.

The LOAD option allows you to view all the puzzles in WUZZLERS.DAT in sequence. However, it also allows you to (in effect) delete puzzles by transferring pictures between WUZZLERS.DAT files on different disks. The method is a bit roundabout, as follows: Suppose you want to create a file of puzzles for your first-grader. Suppose, too, that you have 20 puzzles on another disk, and a few of these are appropriate to the child's skills. Use the LOAD option to load the desired puzzles from the one disk, then save them on a separate disk (placed in the same drive) for your child.

It's a good idea to develop a library of puzzle disks, with each disk containing puzzles for only one skill level. An appropriate selection of puzzle disks representing various skill levels and interests will enhance the game's value to each potential player in your home. Then, whenever you play the game, simply insert the desired puzzle disk in the same drive from which the program was loaded.

Some suggestions for creating puzzles

It goes without saying that the people who create the puzzles won't find the game very challenging. But fine art does have its rewards, and players will be grateful for carefully prepared puzzles. Samples of puzzles for players of various skill levels are included on your ST-LOG disk. In actual use, however, it is best if all the puzzles on a disk are designed for the same skill level.

For the benefit of early readers, puzzle pieces will provide more substantial hints if the object representing the puzzle word occupies most of the easel. The puzzle is divided into a grid of 3 × 3 blocks. It is important that each block have something in it other than the default white background; otherwise, players won't notice that a hint has been offered when an all-white piece is displayed in response to an incorrect guess.

For young readers, I would suggest pictures in which a single object is prominently displayed against a simple background. My five-year-old became angry when trying to solve a puzzle showing a girl wearing a hat. She kept thinking that the mystery word was "hed" (sic). When she discovered that the puzzle word was "hat," she threw up her hands in frustration and said, "Why didn't you just draw a hat, then?!" Puzzles for young children should be, with very few exceptions, obvious representations of nouns.

More difficult puzzles are likely to have considerable distracting detail. They may express parts of speech other than nouns, rather than being strictly representational (for example, a picture of a sailboat used to hint at the word "sailing," or a picture of a rain cloud for "stormy"). Rebus constructions can be especially challenging. Sophisticated puzzles will prove too difficult for early readers but will make for a challenging game for older children and their parents.

Whether the puzzles are simple or complex, it is important that puzzle words be spelled correctly when newly created puzzles are saved. The program does not include a spell-checker, so you will have to take this responsibility upon yourself. When planning your puzzles, remember that puzzle words may contain only the letters "A" through "Z" and are limited to twelve characters.

Little warnings

When you load WUZZLERS.PRG, whatever drive you use will serve as the only active drive for the program that session. Any puzzle disk you use will need to be inserted in that same drive in order for the puzzles to be loaded. The program will not run out of a folder. The program will operate from the root directory of a hard-drive partition, but this is not recommended. Although a hard disk might accommodate a huge puzzle file, which would be an advantage in a lengthy game, specialized puzzle disks will not be readily available and the LOAD/SAVE method of transferring desired puzzles will be complicated by extra steps.

During a game, the program avoids showing duplicate puzzles from a disk by assigning a number to each puzzle in WUZZLERS.DAT. If you switch puzzle disks before the purple alert box announces, "There are no more puzzles on this disk!" the program will not load those puzzles from the second disk, which are assigned the same number as previously shown puzzles from the first disk.

A word about kid-friendliness

Early on in the development of this program, I set a goal: The game must be accessible to even the youngest beginning readers and the file-creation program should be usable for children only slightly older. This goal meant that the program needed a great deal of user-friendliness, much more than would be necessary for an adults-only audience. I have written many programs for children, and testing with my own children and in schools has demonstrated that some of these programs have a more successful user-interface than others. Sometimes these adaptations for ease of use limit the programmer's (and even the user's) choices in frustrating ways. A certain amount of sacrifice is in order.

As I approached this program, for example, I knew I would not be able to use file selector boxes, created by a simple one-line command in GFA BASIC, because young children find them confusing. I would also need to limit choices to avoid too much confusion and screen congestion. Large text, color-coding of selection boxes and instructions, minimal keyboard use, large targets for the mouse and careful planning for users’ mistakes all contribute to an easy-to-use interface for children.

It was not difficult to provide a kid-friendly interface for the game itself, but the file-creation program was another matter. I had planned to provide some sample pictures in my release of the game. I could draw them with DEGAS, but could a typical 8-year-old use DEGAS and follow instructions for creating a puzzle from his art? (Yes, perhaps your child could, but I'm talking about a typical one.) Not likely. I would therefore need to provide a drawing program of my own for the creation of puzzle files.

The drawing program would have to be capable of producing the kind of pictures I could draw with DEGAS but nevertheless be somehow less complicated. What DEGAS features could I live without? After careful consideration and some experimentation, I determined that I couldn't possibly draw to my own satisfaction without at least the following functions: DRAW, LINE, FILL, FRAME and CIRCLE.

But my list didn't really stop there. If I was going to have FILL, I also wanted fill patterns. I wanted to be able to erase the entire drawing screen and I wanted to be able to erase sections of the drawing screen relatively quickly. I wanted a fair selection of colors and I wanted magnify mode. Most importantly, because I frequently change my mind, I wanted a way to undo my mistakes quickly and easily. And because I was not only a programmer but also a potential user of the program, it seemed safe to assume that most users would also want these functions.

Thus, all of the above operations have been provided in the drawing program, but others were omitted in order to keep it as uncomplicated as possible. This was not done without some regret, as I am reminded whenever I look for the now non-existent Copy option. The drawing program is still not quite easy, but it also isn't too difficult for a typical eight-year-old to master.

In my favorite word processor, 1st Word Plus, I can select boldface type in three different ways: by pressing the F1 key, by clicking an icon at the bottom of the screen or by selecting Bold from the Style menu. Multiple methods of performing a single function can be confusing to children, and normally, I avoid them. However, in this program I provided two methods to end a drawing procedure without completing it. You can click the right button, or you can click either button (or both, by the way) while the mouse is away from the easel.

Likewise, to exit magnify mode, you can click the right mouse button or you can click the left button, as long as the mouse is not on the magnification grid or in the color-choice area. In this particular case, I selfishly sacrificed my one-choice policy in order to permit me to use the right mouse button, which I much prefer. Very young children—and some will use this program—sometimes have trouble telling left from right. They would not be able to use the right-button method successfully. In cases where the users cannot tell left from right, I would encourage them to use the left button routinely and exit a drawing operation by clicking the left button while the mouse is in the blank area below the SAVE and HELP options. If they can't remember which button is the left one, mark it or put a sticker on it to make identification easier. Users who can distinguish right from left, however, will almost undoubtedly prefer the right-button method.

Further contributions to user-friendliness can be seen in the alert boxes on the Blank, Save and Exit options, providing the user with an opportunity to change his mind. These features were not included solely to benefit young users but should be a part of any program, no matter what the user's age.

The current functioning of the Load option and my suggestions for file transfers were also the result of an effort to provide a friendly interface. This device was added to satisfy an obvious need for transferring and viewing files, while not adding too much to the complexity of program use or to the congestion on the screen. There is still some potential for confusion, but then again, at least young users will not have to deal with a file selector box.

Children tend to flay about wildly with the mouse. While intentional "dragging" of the mouse may be difficult for them, children often unintentionally move the mouse while the button is pressed. This can result in unexpected selections; jerking the mouse upward from the easel, for example, could result in the inadvertent selection of HELP, LOAD, SAVE or EXIT. To prevent this, each time the mouse leaves a target area, the program checks to make sure the button has been released before permitting further selections.

When you select SAVE, the program checks to make sure that there is enough room to save another puzzle. When you select PLAY or LOAD, the program makes sure that there is a puzzle file (WUZZLERS.DAT) in the root directory of the disk. Yet another trap prevents saving a picture without an accompanying puzzle word. In each of these cases, a purple alert box will bring the nature of the error to your attention, and then the program will resume. Some mistakes are not announced by the program. If a player fails to type his name when beginning a game and simply presses RETURN at the prompt, for example, the program will adapt to this lack of information.

In spite of (and sometimes because of) the special considerations in program design required, programming for children is very rewarding. With its fine color graphics, plastic-encased, durable disks, and easy-to-use mouse, the ST is an ideal machine for children. My own children have received many hours of enjoyment from my programs (and from those of countless other programmers as well), and I hope that you and your child will thoroughly enjoy Wuzzlers!

D.A. Brumleve, M.A., is involved with children and computers in a variety of ways. The mother of five children, ages 2 to 10, she serves as the adult facilitator of the Children's ST Users' Group in Urbana, Illinois. An avid programmer, she has developed a beginner's course in GFA BASIC and is the author of PreSchool KidProgs (MichTron) and numerous freely distributed programs for young ST users.