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

RoboForm 8.9.0 - Password manager; syncs...
RoboForm is a password manager that offers one-click login, mobile syncing, easy form filling, and reliable security. Password Manager. RoboForm remembers your passwords so you don't have to! Just... Read more
Remotix 6.1.6 - Access all your computer...
Remotix is a fast and powerful application to easily access multiple Macs (and PCs) from your own Mac. Features: Complete Apple Screen Sharing support - including Mac OS X login, clipboard... Read more
Sibelius 2020.6 - Music notation solutio...
Sibelius is the world's best-selling music notation software for Mac. It is as intuitive to use as a pen, yet so powerful that it does most things in less than the blink of an eye. The demo includes... Read more
Bookends 13.4.2 - Reference management a...
Bookends is a full-featured bibliography/reference and information-management system for students and professionals. Bookends uses the cloud to sync reference libraries on all the Macs you use.... Read more
OmniGraffle Pro 7.16 - Create diagrams,...
OmniGraffle Pro helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use... Read more
Drive Genius 6.1.0 - $79.00
Drive Genius features a comprehensive Malware Scan. Automate your malware protection. Protect your investment from any threat. The Malware Scan is part of the automated DrivePulse utility. DrivePulse... Read more
Tor Browser 9.5 - Anonymize Web browsing...
The Tor Browser Bundle is an easy-to-use portable package of Tor, Vidalia, Torbutton, and a Firefox fork preconfigured to work together out of the box. It contains a modified copy of Firefox that... Read more
VueScan 9.7.28 - Scanner software with a...
VueScan is a scanning program that works with most high-quality flatbed and film scanners to produce scans that have excellent color fidelity and color balance. VueScan is easy to use, and has... Read more
OmniGraffle 7.16 - Create diagrams, flow...
OmniGraffle helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use Graffle to... Read more
WALTR 2 2.6.26 - $39.95
WALTR 2 helps you wirelessly drag-and-drop any music, ringtones, videos, PDF, and ePub files onto your iPhone, iPad, or iPod without iTunes. It is the second major version of Softorino's critically-... Read more

Latest Forum Discussions

See All

Star Chef 2 is a restaurant and cooking...
Star Chef 2 is the follow up to the financially successful Star Chef and it's available now for iOS and Android. 99 Games' original has reportedly pulled in over $30 million in lifetime revenue. [Read more] | Read more »
Clash Royale Tier List - Best and Worst...
To kick off Clash Royale's twelfth season, we thought it would be fun to start a new feature for the game where we rank cards. And what better cards to start with than the oh-so-rare Legendaries that can really transform the kinds of decks you can... | Read more »
Willy Jetman: Astromonkey's Revenge...
Barcelona-based developer Last Chicken Games are set to bring their game Willy Jetman: Astromonkey's Revenge to both iOS and Android on 9th July. The Metroidvania is already available on the likes of PS4, Switch and PC but now mobile folk will be... | Read more »
The 5 Best Mobile Real Time Strategy Gam...
Real-time strategy games feel like they’d be a perfect fit for mobile, but they’re trickier to pull off that you might think. The traditional mold of base-building and micro management can work on touch screens, but needs to be carefully honed so... | Read more »
Using your phone in a protest
I can't write about games today. There is a struggle happening in the streets right now and it needs everyone's attention. Here's some good info on how you can use your iOS device safely amidst a protest. | Read more »
Dungonian is a card-based dungeon crawle...
Dungonian is a card-based dungeon crawler from developer SandFish Games that only recently launched as a free-to-play title. It offers an extensive roster of playable heroes to collect and enemies to take down, and it's available right now for iOS... | Read more »
Steam Link Spotlight - Signs of the Sojo...
Steam Link Spotlight is a feature where we look at PC games that play exceptionally well using the Steam Link app. Our last entry was XCOM: Chimera Squad. Read about how it plays using Steam Link's new mouse and keyboard support over here. | Read more »
Steampunk Tower 2, DreamGate's sequ...
Steampunk Tower 2 is a DreamGate's follow up to their previous tower defence game. It's available now for both iOS and Android as a free-to-play title and will see players defending their lone base by kitting it out with a variety of turrets. [... | Read more »
Clash Royale: The Road to Legendary Aren...
Supercell recently celebrated its 10th anniversary and their best title, Clash Royale, is as good as it's ever been. Even for lapsed players, returning to the game is as easy as can be. If you want to join us in picking the game back up, we've put... | Read more »
Pokemon Go Fest 2020 will be a virtual e...
Niantic has announced that Pokemon Go Fest will still take place this year although understandably it won't be a physical event. Instead, it will become a virtual celebration and is set to be held on 25th and 26th July. [Read more] | Read more »

Price Scanner via MacPrices.net

Amazon has Apple Watch Series 5 models on sal...
Amazon has Apple Watch Series 5 models on sale for $100 off Apple’s MSRP this weekend. Shipping is free. These are the same Apple Watch models sold by Apple in their retail and online stores, and... Read more
Take $200 off the new 2020 13″ 1.4GHz/512GB M...
B&H Photo has the new 2020 13″ 1.4GHz/512GB Space Gray MacBook Pro on sale today for $1299 including free expedited shipping. Their price is $200 off Apple’s MSRP, and it’s the cheapest price... Read more
Apple restocks 27″ iMacs, Certified Refurbish...
Apple has restocked Certified Refurbished 2019 27″ iMacs starting at $1529 and up to $350 off the cost of new models. Apple’s one-year warranty is standard, shipping is free, and each iMac features a... Read more
Apple’s new 2020 13″ 4-Core MacBook Airs on s...
B&H Photo has Apple’s new 2020 13″ 4-Core MacBook Airs on sale today for $100 off Apple’s MSRP, only $1199. Expedited shipping is free to many addresses in the US. The MacBook Airs are the same... Read more
New Verizon promo: $150 off any Apple Watch w...
Verizon is offering $150 off any Apple Watch when purchased alongside an iPhone through June 10, 2020. They’re also offering up to $100 on any Apple Watch trade-in. Here are the details: “Get $150... Read more
Last year’s 13″ 2.4GHz MacBook Pros are avail...
Apple has Certified Refurbished 2019 13″ 2.4GHz/256GB 4-Core Touch Bar MacBook Pros available for $1359, $440 off original MSRP. Apple’s one-year warranty is included, shipping is free, and each... Read more
Apple’s new 2020 13″ MacBook Pros on sale for...
Apple reseller Abt Electronics has new 2020 13″ MacBook Pros on sale today for up to $140 off MSRP, starting at $1208. Shipping is free, and most configurations are in stock today. Note that Abt’s... Read more
Apple CEO Reacts To Nationwide Protests Over...
NEWS: 06.03.20 – With the recent death of a black man in the custody of a white police officer igniting outrage among Americans from all walks of life, which resulted in protests and civil unrest... Read more
At up to $420 off MSRP, these Certified Refur...
Apple has Certified Refurbished 2019 16″ MacBook Pros available for up to $420 off the cost of new models, starting at $2039. Each model features a new outer case, shipping is free, and an Apple 1-... Read more
Apple restocks refurbished 3rd generation 12....
Apple restocked select 3rd generation 12.9″ WiFi iPad Pros starting at only $699 and up to $330 off original MSRP. Each iPad comes with a standard Apple one-year warranty, outer cases are new, and... Read more

Jobs Board

Blue *Apple* Cafe Student Worker - Fall - P...
…to enhance your work experience. Student positions are available at the Blue Apple Cafe. Employee meal discount during working hours is provided. Duties include food Read more
*Apple* Architect - SAIC (United States)
**Description** We are currently seeking a motivated, career and customer oriented Apple Architect to join our team in Washington, DC to begin an exciting and Read more
*Apple* Support Engineer - SAIC (United Stat...
**Description** We are currently seeking a motivated, career and customer oriented Apple Support Engineer to join our team in Washington, DC to begin an exciting and Read more
Perioperative RN - ( *Apple* Hill Surgical C...
Perioperative RN - ( Apple Hill Surgical Center) Tracking Code 60593 Job Description Monday - Friday - Full Time Days Possible Saturdays General Summary: Under the Read more
Senior Practice Manager - *Apple* Hill Eye...
Senior Practice Manager - Apple Hill Eye Center Tracking Code 61713 Job Description Apple Hill Medical Center General Summary: Under general supervision, manages Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.