home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib20a.dsk / JULY.1984 / COUNTING.QUIZ.bas < prev    next >
BASIC Source File  |  2023-02-26  |  8KB  |  109 lines

  1. 10  REM  **********************
  2. 20  REM  *   COUNTING.QUIZ    *
  3. 30  REM  *   BY MIKE ROHRER   *
  4. 40  REM  * COPYRIGHT (C) 1984 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * LINCOLN, MA. 01773 *
  7. 70  REM  **********************
  8. 80  TEXT : HOME : VTAB 22: PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **": GOSUB 1000
  9. 90  REM  ***** TITLE PAGE *****
  10. 100 BL$ = "                    ": REM  20 SPACES
  11. 110 T1$ = "*****************"
  12. 120 T2$ = "*               *"
  13. 130  VTAB 7: HTAB 12: GOSUB 860
  14. 140  PRINT T1$: FOR I = 1 TO 7: HTAB 12: PRINT T2$: NEXT I: HTAB 12: PRINT T1$
  15. 150  VTAB 9: HTAB 14: GOSUB 860: INVERSE : PRINT "COUNTING QUIZ": NORMAL 
  16. 160  GOSUB 880: PRINT : HTAB 15: PRINT "     BY": PRINT : HTAB 14: SPEED= 100: PRINT " MIKE ROHRER": SPEED= 255: GOSUB 880: GOSUB 880
  17. 170  FOR I = 15 TO 7  STEP  -1: VTAB I: HTAB 12: PRINT BL$: FOR J = 1 TO 3:BZ =  PEEK( -16336): NEXT J,I: GOSUB 870
  18. 180  REM  ***** INTRO *****
  19. 190  HGR : ROT= 0: SCALE= 1: HCOLOR= 5: FOR I = 2 TO 90: HPLOT 2,I TO 277,I: NEXT I
  20. 200  HCOLOR= 1: FOR I = 91 TO 157: HPLOT 2,I TO 277,I: NEXT I
  21. 210  HCOLOR= 3: HPLOT 0,0 TO 279,0 TO 279,159 TO 0,159 TO 0,0: HPLOT 1,1 TO 278,1 TO 278,158 TO 1,158 TO 1,1: HPLOT 2,91 TO 277,91 TO 277,92 TO 2,92
  22. 220  HCOLOR= 0: FOR I = 139 TO 3  STEP  -2: HPLOT I,2 TO I,90: HPLOT 280 -I,2 TO 280 -I,90: NEXT I: GOSUB 880
  23. 230  FOR S = 10 TO 1  STEP  -1: FOR I = 1 TO S: HCOLOR= 3: DRAW S AT 27 *I -19,90: POKE 768,10 *I: POKE 769,5: CALL 770: IF I = S  THEN 260
  24. 240  IF (S = 10  AND I = 1)  OR (S = 10  AND I = 2)  THEN  GOSUB 880
  25. 250  HCOLOR= 0: DRAW S AT 27 *I -19,90
  26. 260  NEXT I,S: FOR I = 1 TO 25
  27. 270 C =  INT( RND(1) *8): IF C = 0  OR C = 4  OR C = 7 GOTO 270
  28. 280 S =  INT( RND(1) *10) +1: HCOLOR= 0: DRAW S AT 27 *S -19,90: POKE 768,10 *S: POKE 769,5: CALL 770: HCOLOR= C: DRAW S AT 27 *S -19,90: NEXT I
  29. 290  HCOLOR= 0: DRAW 10 AT 251,90
  30. 300  FOR S = 9 TO 1  STEP  -1: FOR I = S TO 10: DRAW S AT 27 *I -19,90
  31. 310  HCOLOR= 3: DRAW S AT 27 *I -19,90: POKE 768,10 *I: POKE 769,5: CALL 770: HCOLOR= 0: DRAW S AT 27 *I -19,90
  32. 320  NEXT I,S: GOSUB 880: HGR : GOSUB 880
  33. 330  HCOLOR= 3: FOR L = 156 TO 0  STEP  -3: HCOLOR= 0: HPLOT 0,L +3 TO 279,L +3
  34. 340  HCOLOR= 3: HPLOT 0,L TO 279,L: HPLOT 0,L +1 TO 0,L +3: HPLOT 1,L +1 TO 1,L +3: HPLOT 279,L +1 TO 279,L +3: HPLOT 278,L +1 TO 278,L +3: FOR I = 1 TO 2:BZ =  PEEK( -16336): NEXT I,L
  35. 350  HPLOT 0,1 TO 279,1: HPLOT 0,159 TO 279,159: HPLOT 0,158 TO 279,158: GOSUB 870
  36. 360  VTAB 22: SPEED= 100: PRINT "  PRESS ";: INVERSE : PRINT "'RETURN'";: NORMAL : PRINT " TO END 'COUNTING QUIZ'  ": GOSUB 880: GOSUB 880: SPEED= 255: HOME : GOTO 910
  37. 370  REM ***** SUBROUTINES *****
  38. 380  REM  -IF ANSWER IS CORRECT-
  39. 390  HOME : VTAB 21: FOR I = 1 TO 60: PRINT N;" ";:BZ =  PEEK( -16336): NEXT I: GOSUB 860
  40. 400  HGR : POKE  -16302,0: CALL  -1998: HOME : FOR I = 1 TO 10:C =  INT( RND(1) *8): IF C = 0  OR C = 4  THEN C = C +1
  41. 410  HCOLOR= C: DRAW S AT 1 + INT( RND(1) *255), INT( RND(1) *170) +21: POKE 768,20 *I: POKE 769,20: CALL 770: NEXT I
  42. 420  FOR J = 10 TO 1  STEP  -1:C =  INT( RND(1) *8): IF C = 0  OR C = 4  THEN C = C +1
  43. 430  HCOLOR= C: DRAW S AT 1 + INT( RND(1) *258), INT( RND(1) *170) +21: POKE 768,20 *J: POKE 769,20: CALL 770: NEXT J
  44. 440  FOR I = 1 TO 50: NEXT I: HGR : GR :CH =  INT( RND(1) *5 +1): ON CH GOTO 450,520,560,600,680
  45. 450  REM  ##### REWARD 1 #####
  46. 460  GR : COLOR= 13: FOR I = 39 TO 0  STEP  -1: HLIN 0,39 AT I: FOR J = 1 TO  INT(I/2):BZ =  PEEK( -16336): NEXT J,I
  47. 470  FOR J = 19 TO 0  STEP  -1:C =  INT( RND(1) *15): IF C = 13  THEN C = C -1
  48. 480  COLOR= C: HLIN 38 -J,J +1 AT 38 -J: HLIN 38 -J,J +1 AT J +1: VLIN 38 -J,J +1 AT 38 -J: VLIN 38 -J,J +1 AT J +1: POKE 768,220 -2 *J: POKE 769,20: CALL 770: NEXT J
  49. 490  HLIN 0,39 AT 0: HLIN 0,39 AT 39: VLIN 0,39 AT 0: VLIN 0,39 AT 39
  50. 500  GOSUB 870: POKE 768,100: POKE 769,20: CALL 770: GR : RETURN 
  51. 510  REM  ##### REWARD 2 #####
  52. 520  GR : FOR I = 19 TO 0  STEP  -1: COLOR=  INT(15 * RND(1)) +1: HLIN 0,39 AT 2 *I +1: FOR J = 1 TO I:BZ =  PEEK( -16336): NEXT J,I
  53. 530  COLOR= 0: FOR J = 19 TO 0  STEP  -1: VLIN 0,39 AT J: VLIN 0,39 AT 39 -J: POKE 768,200 -J: POKE 769,20: CALL 770: NEXT J
  54. 540  GOSUB 860: POKE 768,100: POKE 769,20: CALL 770: GR : RETURN 
  55. 550  REM  ##### REWARD 3 #####
  56. 560  GR : FOR I = 0 TO 39: COLOR=  INT( RND(1) *15): HLIN 0,39 AT I: POKE 768,5 *I: POKE 769,20: CALL 770: NEXT I
  57. 570  FOR J = 19 TO 0  STEP  -1: COLOR=  INT( RND(1) *15): VLIN 0,39 AT J: VLIN 0,39 AT 39 -J: POKE 768,143 +4 *J: POKE 769,20: CALL 770: NEXT J
  58. 580  GOSUB 870: POKE 768,100: POKE 769,20: CALL 770: GR : RETURN 
  59. 590  REM  ##### REWARD 4 #####
  60. 600  GR : FOR I = 1 TO 40: COLOR=  INT( RND(1) *15) +1: HLIN  INT( RND(1) *40), INT( RND(1) *40) AT  INT( RND(1) *40)
  61. 610  VLIN  INT( RND(1) *40), INT( RND(1) *40) AT  INT( RND(1) *40)
  62. 620  POKE 768,250: POKE 769,15: CALL 770: NEXT I: GOSUB 870
  63. 630  COLOR= 0: FOR I = 0 TO 38
  64. 640 HL(I) =  INT( RND(1) *39) +1: IF COUNTER(HL(I)) < >0 GOTO 640
  65. 650 COUNTER(HL(I)) = HL(I): HLIN 0,39 AT 0: HLIN 0,39 AT HL(I): FOR J = 1 TO 2:BZ =  PEEK( -16336): NEXT J
  66. 660  NEXT I: FOR I = 0 TO 39:COUNTER(I) = 0: NEXT I: GR : RETURN 
  67. 670  REM  ##### REWARD 5 #####
  68. 680  HOME : TEXT : VTAB 1: FOR I = 1 TO 21: PRINT BL$ +BL$: FOR J = 1 TO 2:BZ =  PEEK( -16336): NEXT J,I: FOR I = 1 TO 23: VTAB I: INVERSE : PRINT BL$ +BL$;: POKE 768,2 *I: POKE 769,5: CALL 770: NEXT I: NORMAL 
  69. 690  GOSUB 880: NORMAL : FOR I = 1 TO 125: VTAB  INT( RND(1) *23) +1: HTAB  INT( RND(1) *40) +1: PRINT N;:BZ =  PEEK( -16336): NEXT 
  70. 700  GOSUB 880: FOR I = 23 TO 1  STEP  -1: HTAB 1: VTAB I: PRINT BL$;: NEXT I: FOR I = 23 TO 1  STEP  -1: HTAB 21: VTAB I: PRINT BL$;: NEXT I: HTAB 1: RETURN 
  71. 710  REM -IF ANSWER IS WRONG-
  72. 720  FOR I = 1 TO 25:BZ =  PEEK( -16336): NEXT :T = T +1: IF T <2  THEN  RETURN 
  73. 730  TEXT : HOME : VTAB 10: HTAB 5: PRINT "YOU'RE GUESSING, AREN'T YOU?": PRINT 
  74. 740  FOR I = 1 TO 50:BZ =  PEEK( -16336): NEXT I: GOSUB 860
  75. 750  HTAB 13: PRINT "TRY ANOTHER": GOSUB 880: GOSUB 880: RETURN 
  76. 760 S$ = "SQUARES": RETURN 
  77. 770 S$ = "RECTANGLES": RETURN 
  78. 780 S$ = "TRIANGLES": RETURN 
  79. 790 S$ = "DIAMONDS": RETURN 
  80. 800 S$ = "CROSSES": RETURN 
  81. 810 S$ = "CUPS": RETURN 
  82. 820 S$ = "HOUSES": RETURN 
  83. 830 S$ = "BOATS": RETURN 
  84. 840 S$ = "DOGS": RETURN 
  85. 850 S$ = "SNAKES": RETURN 
  86. 860  FOR DLY = 1 TO 200: NEXT DLY: RETURN 
  87. 870  FOR DLY = 1 TO 500: NEXT DLY: RETURN 
  88. 880  FOR DLY = 1 TO 1000: NEXT DLY: RETURN 
  89. 890  REM  ***** MAIN LOOP *****
  90. 900  HGR : HCOLOR= 3: IF T = 2  THEN T = 0
  91. 910 S =  INT( RND(1) *10) +1: ON S GOSUB 760,770,780,790,800,810,820,830,840,850
  92. 920 N =  INT( RND(1) *10)
  93. 930  HPLOT 0,0 TO 279,0 TO 279,159 TO 0,159 TO 0,0: HPLOT 1,1 TO 278,1 TO 278,158 TO 1,158 TO 1,1
  94. 940  FOR I = 1 TO N: IF N = 0 GOTO 970
  95. 950 C =  INT( RND(1) *8): IF C = 0  OR C = 4  THEN C = C +1
  96. 960  HCOLOR= C: DRAW S AT X(I),Y(I): POKE 768,200: POKE 769,15: CALL 770: GOSUB 860: NEXT I
  97. 970  POKE  -16368,0: VTAB 22: PRINT "HOW MANY ";S$;" ? ";: GET B$: PRINT B$: IF  ASC(B$) = 13  THEN  TEXT : HOME : END 
  98. 980  IF N < > VAL(B$)  OR ( ASC(B$) <48  OR  ASC(B$) >57)  THEN  GOSUB 720: ON T GOTO 970,990
  99. 990  GOSUB 390: GOTO 900
  100. 1000  REM ***** INITIALIZE *****
  101. 1010  PRINT  CHR$(4);"BLOAD BSHAPES"
  102. 1020  POKE 232,0: POKE 233,64
  103. 1030  DIM HL(39),COUNTER(39),P(20)
  104. 1040  REM -INIT TONE GENERATOR-
  105. 1050  FOR I = 0 TO 20: READ P(I): POKE 770 +I,P(I): NEXT I
  106. 1060  DATA  173,48,192,136,208,5,206,1,3,240,9,202,208,245,174,0,3,76,2,3,96
  107. 1070  REM -LOCATIONS OF SHAPES TO BE COUNTED-
  108. 1080  FOR I = 1 TO 9: READ X(I),Y(I): NEXT I: RETURN 
  109. 1090  DATA  30,60,80,60,130,60,180,60,230,60,30,120,80,120,130,120,180,120