TweetFollow Us on Twitter

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)
outsiderect=(Mousx<0 OR Mousx>300 OR Mousy<0 OR Mousy>270)
UNTIL FN BUTTON AND NOT (outsiderect)
WINDOW CLOSE 2
RETURN

“FileMenu”
SELECT Menuitem
 CASE 1
 GOSUB “New”
 CASE 2
 GOSUB “Quit”
END SELECT
RETURN

“Quit”
‘Release all resource handles
CALL RELEASERESOURCE(QHndl&)
CALL RELEASERESOURCE(DHndl&)
CALL RELEASERESOURCE(NHndl&)
CALL RELEASERESOURCE(PHndl&)
CALL RELEASERESOURCE(THndl&)
CALL RELEASERESOURCE(MHndl&)
END

“New”
RANDOMIZE TIMER
Amount!=RND(100)*.01
Add=True
NumOfQ%=0
NumOfD%=0
NumOfN%=0
NumOfP%=0
Total!=0
GOSUB “Display Amount”
GOSUB “Display Total”
GOSUB “Draw Display”
BUTTON 1,2
BUTTON 2,1
RETURN

“DialogEvent”
Dilg=DIALOG(0)
SELECT Dilg
 CASE 5
 RefWin=DIALOG(5)
 ‘Get window to refresh
 WINDOW 1
 GOSUB “Display Amount”
 GOSUB “Draw Page”
 CASE 1
 Buttonpressed=DIALOG(1)
 BUTTON Buttonpressed,2
 LONG IF Buttonpressed=1
 BUTTON 2,1
 Add=True
 XELSE
 BUTTON 1,1
 Add=False
 END IF
END SELECT
RETURN

“Display Amount”
 TEXT 3,24,1,0
 PICTURE (60,50),THndl&
 CALL MOVETO (130,100)
 PRINT USING “$#.##”;Amount!;SPC(2)
RETURN

“Display Total”
 TEXT 2,12,1,0
 CALL MOVETO(5,285)
 PRINT NumOfQ;” Quarters, “; NumOfD;” Dimes, “;    NumOfN; “ Nickels, 
“; NumOfP;” Pennies”
 CALL MOVETO(5,300)
 PRINT “Total:”;USING “$#.##”;Total!
 ‘Check for winner
 IF Total!=Amount! AND Total!<>0 THEN GOSUB “WinDialog”

RETURN

“WinDialog”
Temp!=Amount!
CorrectNumOfQ%=Temp!/.25
Temp!=Temp!-CorrectNumOfQ%*.25
CorrectNumOfD%=Temp!/.1
Temp!=Temp!-CorrectNumOfD%*.1
CorrectNumOfN%=Temp!/.05
Temp!=Temp!-CorrectNumOfN%*.05
CorrectNumOfP%=Temp!*100
LONG IF NumOfQ%=CorrectNumOfQ% AND NumOfD%=        CorrectNumOfD% AND 
NumOfN%=  CorrectNumOfN% AND NumOfP%= CorrectNumOfP%
 A$(1)=”TA-DA!  You Did it!”
 A$(2)=”Select ‘New Amount’ to start again”
 A$(3)=””
 A$(4)=””
 CALL PARAMTEXT(A$(1),A$(2),A$(3),A$(4))
 Response%=FN ALERT(1,0)
XELSE
 A$(1)=”Nice Try!”
 A$(2)=”You have too many coins!”
 A$(3)=”You should have: “+ STR$(CorrectNumOfQ%)+ “ Quarters, “ +STR$(CorrectNumOfD%)+ 
“ Dimes,”
 A$(4)=STR$(CorrectNumOfN%)+” Nickels, “+   STR$(CorrectNumOfP%)+” Pennies”
 CALL PARAMTEXT(A$(1),A$(2),A$(3),A$(4))
 Response%=FN ALERT(1,0)
END IF
Amount!=0
BUTTON 1,0
BUTTON 2,0
RETURN

“TooMuchDialog”
 A$(1)=”Adding that coin will give you “+ USING  “$#.##”;Total!
 A$(2)=”Try a different coin!”
 A$(3)=” “
 A$(4)=” “
 CALL PARAMTEXT(A$(1),A$(2),A$(3),A$(4))
 Response%=FN ALERT(1,0)
RETURN

“No More Coins”
 A$(1)=”Sorry, You don’t have any more “+Coin$
 A$(2)=” “
 A$(3)=” “
 A$(4)=” “
 CALL PARAMTEXT(A$(1),A$(2),A$(3),A$(4))
 Response%=FN ALERT(1,0)
RETURN

“Get Coin Resources”
 QHndl&=FN GETNAMEDRESOURCE(  CVI(“PICT”),”Quarter”)
 CALL LOADRESOURCE(QHndl&)
 DHndl&=FN GETNAMEDRESOURCE(  CVI(“PICT”),”Dime”)
 CALL LOADRESOURCE(DHndl&)
 NHndl&=FN GETNAMEDRESOURCE(  CVI(“PICT”),”Nickel”)
 CALL LOADRESOURCE(NHndl&)
 PHndl&=FN GETNAMEDRESOURCE(  CVI(“PICT”),”Penny”)
 CALL LOADRESOURCE(PHndl&)
 THndl&=FN GETNAMEDRESOURCE(  CVI(“PICT”),”Tag”)
 CALL LOADRESOURCE(THndl&)
 MHndl&=FN GETNAMEDRESOURCE(  CVI(“PICT”),”Professor Mac”)
 CALL LOADRESOURCE(MHndl&)
RETURN

“Draw Page”
 PICTURE (400,0),QHndl&
 PICTURE (406,78),DHndl&
 PICTURE (400,138),NHndl&
 PICTURE (406,220),PHndl&
 CALL MOVETO(385,0)
 CALL PENSIZE(2,2)
 CALL LINETO(385,340)
 CALL MOVETO(0,135)
 CALL LINETO(385,135)
 CALL PENNORMAL
 PICTURE (0,0),MHndl&
 CALL MOVETO(60,40)
 TEXT 2,18,0,0
 PRINT “Professor Mac’s Coin Game”
“Draw Display”
 CALL ERASERECT(Displayrect(0))
 IF NumOfQ>0 THEN PICTURE (0,140),QHndl&
 IF NumOfD>0 THEN PICTURE (100,140),DHndl&
 IF NumOfN>0 THEN PICTURE (200,140),NHndl&
 IF NumOfP>0 THEN PICTURE (300,140),PHndl&
RETURN

“MouseEvent”
IF Amount!=0 THEN FLUSHEVENTS:RETURN
CALL GETMOUSE(Mousy)
LONG IF (FN PTINRECT(Mousy,Qrect%(0)))
 LONG IF Add=True
 Total!=Total!+.25
 NumOfQ=NumOfQ+1
 GOSUB “Draw Display”
 XELSE
 LONG IF NumOfQ-1<0
 Coin$=”Quarters!”
 GOSUB “No More Coins”
 XELSE
 NumOfQ=NumOfQ-1
 Total!=Total!-.25
 IF Total!<0 THEN Total!=Total!+.25
 GOSUB “Draw Display”
 END IF
 END IF
 LONG IF Total!>Amount! 
 GOSUB “TooMuchDialog”
 Total!=Total!-.25
 NumOfQ=NumOfQ-1
 END IF
 GOSUB “Display Total”
END IF
LONG IF FN PTINRECT(Mousy,Drect(0))
 LONG IF Add=True
 Total!=Total!+.1
 NumOfD=NumOfD+1
 GOSUB “Draw Display”
 XELSE
 LONG IF NumOfD-1<0
 Coin$=”Dimes!”
 GOSUB “No More Coins”
 XELSE
 NumOfD=NumOfD-1
 Total!=Total!-.1
 IF Total!<0 THEN Total!=Total!+.1
 GOSUB “Draw Display”
 END IF
 END IF
 LONG IF Total!>Amount! 
 GOSUB “TooMuchDialog”
 Total!=Total!-.1
 NumOfD=NumOfD-1
 END IF
 GOSUB “Display Total”
END IF
LONG IF FN PTINRECT(Mousy,Nrect(0))
 LONG IF Add=True
 Total!=Total!+.05
 NumOfN=NumOfN+1
 GOSUB “Draw Display”
 XELSE
 LONG IF NumOfN-1<0
 Coin$=”Nickels!”
 GOSUB “No More Coins”
 XELSE
 NumOfN=NumOfN-1
 Total!=Total!-.05
 IF Total!<0 THEN Total!=Total!+.05
 GOSUB “Draw Display”
 END IF
 END IF
 LONG IF Total!>Amount! 
 GOSUB “TooMuchDialog”
 Total!=Total!-.05
 NumOfN=NumOfN-1
 END IF
 GOSUB “Display Total”
END IF
LONG IF FN PTINRECT(Mousy,Prect(0))
 LONG IF Add=True
 Total!=Total!+.01
 NumOfP=NumOfP+1
 GOSUB “Draw Display”
 XELSE
 LONG IF NumOfP-1<0
 Coin$=”Pennies!”
 GOSUB “No More Coins”
 XELSE
 NumOfP=NumOfP-1
 Total!=Total!-.01
 IF Total!<0 THEN Total!=Total!+.01
 GOSUB “Draw Display”
 END IF
 END IF
 LONG IF Total!>Amount! 
 GOSUB “TooMuchDialog”
 Total!=Total!-.01
 NumOfP=NumOfP-1
 END IF
 GOSUB “Display Total”
END IF
DO:UNTIL NOT (FN BUTTON)
FLUSHEVENTS
RETURN

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Latest Forum Discussions

See All

How to evolve Eevee in Pokemon GO
By now, almost everyone should be hip to how to evolve Pokemon in Pokemon GO (and if not, there's a guide for that). Just gather enough candy of the appropriate type, feed them all to the Pokemon, and evolution happens. It's a miracle that would... | Read more »
CSR Racing 2: Guide to all game modes
It might not seem like there are all that many ways to go fast in a straight line, but CSR Racing 2 begs to differ. [Read more] | Read more »
Bulb Boy (Games)
Bulb Boy 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Multi-award winning 2D point & click horror adventure about a boy with a glowing head. | Read more »
5 top free emoji keyboard apps
If we're not at peak emoji yet as a society, it feels like we definitely should be. The emoji concept has gone far beyond what anyone in Japan could have envisioned when the people there unleashed it on an unsuspecting world, but the West has... | Read more »
How to unlock more characters in Disney...
One of the big charms of Disney Emoji Blitz is seeing a wide variety of beloved Disney and Pixar characters transformed into smiling emojis. Even someone like the sneaky Randall from Monsters Inc., who probably never cracked a smile on film, is... | Read more »
Cubway (Games)
Cubway 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Cubway is a journey with an abstract story of lifecycle of rebirth, called Samsara. Guide the cube through the long way full of dangers... | Read more »
Colorcube (Games)
Colorcube 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Turn pieces and blend colours in this minimal yet visually stunning puzzler.Over 200 handcrafted and challenging levels. Features... | Read more »
Doodle God Griddlers (Games)
Doodle God Griddlers 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: | Read more »
Crusader Kings: Chronicles (Games)
Crusader Kings: Chronicles 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Crusader Kings: Chronicles is an interactive text based game that puts you in the shoes of Guy de Rose as you make... | Read more »
Roads of Rome: New Generation (Games)
Roads of Rome: New Generation 1.0 Device: iOS Universal Category: Games Price: $5.99, Version: 1.0 (iTunes) Description: | Read more »

Price Scanner via MacPrices.net

Free iOS Business App notably* Helps Service...
PayStudio Inc. has introduced their new business app notably* 1.0, developed for iPhone and iPod touch. notably* was specifically developed to help service and trade professionals go digital and... Read more
27-inch iMacs on sale for $200 off MSRP
Amazon has 27″ iMacs on sale for $200 off MSRP including free shipping: - 27″ 3.3GHz iMac 5K: $2099 $200 off MSRP - 27″ 3.2GHz/1TB Fusion iMac 5K: $1799.99 $200 off MSRP - 27″ 3.2GHz/1TB HD iMac 5K... Read more
Mac Pros on sale for $200 off MSRP
B&H Photo has Mac Pros on sale for $200 off MSRP. Shipping is free, and B&H charges sales tax in NY only: - 3.7GHz 4-core Mac Pro: $2799, $200 off MSRP - 3.5GHz 6-core Mac Pro: $3799, $200... Read more
Save up to $600 with Apple refurbished Mac Pr...
Apple has Certified Refurbished Mac Pros available for up to $600 off the cost of new models. An Apple one-year warranty is included with each Mac Pro, and shipping is free. The following... Read more
Apple price trackers, updated continuously
Scan our Apple Price Trackers for the latest information on sales, bundles, and availability on systems from Apple’s authorized internet/catalog resellers. We update the trackers continuously: - 15″... Read more
13-inch 2.5GHz MacBook Pro (Apple refurbished...
Apple has Certified Refurbished 13″ 2.5GHz MacBook Pros available for $829, or $270 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 13″ 2.5GHz MacBook Pros... Read more
21-inch iMacs on sale for up to $120 off MSRP
B&H Photo has 21″ iMacs on sale for up to $120 off MSRP including free shipping plus NY sales tax only: - 21″ 3.1GHz iMac 4K: $1379 $120 off MSRP - 21″ 2.8GHz iMac: $1199.99 $100 off MSRP - 21″ 1... Read more
Charitybuzz Set to Auction Unique Apple-1 Com...
Offering an opportunity to own the computer that sparked a revolution, on Monday, July 25, leading online charity auction platform Charitybuzz will auction what is claimed to be the world’s most... Read more
MacBook Airs on sale for up to $150 off MSRP
Amazon has 11″ and 13″ MacBook Airs on sale for up to $150 off MSRP for a limited time. Shipping is free: - 13″ 1.6GHz/128GB MacBook Air (sku MMGF2LL/A): $899.99 $100 off MSRP - 13″ 1.6GHz/256GB... Read more
Apple refurbished 13-inch Retina MacBook Pros...
Apple has Certified Refurbished 13″ Retina MacBook Pros available for up to $270 off the cost of new models. An Apple one-year warranty is included with each model, and shipping is free: - 13″ 2.7GHz... Read more

Jobs Board

*Apple* Retail - Multiple Positions, Willow...
Job Description:SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Evangelist - JAMF Software (United S...
The Apple Evangelist is responsible for building and cultivating strategic relationships with Apple 's small and mid-market business development field teams. This Read more
*Apple* Solutions Consultant - APPLE (United...
Job Summary As an Apple Solutions Consultant, you'll be the link between our future customers and our products. You'll showcase your entrepreneurial spirit as you Read more
*Apple* Professional Learning Specialist - A...
Job Summary The Apple Professional Learning Specialist is a full-time position for one year with Apple in the Phoenix, AZ area. This position requires a high Read more
*Apple* Picker - Apple Hill Orchard (United...
Apple Hill Orchard, Co. Rte. 21,Whitehall, NY 9/7/16-10/228/16. Pick fresh market or processing apples Productivity of 60 boxes and 80 boxes processing fruit per Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.