Teaching
Volume Number: 3
Issue Number: 12
Column Tag: Basic School
Games for Teaching Children 
By Dave Kelly, MacTutor Editorial Board
Happy 3rd Birthday MacTutor!!! I can hardly believe that MacTutor has been
around for a whole 3 years. The Macintosh has certainly come a long way in that time.
All the way from a puny 128K RAM model to the gobs of memory available for the
Macintosh II. Let’s celebrate!
Every celebration should not be complete with out friends. First I thank all of
you readers that have supported MacTutor these past years. But all of this would not
be possible if not for the vision of one special, although fictitious character, Professor
Mac. For those of you that have not met the Professor, turn to your front cover and
take a look just in front of the big ‘M’ in MacTutor. The Professor started out teaching
you Apple II Pascal in the “Apple Shoppe” (also published by David Smith). Since that
time we’ve seen him popping in and out of the covers of MacTutor. (see Best of
MacTutor Vol 1, pg. 1, 8, 13, 61, 71, 92, 107, 313; Best of MacTutor Vol 2, pg. 2,
20, 42, 357, 371-375; not to mention the numerous times the Professor appears at
the end of each and every MacTutor column.
A few days ago, the Professor reminded me that I haven’t written any games
lately. So what should the game do? Well, my oldest son, who was 3 (now age 6) when
we started up MacTutor, is now in first grade. Thanks to vol. 1 no. 1, Kevin now knows
his ABC’s. (see Best of MacTutor Vol 1, pg. 298). I guess besides learning to read the
next thing that first graders learn to do is count. So a counting game!!!
Last week Kevin brought home some homework that was just type of game I was
looking for. The problems showed a price tag with a price. To solve the problem, he
had to cut and paste pictures of coins under the price tag to equal the amount on the tag.
So Professor Mac’s coin game was born. The object of the game is to click on the fewest
possible number of coins to equal the amount of money shown in the price tag. If too
many coins are selected the answer is not wrong, but the program lets you know that
you could have done it with fewer coins. If you know that you have too many coins you
may subtract coins by clicking the radio button named subtract and clicking on the coin
you want to remove. The game does require some ability to read. Children that don’t
know their numbers will have problems with this. At least it passed my kid test
Kevin loved it.
Fig. 1 Our coin game display
On the technical side: the program doesn’t have any real surprizes technically.
However, there are a few annoyances that appear to be ZBasic’s fault. In fact,
sometimes I wish I was writing in Pascal or C. The blow by blow description follows:
There are four PICT resources, a quarter, a dime, a nickel, and a penny, which
are used. These resources should be installed in the application itself in order to work.
Creation of the coins was done via Thunderscan® by clipping the scanned pictures into
a resource file using ResEdit. The “Get Coin Resources” subroutine gets the handles to
the resources by using the ROM function GETNAMEDRESOURCE. Each resource is then
loaded into memory (from the disk). Each coin is displayed on right side of the screen
to give you something to click on to select the coins in the game. The ZBasic PICTURE
statement will display the PICT resources by using the handle for the resource which
was retrieved with GETNAMED RESOURCE. The active area to select each coin is
marked by the Qrect, Drect, Nrect and Prect rectangles. Here is where the first
problem shows up. The SETRECT call is used to set up the coordinates of each
rectangle. But the SETRECT parameters are mixed up. Inside Macintosh shows SetRect
parameters as being left, top, right, bottom in that order (see IM page I-174), but the
ZBasic manual says the ZBasic parameters for SETRECT are Top, Left, Bottom, Right.
The call (fortunately) works like IM; there is a typo in the ZBasic manual, pg. E-169.
The event loop is established using menu, dialog and mouse events in the same
way that has been demonstrated in other programs. There are a few funnies that show
up though. In earlier versions of the program, when I was still working on it, I used
MOUSE ON, MOUSE OFF to control the About menu dialog. The problem was that when
the About dialog was closed the screen erased itself just after the refresh routine did
its refresh. This left a blank where the dialog window was. The screen had been
updated, but something in ZBasic was trying to do its own refresh (I guess?). When I
turned off all the event trapping for the About routine, the screen refreshed properly.
This appears to be one of those little obscure bugs in ZBasic that nobody has fixed yet.
This one problem turned what should have been a few minutes of programming into
several hours trying to figure out what was going on. The GETMOUSE routine turned
out to be just the solution. I get the feeling that I should be writing all my code using
the toolbox calls and leave the ZBasic routines to the cockroaches (or other ‘bugs’).
‘Professor Mac’s Coin Game
‘By Dave Kelly
‘ ©MacTutor, DEC.1987
‘ For ZBasic™ version 4.0
WINDOW OFF
COORDINATE WINDOW
DEF MOUSE=-1
False=0:True=NOT False
DIM Qrect%(3), Drect%(3), Nrect%(3), Prect%(3), Displayrect%(3)
DIM 63 A$(4)
Mousy=0:’Set up point record
Mousx=0:’for mouse location
WINDOW 1,””,(2,22)-(510,335),4
CALL SETRECT(Qrect(0),388,0,510,80)
CALL SETRECT(Drect(0),388,81,510,140)
CALL SETRECT(Nrect(0),388,141,510,215)
CALL SETRECT(Prect(0),388,216,510,310)
CALL SETRECT(Displayrect(0),0,140,385,250)
BUTTON 1,0,”Add Coins”,(300,80)-(375,100),2
BUTTON 2,0,”Subtract”,(300,110)-(375,130),2
APPLE MENU “About Professor Mac’s Coins”
MENU 1,0,1,”File”
MENU 1,1,1,”New Amount/N”
MENU 1,2,1,”Quit/Q”
EDIT MENU 2
Amount!=0
GOSUB “Get Coin Resources”
GOSUB “Draw Page”
ON MENU GOSUB “MenuEvent”
ON DIALOG GOSUB “DialogEvent”
ON MOUSE GOSUB “MouseEvent”
MENU ON:DIALOG ON:MOUSE ON
DO
UNTIL TheEnd
MENU OFF:DIALOG OFF:MOUSE OFF
END
“MenuEvent”
Menunumber=MENU(0)
Menuitem=MENU(1)
MENU
SELECT Menunumber
CASE 255
GOSUB “AppleMenu”
GOSUB “Display Amount”
GOSUB “Draw Page”
CASE 1
GOSUB “FileMenu”
CASE 2
END SELECT
RETURN
“AppleMenu”
WINDOW 2,””,(100,40)-(415,310),-2
TEXT 0,12
PRINT @(5,1)”Professor Mac’s Coin Game”
PRINT @(10,2)”by”
PRINT @(8,3)”Dave Kelly”
PRINT @(7,4)”©MacTutor, 1987
PRINT @(7,5)”ZBasic version 4.0
PRINT @(3,8)”Professor Mac’s MacTutor Store will”
PRINT @(3,9)”display prices on the price tag.”
PRINT @(3,10)”The object is to select (by clicking)”
PRINT @(3,11)”the fewest number of coins to equal”
PRINT @(3,12)”the price. Hopefully this may be of”
PRINT @(3,13)”assistance to children first learning”
PRINT @(3,14)”about money.”
DO
CALL GETMOUSE(Mousy)