' ************************************************
' *                                              *
' *    NutHouse 9         Last rev. Jan 25, 1985 *
' * by:Don Moore                                 *
' *    P.O.Box 1405              AmigaBasic      *
' *    Coconut Grove, Fl      ie. Microsoft      *
' *    856-8216                                  *
' *                                              *
' ************************************************
 
 
' This program may be used with the keypad or mouse.
'
' Selected number and adjacent numbers change simultaneously.
 
GOSUB Initialize
                     
' Set up matrix number's and
' get new game parameters
                
Newgame:
     LOCATE 1,1
     COLOR 2,1
     PRINT PTAB(5);" All red to win   ";
     Total        = 0
     FOR Col    = 1 TO 3
       FOR Row  = 1 TO 3
         BlokColor(Row,Col) = INT(RND * 2)
         Total              = Total + BlokColor(Row,Col)
         Digit(Col,Row)     = Col + (3 - Row)  * 3
       NEXT Row
     NEXT Col
     Choice   = 5     'initializes all 9 keys
     GOTO Display

 Getnumber:
     WHILE Total   <> WinningTotal
        Choice   = INSTR(" 123456789",INKEY$) -1
        IF  Choice   > 0 THEN Display
        IF  MOUSE(0) = 0 THEN Getnumber

 GetMouseNumber:    
        x1   =     INT( (MOUSE(1) + 32) / 40)
        y1   = 3 - INT( (MOUSE(2) +  3) / 15)
        IF MOUSE(0) <> 0 THEN GetMouseNumber     
        IF ((x1 > 0) AND (x1 < 4)) AND ((y1 > -1) AND (y1 < 3)) THEN
          Choice   = (( 3 * y1) +x1)
          GOTO Display
        END IF                          
        GOTO Getnumber
      
 Display:       
       FOR Row   = (( Choice MOD 3) > 0 )+2 TO ((( Choice+2 ) MOD 3 ) = 0) +3
         FOR Col = ( Choice > 3 )+2 TO ( Choice > 6 ) + 3
            BlokColor(Row,Col) = (NOT BlokColor(Row,Col)) + 2   
            Newcolor           = BlokColor(Row,Col) + 2
            Total              = Total + BlokColor(Row,Col) * 2 -1
            HorPos             = Row * 40 -25
            VerPos             = Col * 16 -2
            LINE(HorPos,VerPos)-STEP(BlokWdth,BlokHgt),Newcolor,bf
            LOCATE Col * 2 +1, Row * 5 -2      
            COLOR BlokColor(Row,Col),Newcolor
            PRINT Digit(Row,Col);
         NEXT Col
       NEXT Row
       GOTO Getnumber
   WEND
   
 ' Win routine, i.e. Total red buttons = 9
      COLOR  3,1
      LOCATE 1,1
      PRINT PTAB(5);"You are a winner ";
      FOR i = 1 TO 7
          SOUND i*400+500 ,.5
      NEXT i
      FOR i = 1 TO 2000: NEXT i
      GOTO Newgame
      
      
 Initialize:     
 'Darken screen
      FOR j = 0 TO 3
        PALETTE j,0,0,0
      NEXT j

 ' Constants
      DEFINT a-z
      BlokWdth     = 26 
      BlokHgt      = 10
      WinningTotal = 9
      DigitColor   = 1
      RANDOMIZE TIMER
      
      WINDOW 1,"Nutty 9",(10,10)-(147,73),30    
      PALETTE 0,0,.4,.6
      PALETTE 1,1,1,1
      PALETTE 2,0,0,0
      PALETTE 3,.93,.2,0
                     
 ' Background frame
         LINE(0,0)-(137,63),1,bf
         LINE(1,8)-(136,62),2,bf
         LINE(7,11)-(130,59),1,bf
         LINE(4,8)-(135,8),0
         LINE(135,8)-(136,61),0,bf
         LINE(5,10)-(6,60),0,bf
         LINE-(132,60),0
        
     'Make keypad                 
         DIM b%(500)
         GOSUB MakeKey
         GET(10,12)-(47,26),b%
         FOR i= 0 TO 2
             FOR j= 0 TO 2
                 PUT(j*40+10,i*16+12),b%,PSET
             NEXT j
         NEXT i
         RETURN  ' End of Initialize
 
 MakeKey:
     LINE(10,12)-(47,26),2,bf
     LINE(12,12)-(45,12),0
     LINE-(45,25),0
     LINE(13,14)-(13,25),0
     LINE-(41,25),0
     RETURN
 
 
                                       

