TweetFollow Us on Twitter

Simon Game
Volume Number:4
Issue Number:7
Column Tag:Basic School

True Basic Plays the Simon Game

By Dave Kelly, MacTutor Editorial Board

The new and improved version of True Basic (ver. 2.01) has just recently started shipping. Some of the new features include: built in support for full color and PICT format images, 68881 coprocessor support, and a more structured environment using modules and workspaces. True Basic also now includes the Runtime package (which used to cost a few hundred dollars), but they are packaging the Macintosh Developer’s Toolkit separately. The toolkit contains all of the libraries which are essential for making “real” Macintosh programs (menus, windows, controls etc). It is obvious to any dedicated Macintosh developer that this package should have been included with the True Basic “Basic” package. However, it is true that when True Basic is sold to a school as a training tool, there is not much need for the Macintosh libraries.

This month, I am not going to do an in depth analysis of True Basic 2.01 (Basic Wars, part ??). I’ll save that for next month. I would like to show off some of True Basic’s new features with respect to Macintosh II color. I’m still impressed by Mac II’s color!

True Basic has its own unique set of statements for using color. The SET COLOR n statement (where n is a number from 0 to 255) sets the drawing pen to the color selected. Then a PLOT or some other graphics command may be given to operate in the selected color. Selecting color is not really very unique. ZBasic uses a similar statement (COLOR=n) to select colors.

The Palette Manager is responsible for monitoring and establishing the color environment on the Mac II. The system provides a default palette of colors which applications may use as desired. The default palette is a set of standard colors which may be selected. Color Quickdraw will match the selected color as best as it can, but there may be times when more shades of a particular color are desired than are available in the default palette.

Most video devices including the Mac II video card use an indexed color model. Each pixel value in the video device’s memory corresponds to an indexed value in the color table. The color display card uses the RGB value found in the look up table to display the desired color. There are several advantages to using this indexed display method. One is that it is faster. Also, it allows color animation to be used. In color animation, the index value is changed to change display colors; the pixel color itself is not changed. You can especially see the effects of this when using Pixel Paint or Modern Artist and changing the palette using the application. Another way to see the effects of changing the palette is by using the Colorizer software, by Palomar. This is recommended to any Mac II user that wants to make better use of color on the Mac II. [The Colorizer and the PICT Dective are available from MacTutor’s Mail Order Store at the back of this issue. -Ed]

Fig. 1 Our Simon Game in True Basic (This is in color on the Mac II!)

Color Palette Manipulation

True Basic allows you to change colors in the color palette. The SET COLOR MIX (x) r,g,b statement sets the color x to the color specified by the red, green, blue values given by r,g and b. In True Basic the values of r,g and b are from 0 to 1 (whereas the hardware is looking for values from 0 to 65535). For the user it is much easier to think in terms of 0 to 1 than 0 to 65535. A SET COLOR MIX (5) .25,0,0 would change color 5 to 25% of the full red value and no green and blue. The number of distinct intensities available on your Mac II depends on the number of colors available. You may use ASK MAX COLOR to determine how many of the colors are available out of the total 256 colors (assuming you can display 256 colors). Actually ASK MAX COLOR returns n-3 colors because some of the colors are already in use by the system. ASK MAX COLOR will only let you know the maximum possible number of colors. SET COLOR MIX is ignored on black and white systems.

Using color is fun as you can see from this months program (see the black and white figure 1; on the Mac II, this Simon game is in color with the background an animated palette). The theme I selected is based on the Simon game (Milton Bradley) which I’m sure you have all seen before. There are a few things which must be done to set up the program if you are starting from scratch. First go to a paint program (color is preferred, but not necessary) and create the main PICT for the game as shown here in figure 2.

Fig. 2 PICT for the Simon Game

It doesn’t matter what colors are used or even the shape of the colored areas. The program will do a fill (FLOOD x,y statement in True Basic) and fill in the correct colors as long as the size of the PICT rectangle remains the same size. If the same color is used as the original, the SET COLOR MIX statement needs to use a different color because the FLOOD statement fills the area till it finds a change in color or it finds the same color as the one being use to fill the area.

Next the PICT should be stored in the clipboard and then run the ‘Save Clip’ program. The purpose of this program is to convert the clipboard PICT file into a disk PICT file. True Basic could read the PICT file direct, but this way we know that we have only selected the actually PICT and not some of the areas surrounding it. When the ‘Save Clip’ program asks for a filename, the name of the file as used in the main program should be used (in this case ‘Prof Says.PICT’ is the filename).

{1}
! Save Clip
! This program will save the contents of the clipboard to a file
LIBRARY “Mactools*”
LIBRARY “PictLib*”
DECLARE DEF MacPutFile$
LET doneflag=0
DO until doneflag=1
   CALL Read_clipboard(“PICT”,s$)
   LET filename$=MacPutFile$(50,50,”Enter Filename to save as ”,””,””)
   IF filename$<>”” THEN
      CALL Write_pictfile(filename$,s$)
      PRINT “Do another?”;
      GET KEY Answer
      IF Answer<>ord(“Y”) OR Answer<>ord(“y”) THEN LET doneflag=1
   ELSE
      LET doneflag=1
   END IF
LOOP
END

The main program requires the use of the MacTools and PictLib Libraries. These are provided with the True Basic package. To help True Basic find the libraries (in case they are moved to a strange place) the ALIAS statement should be used. The manual is not too clear on this, but ALIAS statements should be run from a file ‘TB Startup’ automatically when True Basic is run. This is a satisfactory solution to fix the HFS problems that True Basic 1.0 had.

The next thing that might be different for you is the way that True Basic specifies the window (or screen) coordinates. No matter what kind of computer True Basic is being run on, the coordinates are the same. The coordinates start with 0,0 in the bottom left corner of the screen and go to 1,1 in the top right corner. Then using the SET WINDOW statement any coordinate system may be mapped to the current window. A smaller portion of the screen may be partitioned off to act as a kind of clipping region for text. The PictStuff library seems to only use screen coordinates and doesn’t pay much attention to the location of the window. However, by using the CALL Set_Frame statement, the PICT graphics may be displayed anywhere you want. The OPEN #1:screen left, right, bottom, top statement is set up for the Apple RGB Monitor. These values may have to be adjusted if used on other size monitors.

Of course, True Basic statements are used all the way through the program except for the MacTools calls which are used mostly used to display text. A few of the other Macintosh things which are included in the MacTools Library are:

MacPenSize(width,height)
MacPenMode(mode)
MacTextFont(font)
MacTextFace(style$)
MacTextMode(mode)
MacTextSize(size)
MacTextBox(left,right,bottom,top,s$,just$)
MacSpaceExtra(extra)
MacGetFontInfo(ascent,descent,widmax,leading)
MacGetFile$(h,v,type$,button$)
MacPutFile$(h,v,pr$,iname$,button$)
MacSysBeep(duration)

also other commands for drawing ovals and rectangles.

I am somewhat disappointed that more of the Macintosh Toolbox is not included (built in) to the True Basic system. Of course the Developer Toolkit should include the rest of the Macintosh ROM world, but it would be nice to have it integrated. [We are still waiting for delivery of the Developer Toolkit. True Basic is sending return postcards to order the library but as yet we have not seen it. -Ed] If you use any library a lot, you may load it when you startup and have it resident in memory so at least there is a way to simplify the system. I hope to be able to review the Developer Toolkit when it is released. I will have more to say about True Basic next month.

{2}
! Professor Mac Says 
! By David Kelly
! ©MacTutor, 1988
! With special thanks to Milton Bradley Co.
! For their “Simon” Game

LIBRARY “Mactools*”! MacStuff Library
LIBRARY “PictLib*” ! PICTStuff Library
DECLARE DEF MacGetFile$
DIM notes(31)
RANDOMIZE
LET skilllevel=8 ! Set up levels
LET level=1
SET BACKGROUND COLOR 10 !  Get a Background color
OPEN #1:screen .25,.67,.165,.75    ! open a section of screen
WINDOW #1 ! and use it as a window
SET WINDOW 0,1,0,1
ASK SCREEN a,b,c,d
CALL set_frame(a,b,c,d)

LET filename$=”Prof Says.PICT”! Get the PICT resource
IF filename$<>”” THEN
 CALL Read_pictfile(filename$,s$)
 CALL Draw_string(s$,1)
ELSE
 PRINT “Prof Says.PICT file not found!”
END IF

! Set up the main screen
CALL SetRed
FLOOD .3,.7 ! Fill the shape with Red
CALL SetBlue
FLOOD .7,.7 ! Fill the shape with Blue
CALL SetGreen
FLOOD .3,.3 ! Fill the shape with Green
CALL SetYellow
FLOOD .7,.3 ! Fill the shape with Yellow
! Turn off all shapes
CALL darkred
CALL darkblue
CALL darkgreen
CALL darkyellow
ASK WINDOW a,b,c,d
BOX KEEP a,b,c,d in None$ ! Save PICT so it can be             
 ! restored later
CALL MacTextFont(2)! Get New York font
SET TEXT JUSTIFY “center”,”half”
DO ! Start the Main program loop
 SET COLOR MIX (0) rnd,rnd,rnd   ! change background color
 CALL SetButtons(level)
 DO
 LET Animationcount=Animationcount+1
 IF Animationcount>=500 then
 SET COLOR MIX (0) rnd,rnd,rnd! change the background color
 LET Animationcount=0
 END IF
 GET MOUSE x,y,s ! Check for mouse press
 IF s>=1 then
 GET POINT x,y   ! Get the mouse press
 LET result=0
 CALL PtInRect(x,y,.12,.295,.7,.8,result)    ! Level 1
 IF result=1 then
 LET skilllevel=8
 LET level=1
 CALL SetStartGameButton(Level)
 END IF
 LET result=0
 CALL PtInRect(x,y,.32,.495,.7,.8,result)    ! Level 2
 IF result=1 then
 LET skilllevel=14
 LET level=2
 CALL SetStartGameButton(Level)
 END IF
 LET result=0
 CALL PtInRect(x,y,.505,.680,.7,.8,result)   ! Level 3
 IF result=1 then
 LET skilllevel=20
 LET level=3
 CALL SetStartGameButton(Level)
 END IF
 LET result=0
 CALL PtInRect(x,y,.705,.880,.7,.8,result)   ! Level 4
 IF result=1 then
 LET skilllevel=31
 LET level=4
 CALL SetStartGameButton(Level)
 END IF
 LET result=0
 CALL PtInRect(x,y,.3,.7,.05,.15,result)
 IF result=1 then
 ! Quit Routine
 SET COLOR “White”
 BOX AREA 0,1,0,1
 SET COLOR “Black”
 BOX LINES 0,1,0,1
 SET COLOR “Blue”
 CALL MacTextSize(24)
 PLOT TEXT, AT .5,.6:”Thank you for”
 PLOT TEXT, AT .5,.4:”Reading MacTutor™”
 STOP
 END IF
 LET result=0
 CALL PtInRect(x,y,.3,.7,.2,.3,result)
 IF result=1 then
 ! Play the Game
 BOX SHOW none$ at 0,0
 LET x=0
 LET y=0
 LET numberofnotes=1
 LET tempo=100
 DO until numberofnotes=skilllevel
 CALL PlaySequence(numberofnotes,tempo, notes())
 FOR i=1 to numberofnotes
 SET COLOR MIX (0) rnd,rnd,rnd
 GET POINT x,y
 CALL buttonpress(x,y,selection)
 IF selection<>notes(i) then
 CALL MacSysBeep(500)
 CALL MacSysBeep(500)
 CALL MacSysBeep(500)
 EXIT DO
 END IF
 NEXT i
 LET numberofnotes=numberofnotes+1
 LET tempo=tempo+i*10
 PAUSE 1
 LOOP
 CALL SetButtons(level)
 END IF
 END IF
 LOOP
LOOP
END

SUB SetButtons(GameLevel)     ! Set Game Buttons
 CALL MacTextSize(14)
 SET COLOR “white”
 BOX AREA .3,.7,.05,.15   ! Quit Game Button
 BOX AREA .12,.295,.7,.8  ! Level 1 Button
 BOX AREA .32,.495,.7,.8  ! Level 2 Button
 BOX AREA .505,.680,.7,.8 ! Level 3 Button
 BOX AREA .705,.880,.7,.8 ! Level 4 Button
 SET COLOR “Black”
 BOX LINES .3,.7,.05,.15  ! Quit Game Button
 BOX LINES .12,.295,.7,.8 ! Level 1 Button
 BOX LINES .32,.495,.7,.8 ! Level 2 Button
 BOX LINES .505,.680,.7,.8  ! Level 3 Button
 BOX LINES .705,.880,.7,.8! Level 4 Button
 SET COLOR “Red”
 CALL SetStartGameButton(GameLevel)
 PLOT TEXT, AT .5,.11:”Quit Game”
 CALL MacTextSize(12)
 PLOT TEXT, AT .195,.77:”1"
 PLOT TEXT, AT .4,.77:”2"
 PLOT TEXT, AT .575,.77:”3"
 PLOT TEXT, AT .825,.77:”4"
END SUB

SUB SetStartGameButton(GameLevel)  ! Set up the Start Game Button
 SET COLOR MIX (0) rnd,rnd,rnd
 CALL MacTextSize(14)
 SET COLOR “White”
 BOX AREA .1,.9,.2,.3! Start Game Button
 SET COLOR “Black”
 BOX LINES .1,.9,.2,.3  ! Start Game Button
 SET COLOR “Red”
 PLOT TEXT, AT .5,.26:”Start Game Level “ & STR$(Gamelevel)
END SUB

SUB SetNone ! Display the PICT with colors off
 BOX SHOW None$ at 0,0
END SUB

SUB SetRed
 SET COLOR MIX (13) 1,0,0
 SET COLOR 13
END SUB
SUB DarkRed
 SET COLOR MIX (13) 0,0,0
 SET COLOR 13
END SUB
SUB SetGreen
 SET COLOR MIX (14) 0,1,0
 SET COLOR 14
END SUB

SUB DarkGreen
 SET COLOR MIX (14) 0,0,0
 SET COLOR 14
END SUB
SUB SetBlue
 SET COLOR MIX (15) 0,0,1
 SET COLOR 15
END SUB
SUB DarkBlue
 SET COLOR MIX (15) 0,0,0
 SET COLOR 15
END SUB
SUB SetYellow
 SET COLOR MIX (16) .9,1,0
 SET COLOR 16
END SUB
SUB DarkYellow
 SET COLOR MIX (16) 0,0,0
 SET COLOR 16
END SUB
SUB FlashRed
 SET COLOR MIX (13) 1,0,0
 LET note$=”o5 mf ms c”
 PLAY note$
 PAUSE .5
 SET COLOR MIX (13) 0,0,0
END SUB
SUB FlashGreen
 SET COLOR MIX (14) 0,1,0
 LET note$=”o5 mf ms a”
 PLAY note$
 PAUSE .5
 SET COLOR MIX (14) 0,0,0
END SUB

SUB FlashBlue
 SET COLOR MIX (15) 0,0,1
 LET note$=”o5 mf ms >a”
 PLAY note$
 PAUSE .5
 SET COLOR MIX (15) 0,0,0
END SUB
SUB FlashYellow
 SET COLOR MIX (16) 1,1,0
 LET note$=”o5 mf ms e”
 PLAY note$
 PAUSE .5
 SET COLOR MIX (16) 0,0,0
END SUB
SUB PtInRect(x,y,left,right,bottom,top,Result)     
! See if point is in Rectangle
 IF x>left and x<right and y>bottom and y<top then
 LET Result=1
 ELSE
 LET Result=0
 END IF
END SUB

SUB Buttonpress(x,y,selection)! Handle button press
 CALL PtInRect(x,y,0,.5,.5,1,result)
 IF result=1 then LET selectedcolor=13
 CALL PtInRect(x,y,0,.5,0,.5,result)
 IF result=1 then LET selectedcolor=14
 CALL PtInRect(x,y,.5,1,.5,1,result)
 IF result=1 then LET selectedcolor=15
 CALL PtInRect(x,y,.5,1,0,.5,result)
 IF result=1 then LET selectedcolor=16
 SELECT CASE selectedcolor
 CASE 13
 CALL flashred
 LET selection=1
 CASE 14
 CALL flashgreen
 LET selection=2
 CASE 15
 CALL flashblue
 LET selection=3
 CASE 16
 CALL flashyellow
 LET selection=4
 CASE ELSE
 LET selection=0
 END SELECT
END SUB

SUB PlaySequence(numberofnotes,tempo,notes()) ! Play the notes
 LET tempo$=”t”&str$(tempo)
 PLAY tempo$
 FOR i=1 to numberofnotes
 SET COLOR MIX (0) rnd,rnd,rnd
 IF notes(i)=0 then
 LET note=int(4*rnd)+1
 ELSE
 LET note=notes(i)
 END IF
 SELECT CASE note
 CASE 1
 CALL flashred
 CASE 2
 CALL flashgreen
 CASE 3
 CALL flashblue
 CASE 4
 CALL flashyellow
 END SELECT
 LET notes(i)=note
 NEXT i
END SUB
 

Community Search:
MacTech Search:

Software Updates via MacUpdate

LooperSonic (Music)
LooperSonic 1.0 Device: iOS Universal Category: Music Price: $4.99, Version: 1.0 (iTunes) Description: LooperSonic is a multi-track audio looper and recorder that will take your loops to the next level. Use it like a loop pedal to... | Read more »
Space Grunts guide - How to survive
Space Grunts is a fast-paced roguelike from popular iOS developer, Orange Pixel. While it taps into many of the typical roguelike sensibilities, you might still find yourself caught out by a few things. We delved further to find you some helpful... | Read more »
Dreii guide - How to play well with othe...
Dreii is a rather stylish and wonderful puzzle game that’s reminiscent of cooperative games like Journey. If that sounds immensely appealing, then you should immediately get cracking and give it a whirl. We can offer you some tips and tricks on... | Read more »
Kill the Plumber World guide - How to ou...
You already know how to hop around like Mario, but do you know how to defeat him? Those are your marching orders in Kill the Plumber, and it's not always as easy as it looks. Here are some tips to get you started. This is not a seasoned platform... | Read more »
Planar Conquest (Games)
Planar Conquest 1.0 Device: iOS Universal Category: Games Price: $12.99, Version: 1.0 (iTunes) Description: IMPORTANT: Planar Conquest is compatible only with iPad 3 & newer devices, iPhone 5 & newer. It’s NOT compatible with... | Read more »
We talk to Cheetah Mobile about its plan...
Piano Tiles 2 is a fast-paced rhythm action high score chaser out now on iOS and Android. You have to tap a series of black tiles that appear on the screen in time to the music, being careful not to accidentally hit anywhere else. Do that and it's... | Read more »
Ultimate Briefcase guide - How to dodge...
Ultimate Briefcase is a simple but tricky game that’s highly dependent on how fast you can react. We can still offer you a few tips and tricks on how to survive though. Guess what? That’s exactly what we’re going to do now. Take it easy [Read more... | Read more »
SoundPrism Link Edition (Music)
SoundPrism Link Edition 1.0 Device: iOS Universal Category: Music Price: $4.99, Version: 1.0 (iTunes) Description: ***Introductory price for a the first few days after launch - if you're reading this, get it while it's fresh out of... | Read more »
Pre-register now for hack and slasher An...
Fincon, which won Facebook's Studio to Watch award in 2015, has announced that pre-registration is now open for the massive 3.0 update for its award-winning hack and slasher Angel Stone. Angel Stone is a post-apocalyptic action RPG in which the... | Read more »
Google has named Piano Tiles 2 as its Be...
Google has named Piano Tiles 2, which launched back in August last year, as its Best Game of 2015. If you're yet to play it, now's a good time to do so. It's a sequel to the hugely successful viral hit Piano Tiles (Don't Tap the White Tile) but... | Read more »

Price Scanner via MacPrices.net

Apple refurbished 2014 13-inch Retina MacBook...
Apple has Certified Refurbished 2014 13″ Retina MacBook Pros available for up to $400 off original MSRP, starting at $979. An Apple one-year warranty is included with each model, and shipping is free... Read more
Macs available for up to $300 off MSRP, $20 o...
Purchase a new Mac or iPad using Apple’s Education Store and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free, and... Read more
Watch Super Bowl 50 Live On Your iPad For Fre...
Watch Super Bowl 50 LIVE on the CBS Sports app for iPad and Apple TV. Get the app and then tune in Sunday, February 7, 2016 at 6:30 PM ET to catch every moment of the big game. The CBS Sports app is... Read more
Two-thirds Of All Smart Watches Shipped In 20...
Apple dominated the smart watch market in 2015, accounting for over 12 million units and two-thirds of all shipments according to Canalys market research analysts’ estimates. Samsung returned to... Read more
12-inch 1.2GHz Retina MacBooks on sale for up...
B&H Photo has 12″ 1.2GHz Retina MacBooks on sale for $180 off MSRP. Shipping is free, and B&H charges NY tax only: - 12″ 1.2GHz Gray Retina MacBook: $1499 $100 off MSRP - 12″ 1.2GHz Silver... Read more
12-inch 1.1GHz Gray Retina MacBook on sale fo...
B&H Photo has the 12″ 1.1GHz Gray Retina MacBook on sale for $1199 including free shipping plus NY sales tax only. Their price is $100 off MSRP, and it’s the lowest price available for this model... Read more
Apple now offering full line of Certified Ref...
Apple now has a full line of Certified Refurbished 2015 21″ & 27″ iMacs available for up to $350 off MSRP. Apple’s one-year warranty is standard, and shipping is free. The following models are... Read more
Free GUI Speedometer – The Ultimate Digital D...
Miami, Florida based RMKapps has announced the official release of GUI Speedometer 1.0, their digital dashboard display developed for iOS devices. GUI Speedometer allows users to track their precise... Read more
FutureCalc: Ergonomic iOS Calculator App For...
London, United Kingdom based Independent software developer and entrepreneur, Hovik Melikyan has announced the release and immediate availability of FutureCalc 1.0, his new ergonomic calculator app... 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

Jobs Board

*Apple* Subject Matter Expert - Experis (Uni...
This position is for an Apple Subject Matter Expert to assist in developing the architecture, support and services for integration of Apple devices into the domain. Read more
*Apple* Macintosh OSX - Net2Source Inc. (Uni...
…: * Work Authorization : * Contact Number(Best time to reach you) : Skills : Apple Macintosh OSX Location : New York, New York. Duartion : 6+ Months The associate would Read more
Computer Operations Technician ll - *Apple*...
# Web Announcement** Apple Technical Liaison**The George Mason University, Information Technology Services (ITS), Technology Support Services, Desktop Support Read more
Restaurant Manager - Apple Gilroy Inc./Apple...
…in every aspect of daily operation. WHY YOU'LL LIKE IT: You'll be the Big Apple . You'll solve problems. You'll get to show your ability to handle the stress and Read more
Simply Mac *Apple* Specialist- Service Repa...
Simply Mac is the largest premier retailer of Apple products in the nation. In order to support our growing customer base, we are currently looking for a driven Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.