home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / sharew / spiele / kids / fouryrs / nitpick.lst < prev    next >
Encoding:
File List  |  1995-08-15  |  4.3 KB  |  210 lines

  1. ' nitpick
  2. ' Programmed by Seymour Shlien 18-Feb-93
  3. ' 624 Courtenay Avenue
  4. ' Ottawa, Canada, K2A 3B5
  5. ' in GFA Basic 3.5 for the Atari 1040
  6. DIM board&(1000)
  7. DIM char1%(10),char2%(10)
  8. DIM deskcolors%(4)
  9. rez%=XBIOS(4)
  10. DEFMOUSE 0
  11. IF rez%=0
  12.   ALERT 3," Please switch  to | medium  resolution! ",1,"Oops",b%
  13.   STOP
  14. ENDIF
  15. @instructions
  16. @get_deskcolors
  17. VSETCOLOR 0,0,0,0
  18. VSETCOLOR 1,15,15,15
  19. VSETCOLOR 2,15,0,0
  20. level%=0
  21. @initialize_char
  22. @control_menu
  23. @make_board(char1%(level%),char2%(level%))
  24. REPEAT
  25.   IF restart%=1
  26.     @make_board(char1%(level%),char2%(level%))
  27.   ENDIF
  28.   @nitpick(char1%(level%),char2%(level%))
  29.   IF nits%=0
  30.     @very_good
  31.   ENDIF
  32. UNTIL quit%=1
  33. @restore_deskcolors
  34. END
  35. > PROCEDURE make_board(s1%,s2%)
  36.   LOCAL k%,ix%,iy%,i%,j%,r%
  37.   nits%=0
  38.   restart%=0
  39.   IF (level% MOD 2)=1
  40.     blank_threshold%=30
  41.   ELSE
  42.     blank_threshold%=200
  43.   ENDIF
  44.   BOX 48,12,402,156
  45.   FOR k%=0 TO 999
  46.     i%=MOD(k%,50)
  47.     j%=(k% DIV 50)
  48.     ix%=i%*7+50
  49.     iy%=j%*7+20
  50.     r%=RANDOM(100)
  51.     IF r%<2
  52.       TEXT ix%,iy%,CHR$(s1%)
  53.       board&(i%+50*j%)=1
  54.       INC nits%
  55.     ELSE IF r%<blank_threshold%
  56.       TEXT ix%,iy%,CHR$(s2%)
  57.       board&(i%+50*j%)=2
  58.     ELSE
  59.       board&(i%+50*j%)=0
  60.       TEXT ix%,iy%," "
  61.     ENDIF
  62.   NEXT k%
  63.   LOCATE 1,26
  64.   PRINT "Find all the ";CHR$(s1%);"'s";
  65. RETURN
  66. > PROCEDURE get_deskcolors
  67.   LOCAL i%
  68.   FOR i%=0 TO 3
  69.     deskcolors%(i%)=XBIOS(7,i%,-1)
  70.   NEXT i%
  71. RETURN
  72. > PROCEDURE restore_deskcolors
  73.   LOCAL i%,j%
  74.   FOR i%=0 TO 3
  75.     j%=XBIOS(7,i%,deskcolors%(i%))
  76.   NEXT i%
  77. RETURN
  78. > PROCEDURE control_menu
  79.   LOCAL i%
  80.   FOR i%=0 TO 2
  81.     BOX 480,40+i%*20,560,50+i%*20
  82.     SELECT i%
  83.     CASE 0
  84.       TEXT 481,48+i%*20,"level "+STR$(level%)
  85.     CASE 1
  86.       TEXT 481,48+i%*20,"restart"
  87.     CASE 2
  88.       TEXT 481,48+i%*20,"quit"
  89.     ENDSELECT
  90.   NEXT i%
  91. RETURN
  92. > PROCEDURE nitpick(s1%,s2%)
  93.   LOCAL i%,j%
  94.   IF MOUSEK<>0
  95.     i%=(MOUSEX-50)/7
  96.     j%=(MOUSEY-14)/7
  97.     LOCATE 1,26
  98.     '    PRINT i%,j%,board&(i%+50*j%);
  99.     IF (i%<50) AND (j%<20) AND (i%>=0) AND (j%>=0)
  100.       IF board&(i%+50*j%)=1
  101.         @sound_effects(CHR$(s1%),i%,j%)
  102.         TEXT i%*7+50,j%*7+20,CHR$(s2%)
  103.         DEC nits%
  104.         PRINT SPACE$(16);
  105.         LOCATE 1,26
  106.         PRINT nits%;" left";
  107.         board&(i%+50*j%)=2
  108.       ENDIF
  109.     ELSE IF MOUSEX>480
  110.       i%=(MOUSEY-40) DIV 20
  111.       '      LOCATE 70,20
  112.       '      PRINT i%
  113.       IF i%=0
  114.         INC level%
  115.         IF level%>9
  116.           level%=0
  117.         ENDIF
  118.         TEXT 481,48+i%*20,"level "+STR$(level%)
  119.         PAUSE 30
  120.       ELSE IF i%=1
  121.         restart%=1
  122.       ELSE IF i%=2
  123.         quit%=1
  124.       ENDIF
  125.     ENDIF
  126.   ENDIF
  127. RETURN
  128. > PROCEDURE sound_effects(charact$,col%,row%)
  129.   LOCAL i%
  130.   DEFTEXT 2
  131.   TEXT col%*7+50,row%*7+20,charact$
  132.   DEFTEXT 1
  133.   i%=RANDOM(10)
  134.   SELECT i%
  135.   CASE 0
  136.     WAVE 512*7+8,1,1,2000,20
  137.     SOUND 0,0
  138.   CASE 1
  139.     WAVE 512*15+8,1,1,20000,20
  140.     SOUND 0,0
  141.   CASE 2
  142.     WAVE 512*3+8,1,1,20000,20
  143.     SOUND 0,0
  144.   CASE 3
  145.     WAVE 512*3+8,1,15,2000,30
  146.     SOUND 0,0
  147.   CASE 4
  148.     WAVE 512*3+8,1,8,200,30
  149.     SOUND 0,0
  150.   CASE 5
  151.     WAVE 512*3+8,1,8,50,30
  152.     SOUND 0,0
  153.   CASE 6
  154.     WAVE 256*30+8,1,8,50,30
  155.     SOUND 0,0
  156.   CASE 7
  157.     WAVE 512*3+8,1,1,200,30
  158.     SOUND 0,0
  159.   CASE 8
  160.     SOUND 0,12,1,1,20
  161.     WAVE 1,1,0,50,3
  162.     SOUND 0,0
  163.   CASE 9
  164.     SOUND 1,12,1,2,0
  165.     WAVE 7,7,9,10000,30
  166.     SOUND 0,0
  167.   ENDSELECT
  168. RETURN
  169. > PROCEDURE initialize_char
  170.   LOCAL i%
  171.   FOR i%=0 TO 9
  172.     READ char1%(i%),char2%(i%)
  173.   NEXT i%
  174.   DATA 99,101
  175.   DATA 99,101
  176.   DATA 98,100
  177.   DATA 98,100
  178.   DATA 111,101
  179.   DATA 111,101
  180.   DATA 199,200
  181.   DATA 199,200
  182.   DATA 197,213
  183.   DATA 197,213
  184. RETURN
  185. > PROCEDURE instructions
  186.   CLS
  187.   PRINT "Using the mouse, click on all the designated characters"
  188.   PRINT "displayed on the screen. If you change levels, please"
  189.   PRINT "click on restart when you are ready. Higher levels are"
  190.   PRINT "more difficult."
  191.   PRINT
  192.   PRINT "Turn up the volume if you wish to hear the sound effects."
  193.   PRINT
  194.   PRINT "The program was written in GFA Basic 3.5 by Seymour Shlien."
  195.   PRINT "The program and its GFA sources may be treated as public"
  196.   PRINT "domain."
  197.   PRINT
  198.   PRINT "...click mouse button when ready."
  199.   REPEAT
  200.   UNTIL MOUSEK<>0
  201.   CLS
  202. RETURN
  203. > PROCEDURE very_good
  204.   LOCATE 1,26
  205.   PRINT SPACE$(16);
  206.   LOCATE 1,26
  207.   PRINT "Very good";
  208.   DEC nits%
  209. RETURN
  210.