home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib17.dsk / PRACTICE.bas < prev    next >
BASIC Source File  |  2023-02-26  |  7KB  |  154 lines

  1. 10  REM  **********************
  2. 20  REM  *     PRACTICE       *
  3. 30  REM  * BY  HARRY K. SUGAR *
  4. 40  REM  * COPYRIGHT (C) 1984 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * LINCOLN, MA. 01773 *
  7. 70  REM  **********************
  8. 80  GOTO 520
  9. 100  GOSUB 150
  10. 110  HCOLOR= 0: IF L1 +L2 = 2  THEN  DRAW 11 AT 110,AY +40: HCOLOR= 3: DRAW 12 AT 110,AY +40
  11. 120  IF L1 +L2 >2  THEN  DRAW 11 AT 95,AY +40: HCOLOR= 3: DRAW 12 AT 95,AY +40
  12. 130 ANS = N1 -N2:LA =  LEN( STR$(ANS))
  13. 140  RETURN 
  14. 150  IF L1 +L2 = 2  THEN  DRAW N1 +(N1 = 0) *10 AT 140,AY: DRAW 11 AT 110,AY +40: DRAW N2 +(N2 = 0) *10 AT 140,AY +40: GOTO 200
  15. 160  IF L1 = 1  THEN  DRAW N1 +(N1 = 0) *10 AT 155,AY
  16. 170  IF L2 = 1  THEN  DRAW N2 +(N2 = 0) *10 AT 155,AY +40
  17. 180  DRAW 11 AT 95,AY +40: IF L1 = 2  THEN N1$ =  STR$(N1):NA =  VAL( LEFT$(N1$,1)):NB =  VAL( RIGHT$(N1$,1)): DRAW NA +(NA = 0) *10 AT 125,AY: DRAW NB +(NB = 0) *10 AT 155,AY
  18. 190  IF L2 = 2  THEN N2$ =  STR$(N2):NA =  VAL( LEFT$(N2$,1)):NB =  VAL( RIGHT$(N2$,1)): DRAW NA +(NA = 0) *10 AT 125,AY +40: DRAW NB +(NB = 0) *10 AT 155,AY +40
  19. 200 ANS = N1 +N2:LA =  LEN( STR$(ANS))
  20. 210  RETURN 
  21. 220  GOSUB 150
  22. 230  HCOLOR= 0: IF L1 +L2 = 2  THEN  DRAW 11 AT 110,AY +40: HCOLOR= 3: DRAW 13 AT 110,AY +40
  23. 240  IF L1 +L2 >2  THEN  DRAW 11 AT 95,AY +40: HCOLOR= 3: DRAW 13 AT 95,AY +40
  24. 250 ANS = N1 *N2:LA =  LEN( STR$(ANS))
  25. 260  RETURN 
  26. 270  REM 
  27. 280  IF L1 +L2 = 2  THEN  DRAW N2 AT 95,EY: DRAW 15 AT 125,EY: DRAW N1 +(N1 = 0) *10 AT 155,EY: DRAW 16 AT 155,EY
  28. 290  IF L1 = 2  THEN N1$ =  STR$(N1):NA =  VAL( LEFT$(N1$,1)):NB =  VAL( RIGHT$(N1$,1))
  29. 300  IF L2 = 2  THEN N2$ =  STR$(N2):ND =  VAL( LEFT$(N2$,1)):NE =  VAL( RIGHT$(N2$,1))
  30. 310  IF L1 = 3  THEN N1$ =  STR$(N1):NA =  VAL( LEFT$(N1$,1)):NB =  VAL( MID$ (N1$,2,1)):NC =  VAL( RIGHT$(N1$,1))
  31. 320  GOSUB 400
  32. 330  IF L2 = 1  AND L1 = 2  THEN  DRAW N2 AT 80,EY: DRAW 15 AT 110,EY: DRAW NA AT 140,EY: DRAW 16 AT 140,EY: DRAW NB AT 170,EY: DRAW 16 AT 170,EY
  33. 340  IF L2 = 1  AND L1 = 3  THEN  DRAW N2 AT 65,EY: DRAW 15 AT 95,EY: DRAW NA AT 125,EY: DRAW 16 AT 125,EY: DRAW NB +(NB = 0) *10 AT 155,EY: DRAW 16 AT 155,EY: DRAW NC +(NC = 0) *10 AT 185,EY: DRAW 16 AT 185,EY
  34. 350  IF L2 = 2  AND L1 = 2  THEN  DRAW ND AT 65,EY: DRAW NE AT 95,EY: DRAW 15 AT 125,EY: DRAW NA AT 155,EY: DRAW 16 AT 155,EY: DRAW NB AT 185,EY: DRAW 16 AT 185,EY
  35. 360  IF L2 = 2  AND L1 = 1  THEN  DRAW ND AT 80,EY: DRAW NE AT 110,EY: DRAW 15 AT 140,EY: DRAW N1 +(N1 = 0) *10 AT 170,EY: DRAW 16 AT 170,EY
  36. 370  IF L2 = 2  AND L1 = 3  THEN  DRAW ND AT 50,EY: DRAW NE AT 80,EY: DRAW 15 AT 110,EY: DRAW NA AT 140,EY: DRAW 16 AT 140,EY: DRAW NB AT 170,EY: DRAW 16 AT 170,EY: DRAW NC AT 200,EY: DRAW 16 AT 200,EY
  37. 380 ANS = N1/N2:LA =  LEN( STR$(ANS)): GOSUB 460
  38. 390  RETURN 
  39. 400  IF NA = 0  THEN NA = 10
  40. 410  IF NB = 0  THEN NB = 10
  41. 420  IF NC = 0  THEN NC = 10
  42. 430  IF ND = 0  THEN ND = 10
  43. 440  IF NE = 0  THEN NE = 10
  44. 450  RETURN 
  45. 460 DY = EY -50: IF L1 +L2 = 2  THEN DX = 155: RETURN 
  46. 470  IF L2 = 1  AND L1 = 2  THEN DX = 200 -30 *LA: RETURN 
  47. 480  IF L2 = 1  AND L1 = 3  THEN DX = 215 -30 *LA: RETURN 
  48. 490  IF L2 = 2  AND L1 = 2  THEN DX = 215 -30 *LA: RETURN 
  49. 500  IF L2 = 2  AND L1 = 3  THEN DX = 230 -30 *LA: RETURN 
  50. 510  IF L2 = 2  AND L1 = 1  THEN DX = 200 -30 *LA: RETURN 
  51. 520  LOMEM: 24576
  52. 530 : PRINT  CHR$(4);"BLOAD NUMBERS,A$4000"
  53. 540  POKE 232,0: POKE 233,64
  54. 550  HOME :EY = 58:AY = 18
  55. 560  DIM N1(50),N2(50),S1(50),S2(50)
  56. 570  DIM MS(40)
  57. 580 CO = 0:WR = 0
  58. 590 D$ =  CHR$(4)
  59. 600  PRINT D$;"OPEN PROBLEMS"
  60. 610  PRINT D$;"READ PROBLEMS"
  61. 620  INPUT WG
  62. 630  FOR I = 1 TO WG
  63. 640  INPUT N1(I)
  64. 650  INPUT N2(I)
  65. 660  INPUT S1(I)
  66. 670  INPUT S2(I)
  67. 680  NEXT I
  68. 690  PRINT D$;"CLOSE PROBLEMS"
  69. 700  HOME : HTAB 17: INVERSE : PRINT "PRACTICE": NORMAL 
  70. 710  VTAB 7: PRINT "THIS PROGRAM WILL GIVE YOU THE PROBLEMS THAT YOU GOT WRONG WHEN YOU RAN         FLASHCARD."
  71. 720  PRINT : PRINT "ARE YOU READY?   HIT THE RETURN KEY."
  72. 730  GET PP$
  73. 740  HOME : POKE 34,20: HOME 
  74. 750  POKE 230,32: CALL 62450
  75. 760  SCALE= 1: ROT= 0: HCOLOR= 3
  76. 770  POKE  -16300,0: POKE  -16301,0: POKE  -16297,0
  77. 780  HOME 
  78. 790  FOR PROB = 1 TO WG
  79. 800  POKE  -16303,0: CALL 62450
  80. 810  POKE 35,22
  81. 820  HOME 
  82. 830  POKE 35,24
  83. 840 Z =  PEEK( -16368)
  84. 850 N1 = N1(K)
  85. 860 L1 =  LEN( STR$(N1))
  86. 870 N2 = N2(K)
  87. 880 L2 =  LEN( STR$(N2))
  88. 890 P1 = S1(K)
  89. 900 P2 = S2(K)
  90. 910  IF P1 < = 4  AND P2 < = 4  THEN  GOSUB 150
  91. 920  IF P1 < = 4  AND P2 > = 5  THEN  GOSUB 100
  92. 930  IF P1 > = 5  AND P2 < = 4  THEN  GOSUB 220
  93. 940  IF P1 > = 5  AND P2 > = 5  THEN  GOSUB 270: GOTO 990
  94. 950  IF L1 +L2 = 2  THEN  DRAW 14 AT 110,AY +80: DRAW 14 AT 140,AY +80
  95. 960  IF L1 +L2 >2  THEN  DRAW 14 AT 95,AY +80: DRAW 14 AT 125,AY +80: DRAW 14 AT 155,98
  96. 970 DY = AY +90: IF L1 +L2 = 2  THEN DX = 170 -30 *LA: GOTO 990
  97. 980  IF L1 +L2 >2  THEN DX = 185 -30 *LA
  98. 990  POKE  -16304,0: REM  SW TO HIRES
  99. 1000  VTAB (23): HTAB (37):NO = CO +WR +1
  100. 1010  PRINT  SPC( 2 - LEN( STR$(NO)));NO
  101. 1020 ANS$ =  STR$(ANS)
  102. 1030 LA =  LEN(ANS$)
  103. 1040 TIME = 200
  104. 1050  FOR LW = 1 TO 2
  105. 1060 G1 =  -1
  106. 1070 G2 =  -1
  107. 1080 G3 =  -1
  108. 1090  HCOLOR= 6
  109. 1100  FOR I = 1 TO TIME
  110. 1110 X =  PEEK( -16384)
  111. 1120  IF G1 > = 0  THEN 1150
  112. 1130  IF X >127  THEN G1 = X:Y =  PEEK( -16368): DRAW G1 -176 +(G1 = 176) *10 AT DX,DY
  113. 1140  GOTO 1220
  114. 1150  IF LA = 1  THEN 1230
  115. 1160  IF G2 > = 0  THEN 1190
  116. 1170  IF X >127  THEN G2 = X:Y =  PEEK( -16368): DRAW G2 -176 +(G2 = 176) *10 AT DX +30,DY
  117. 1180  GOTO 1220
  118. 1190  IF LA = 2  THEN 1230
  119. 1200  IF G3 > = 0  THEN 1230
  120. 1210  IF X >127  THEN G3 = X:Y =  PEEK( -16368): DRAW G3 -176 +(G3 = 176) *10 AT DX +60,DY
  121. 1220  NEXT I
  122. 1230 G1$ =  STR$(G1 -176)
  123. 1240  HCOLOR= 3
  124. 1250 G2$ =  STR$(G2 -176)
  125. 1260 G3$ =  STR$(G3 -176)
  126. 1270 GUESS =  VAL(G1$)
  127. 1280  IF LA = 2  THEN GUESS =  VAL(G1$ +G2$)
  128. 1290  IF LA = 3  THEN GUESS =  VAL(G1$ +G2$ +G3$)
  129. 1300  VTAB 21
  130. 1310  CALL  -868
  131. 1320  IF ANS = GUESS  THEN  PRINT "THAT'S CORRECT!"; CHR$(7):CO = CO +1: FOR I = 1 TO 300: NEXT I: GOTO 1420
  132. 1330  REM  CTRL G IN STATEMENT 660
  133. 1340  PRINT "THAT'S WRONG!";: FOR I = 1 TO 20:X =  PEEK( -16336): NEXT I
  134. 1350  IF LW = 2  THEN 1390
  135. 1360  HCOLOR= 0: IF P1 > = 5  AND P2 > = 5  THEN  FOR I = EY -50 TO EY -15: HPLOT 10,I TO 270,I: NEXT : GOTO 1380
  136. 1370  FOR I = AY +90 TO AY +125: HPLOT 10,I TO 270,I: NEXT 
  137. 1380  HCOLOR= 3: PRINT "   TRY AGAIN."
  138. 1390  IF LW = 2  THEN  PRINT : PRINT "THE CORRECT ANSWER IS ";: INVERSE : PRINT ANS;: NORMAL : PRINT ".";:WR = WR +1
  139. 1400  IF LW = 2  THEN  FOR I = 1 TO 4000: NEXT I
  140. 1410  NEXT LW
  141. 1420  NEXT K
  142. 1430  TEXT 
  143. 1440  HOME : VTAB (9)
  144. 1450  PRINT "YOU GOT ";CO;" RIGHT AND ";WR;" WRONG."
  145. 1460 SC = CO/(CO +WR)
  146. 1470 SG =  INT(100 *SC +.5)
  147. 1480  PRINT : PRINT "YOUR SCORE IS ";SG;"."
  148. 1490  PRINT : PRINT : PRINT 
  149. 1500  IF SC > = .95  THEN  PRINT "THAT'S EXCELLENT! I'M PROUD OF YOU.     NOW YOU CAN PLAY A GAME.": GOTO 1550
  150. 1510  IF SC > = .9  THEN  PRINT "THAT'S VERY GOOD!  KEEP UP THE GOOD     WORK.  NOW YOU CAN PLAY A GAME.": GOTO 1550
  151. 1520  IF SC > = .8  THEN  PRINT "THAT'S GOOD!  YOU NEED JUST A LITTLE    MORE PRACTICE.": GOTO 1550
  152. 1530  IF SC > = .7  THEN  PRINT "YOU NEED SOME MORE PRACTICE.  LET ME    GIVE YOU THE PROBLEMS YOU GOT WRONG.    TYPE 'RUN PRACTICE' AND WE'LL SEE IF    YOU CAN DO BETTER.": GOTO 1550
  153. 1540  PRINT "COME ON, YOU CAN DO BETTER THAN THAT.   LET ME GIVE YOU THE PROBLEMS YOU GOT    WRONG.  TYPE 'RUN PRACTICE' AND WE'LL SEE IF YOU CAN DO BETTER."
  154. 1550  END