Classic Computer Magazine Archive COMPUTE! ISSUE 29 / OCTOBER 1982 / PAGE 124

Micros With The Handicapped

Susan Semancik and C. Marshall Curtis The Delmarva Computer Club Wallops Island, VA

This VIC game demonstrates how the motor-impaired can communicate in several ways with a computer – using only the button on a joystick. There are also suggestions on adapting the game for the blind, to other computers, and for use with other kinds of input devices.

Many kinds of computer entertainment require keyboard interaction or other motor coordination that can be difficult and even impossible for motor-impaired individuals. This month we'll digress from our series on developing a daily communications program to explore how a game program can be modified to accept alternative input devices in order to allow the motor-impaired to interact with it.

In this "Color Master" game, the computer randomly fills a four-block pattern, choosing from seven colors, with repeats possible. The user tries to duplicate the hidden color pattern within ten guesses. The user's guesses are usually given by typing a letter or number for each color in the guess. To make this game more accessible to the motor-impaired, a menu of choices the user can make will be presented on the computer's screen, with a moving vertical arrow indicating the current menu choice which will be made if an input device is activated.

Figure 1 shows a typical layout for this game on the VIC computer's screen. The blocks for the user's ten possible guesses appear in the middle of the screen and are initially set to all white. A horizontal arrow will point to the current guess on which the user is working. The menu of choices appears at the bottom of the screen and includes blocks in each of the seven possible colors, movement left or right within the four blocks of the current guess, speeding up (+) or slowing down (-) of the menu's arrow, and requesting the computer to score the user's current guess. An advantage of a menu-driven game is that no written directions are needed to see what options are available during the game, since the choices are always visible in the menu.

The computer will score a guess in two ways, which are described at the top of the screen. Under the P-score, the computer will tell how many of the colors in the user's guess are correct colors in the right positions. The C-score will tell how many other colors are correct, but in the wrong positions. When the two scores add up to four, the user will have identified all of the colors in the hidden pattern. If the P-score is exactly four, then their positions are correct as well, and the game ends. Each time a P-score occurs, a whistle sound will be heard as an audible reward.

When the game is over, at the top of the screen will appear a score, which is inversely related to the number of guesses used to successfully duplicate the hidden pattern. The score ranges from a low score of zero, if not guessed within ten tries, to a top score of ten, if guessed in one try. The user's best score is also recorded at the top of the screen.

When the program is run, a horizontal arrow will point to the first row of white blocks which the user will be filling with his/her first guess. The first block of this row will be flashing to indicate that the user's response will be with respect to this block. A moving vertical arrow will point in turn to each of the possible responses the user can make from the menu. Program 1 assumes a joystick is attached to the VIC, and that the user will push the joystick button to indicate a response.

The program can be changed to permit the use of other means of input that may be more suitable to the needs of a particular handicap. Even sounds could be used in place of the colors so that a blind person could also participate, though fewer choices and a review option might be needed in this case as well. Lines 1040, 1080, and 241 need to be changed so that any activity on the joystick will indicate a user's response. (However, joystick movement to the right will not be picked up by this routine. Change the = 158 in lines 1040 and 1080 to <> 190, and change line 241 to = 190 instead of <> 158.) To change it so that any activity on a device attached to the user port will indicate a user's response, change the 37139 in line 9 to 37138. Also change the = 158 in lines 1040 and 1080 to <>255, and the <>158 in line 241 becomes = 255. Table 1 contains a description of the program's variables so that the program's logic will be easier to follow.

Try converting some of your favorite games to a menu-driven approach for alternative input. In future columns, the rest or our series on developing a communications program will provide additional techniques in this area.

The Delmarva Computer Club
P.O. Box 36
Wallops Island, VA 23337

Figure 1.

Table 1.

37139 sets the data direction register for the joystick. 36879 sets the screen to a cyan border with a black background. 36878 sets the volume for sound.
Line 4DE controls the time delay for the arrow moving through the menu. Note: After a selection is made, the arrow pauses again at that selection, thereby allowing immediate multiple selections of a menu item.
Line 5C() contains the color codes for the menu blocks.
Lines 9, 10VI, V2, and PL control spacing and positioning within the menu for the vertical arrow.
Line 20Draws ten rows, each with four white blocks.
Line 22H() contains the computer's hidden color pattern.
Lines 24,26Print the menu.
Line 30At the start of the game, a horizontal arrow points at the first row of white blocks. L contains the screen line for the current guess row of blocks.
Line 40P indicates which block in the current guess row will flash. G() contains the user's guess, which is preset to all white.
Line 50B contains the color map location for the screen location of the flashing block; S is the screen location of the flashing block.
Line 75Looks for a SCORE response.
Line 80On a LEFT response, moves the flashing to the next block on the left in the current guess row, as long as it isn't already the leftmost block.
Line 90On a RIGHT response, moves the flashing to the next block on the right in the current guess row, as long as it isn't already the rightmost one.
Lines 100–110Set the flashing block in the cur­rent guess row to the selected color.
Line 120Indicates the next block to the right will be the next block to flash, if not already at the rightmost block in the current guess row.
Line 140K() is a copy of the hidden pattern and will be used for scoring.
Line 150–170Y counts the P-score, which is the number of matches in both position and color.
Lines 171–175Whistle sound for each P-score.
Lines 180–190B counts the C-score, which is the number of matches only in color.
Line 195Checks for end of game by a correct guess.
Line 200Checks for end of game by running out of guesses.
Line 210Points to the next guess row.
Lines 220–230Reveal the hidden pattern.
Lines 222–229Update the score and top score.
Lines 240–242Wait for the user to respond before starting a new game.
Line 1000V contains the current menu item number. VL contains the screen location of the current menu item.
Line 1020Positions the vertical menu arrow.
Line 1030–1060Flash the current block in the guess row and delay the arrow at the current menu item.
Line 1040Looks for a user's response on the joystick button.
Line 1080Waits for the user to release the joy­stick button in order to eliminate a "keyboard-bounce" type problem.
Lines 1089–1110Code menu item's function with respect to the arrow's position.