home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / gwbasic / spiele / math.bas < prev    next >
Encoding:
BASIC Source File  |  1991-05-15  |  7.8 KB  |  145 lines

  1. 5 REM This program is MATH
  2. 10 CLS:KEY OFF:CLEAR 100:GOSUB 100:GOSUB 1000
  3. 20 GOSUB 2000:RUN "menu"
  4. 50 RUN "menu"
  5. 100 GOSUB 59980
  6. 110 DEFSTR N:DIM NUMBER(15)
  7. 115 DB$=CHR$(31)+CHR$(29):D$=CHR$(31):B2$=STRING$(2,29):B3$=B2$+CHR$(29)
  8. 120 NUMBER(1)=" ▄█"+DB$+"█"+DB$+"█"+D$+B2$+"▀▀▀"
  9. 130 NUMBER(2)="▄▀▀▀▄"+D$+B2$+"▄▀"+D$+B2$+B2$+"▄▀"+D$+B3$+"▀▀▀▀▀"
  10. 140 NUMBER(3)="▀▀▀▀█"+DB$+B2$+"▄▄█"+DB$+"█"+DB$+B2$+B2$+"▀▀▀▀▀"
  11. 150 NUMBER(4)="  ▄█"+DB$+B3$+"▄█▄█▄"+D$+B2$+"█"+DB$+"▀"
  12. 160 NUMBER(5)="█▀▀▀▀"+DB$+B2$+B2$+"█▄▄▄"+D$+"█"+DB$+B2$+B2$+"▀▀▀▀"
  13. 170 NUMBER(6)=" ▄▀"+DB$+B2$+"█▄▄▄"+D$+B2$+B2$+"█"+D$+"▀▀▀"+CHR$(30)+"█"+D$
  14. 180 NUMBER(7)="▀▀▀▀█"+D$+B2$+"▄▀"+DB$+B2$+"▄▀"+D$+B2$+"▀"
  15. 190 NUMBER(8)="▄▀▀▀▄"+DB$+B2$+B2$+"▀▄▄▄▀"+DB$+B2$+B2$+"█"+D$+"▀▀▀"+CHR$(30)+"█"+D$
  16. 200 NUMBER(9)="▄▀▀▀▄"+DB$+B2$+B2$+"▀▄▄▄█"+D$+B2$+"▄▀"+DB$+B2$+"▀"
  17. 210 NUMBER(10)="▄▀▀▀▄"+DB$+B2$+B2$+"█   █"+DB$+B2$+B2$+"█   █"+D$+B2$+B2$+"▀▀▀"
  18. 220 NUMBER(11)=D$+" ▄█▄"+D$+B2$+"▀"
  19. 230 NUMBER(12)=D$+" ▄▄▄"
  20. 240 NUMBER(13)=D$+"▀▄▀"+DB$+B2$+"▀ ▀"
  21. 250 NUMBER(14)="  ▄"+D$+B2$+"▄▄▄"+D$+B2$+"▄"
  22. 260 NUMBER(15)=" ▄▄▄"+D$+D$+B3$+"▄▄▄"
  23. 270 NUMBER(0)="     "+DB$+B2$+B2$+"     "+DB$+B2$+B2$+"     "+DB$+B2$+B2$+"     "
  24. 300 C$(1)="RIGHT":C$(2)="CORRECT":C$(3)="ABSOLUTELY":C$(4)="GOOD GOING":C$(5)="YOU'RE DOING OK!":C$(6)="I KNEW YOU'D GET THAT ONE"
  25. 990 RETURN
  26. 995 CLS:FOR I=1 TO 20:LOCATE I,67:PRINT"THIS IS A TEST";:NEXT I:END
  27. 1000 KEY OFF:COLOR 0,7:LOCATE 1,34:PRINT " Math Program "
  28. 1010 COLOR 7,0:LOCATE 3,1:PRINT "This program will drill you on simple math problems.  You may select the"
  29. 1020 PRINT "type(s) of problems which will be presented.  The operations available include:"
  30. 1030 LOCATE 6,10:COLOR 15:PRINT "1";:COLOR 7:PRINT" - Addition"
  31. 1040 LOCATE 7,10:COLOR 15:PRINT "2";:COLOR 7:PRINT" - Subtraction"
  32. 1050 LOCATE 8,10:COLOR 15:PRINT "3";:COLOR 7:PRINT" - Multiplication"
  33. 1060 LOCATE 9,10:COLOR 15:PRINT "4";:COLOR 7:PRINT" - Division"
  34. 1070 LOCATE 10,10:COLOR 15:PRINT "5";:COLOR 7:PRINT" - Addition and Subtraction
  35. 1080 LOCATE 11,10:COLOR 15:PRINT "6";:COLOR 7:PRINT" - Multiplication and Division"
  36. 1090 LOCATE 12,10:COLOR 15:PRINT "7";:COLOR 7:PRINT" - Addition, Subtraction, Multiplication and Division"
  37. 1100 LOCATE 14,1:PRINT "Enter the number for the type(s) of operations desired - ";
  38. 1110 GOSUB 59990
  39. 1120 IF INSTR("1234567",IKEY$)=0 THEN 1110
  40. 1130 L1=VAL(IKEY$):LOCATE 14,1:PRINT STRING$(75,32)
  41. 1140 LOCATE 14,1:PRINT"Enter the level of difficulty desired ";:COLOR 15:PRINT"(1-10)";:COLOR 7:PRINT" - ";
  42. 1150 INPUT L:IF L<1 OR L>10 THEN 1140
  43. 1160 RETURN
  44. 2000 GOSUB 3000 'initialize result tally
  45. 2010 ON L1 GOSUB 4000,5000,6000,7000,8000,9000,10000 'select value
  46. 2020 GOSUB 11000 'display the problem
  47. 2030 GOSUB 12000 'accept the answer
  48. 2040 GOSUB 13000 'evaluate answer & tally results
  49. 2050 IF R=1 THEN 2010
  50. 2060 GOSUB 13900 'give final results
  51. 2070 TIMEOUT=12:GOSUB 59950:RETURN
  52. 3000 FOR I=1 TO 4
  53. 3010 S(1,I)=0 'number of consecutive correct responses
  54. 3020 IF L1=I OR L1=7 OR (L1=5 AND I<3) OR (L1=6 AND I>2) THEN S(2,I)=L ELSE S(2,I)=0 'level of difficulty
  55. 3030 S(3,I)=0 'total correct answers
  56. 3040 NEXT I
  57. 3050 S=0 'total exercises tried
  58. 3060 RETURN
  59. 4000 REM select addition values
  60. 4010 V1=INT(RND*10*S(2,1)):V2=INT(RND*(10*S(2,1)-V1)):T=1:RETURN
  61. 5000 REM select subtraction values
  62. 5010 V1=INT(RND*10*S(2,2)):V2=INT(RND*V1):T=2:RETURN
  63. 6000 REM select multiplication values
  64. 6010 V1=INT(RND*5*S(2,3)):IF V1=0 THEN 6010 ELSE V2=INT((RND*10*S(2,3))/V1):T=3:RETURN
  65. 7000 REM select division values
  66. 7010 V1=INT(RND*10*S(2,4)):V2=INT(RND*V1):IF V1=0 OR V2=0 THEN 7010 ELSE IF INT(V1/V2)<>V1/V2 THEN 7010
  67. 7020 T=4:RETURN
  68. 8000 REM select addition or subtraction values
  69. 8010 IF RND<.5 THEN 4000 ELSE 5000
  70. 9000 REM select multiplication or division values
  71. 9010 IF RND<.5 THEN 6000 ELSE 7000
  72. 10000 REM select addition, subtraction, multiplication or division values
  73. 10010 ON INT(RND*10)+1 GOTO 4000,5000,6000,7000,4000,5000,6000,7000,4000,5000:STOP
  74. 11000 REM display the problem
  75. 11010 CLS
  76. 11020 V1$=STR$(V1):V2$=STR$(V2)
  77. 11025 IF V1=0 THEN LOCATE 11,16:PRINT NUMBER(10);:GOTO 11050
  78. 11030 IF LEN(V1$)>2 THEN LOCATE 11,10:PRINT NUMBER(VAL(MID$(V1$,2,1)));
  79. 11035 IF VAL(RIGHT$(V1$,1))=0 THEN LOCATE 11,16:PRINT NUMBER(10);:GOTO 11050
  80. 11040 LOCATE 11,16:PRINT NUMBER(VAL(RIGHT$(V1$,1)));
  81. 11050 LOCATE 11,27:PRINT NUMBER(T+10);
  82. 11060 IF V2=0 THEN LOCATE 11,41:PRINT NUMBER(10);:GOTO 11100
  83. 11070 IF LEN(V2$)>2 THEN LOCATE 11,35:PRINT NUMBER(VAL(MID$(V2$,2,1)));
  84. 11080 IF VAL(RIGHT$(V2$,1))=0 THEN LOCATE 11,41:PRINT NUMBER(10);:GOTO 11100
  85. 11090 LOCATE 11,41:PRINT NUMBER(VAL(RIGHT$(V2$,1)));
  86. 11100 LOCATE 11,53:PRINT NUMBER(15);
  87. 11110 RETURN
  88. 12000 REM accept the answer
  89. 12010 LOCATE 18,31,,0,13:COLOR 15:PRINT"The answer is - ";:INPUT A$:COLOR 7
  90. 12020 A=VAL(A$):LOCATE ,,,13
  91. 12030 IF A=0 THEN LOCATE 11,71:NUMBER=NUMBER(10):GOSUB 12500:GOTO 12070
  92. 12040 IF LEN(A$)>1 THEN LOCATE 11,65:NUMBER=NUMBER(VAL(LEFT$(A$,1))):GOSUB 12500
  93. 12050 IF VAL(RIGHT$(A$,1))=0 THEN LOCATE 11,71:NUMBER=NUMBER(10):GOSUB 12500:GOTO 12070
  94. 12060 LOCATE 11,71:NUMBER=NUMBER(VAL(RIGHT$(A$,1))):GOSUB 12500
  95. 12070 RETURN
  96. 12500 FOR I=1 TO LEN(NUMBER):PRINT MID$(NUMBER,I,1);:NEXT I:RETURN
  97. 13000 REM evaluate the answer & tally the results
  98. 13010 C%=0:ON T GOSUB 13100,13200,13300,13400
  99. 13020 IF C%=1 THEN GOSUB 13500 ELSE GOSUB 13700
  100. 13030 LOCATE 25,27:PRINT"Another exercise (";:COLOR 15:PRINT"Y";:COLOR 7:PRINT" or ";:COLOR 15:PRINT"N";:COLOR 7:PRINT")?" ;
  101. 13040 GOSUB 59990:IF INSTR("ynsYNS",IKEY$)=0 THEN 13040
  102. 13050 IF IKEY$="y" OR IKEY$="Y" THEN R=1
  103. 13060 IF IKEY$="n" OR IKEY$="N" THEN R=0
  104. 13070 IF IKEY$="s" OR IKEY$="S" THEN GOSUB 13900:GOTO 13030
  105. 13080 RETURN
  106. 13100 V3=V1+V2:IF A=V3 THEN C%=1
  107. 13110 RETURN
  108. 13200 V3=V1-V2:IF A=V3 THEN C%=1
  109. 13210 RETURN
  110. 13300 V3=V1*V2:IF A=V3 THEN C%=1
  111. 13310 RETURN
  112. 13400 V3=V1/V2:IF A=V3 THEN C%=1
  113. 13410 RETURN
  114. 13500 PLAY "mbc16c16c16ge8g"
  115. 13510 S(1,T)=S(1,T)+1:S(3,T)=S(3,T)+1
  116. 13520 IF S(1,T)>15 THEN S(1,T)=0:S(2,T)=S(2,T)+1
  117. 13530 IF S(2,T)>10 THEN S(2,T)=10
  118. 13540 FOR I=15 TO 25:LOCATE I,1:PRINT SPACE$(79);:NEXT I
  119. 13550 S=S+1:IX=INT(RND*6)+1
  120. 13560 LOCATE 20,40-LEN(C$(IX))/2:COLOR 15:PRINT C$(IX):COLOR 7
  121. 13570 RETURN
  122. 13700 PLAY "n50n25":S(1,T)=0:S=S+1
  123. 13705 NUMBER=NUMBER(0):LOCATE 11,65:GOSUB 12500:LOCATE 11,71:GOSUB 12500
  124. 13710 IF V3=0 THEN LOCATE 11,65:NUMBER=NUMBER(0):GOSUB 12500:LOCATE 11,71:NUMBER=NUMBER(10):GOSUB 12500:GOTO 13800
  125. 13720 IF V3>9 THEN LOCATE 11,65:NUMBER=NUMBER(VAL(MID$(STR$(V3),2,1))):GOSUB 12500
  126. 13730 IF INT(V3/10)=V3/10 THEN LOCATE 11,71:NUMBER=NUMBER(10):GOSUB 12500:GOTO 13800
  127. 13740 LOCATE 11,71:NUMBER=NUMBER(VAL(RIGHT$(STR$(V3),1))):GOSUB 12500
  128. 13800 LOCATE 18,28:COLOR 15:PRINT"NOTE THE CORRECT ANSWER":COLOR 7
  129. 13810 RETURN
  130. 13900 CLS:LOCATE 12,30:PRINT"CONSECUTIVE      DIFFICULTY     TOTAL"
  131. 13910 LOCATE 13,32:PRINT"CORRECT          LEVEL       CORRECT"
  132. 13920 LOCATE 14,20:PRINT STRING$(50,"█")
  133. 13930 LOCATE 15,1:PRINT"ADDITION" TAB(20) USING"█             ##               ##          ##    █";S(1,1),S(2,1),S(3,1)
  134. 13940 LOCATE 16,1:PRINT"SUBTRACTION" TAB(20) USING"█             ##               ##          ##    █";S(1,2),S(2,2),S(3,2)
  135. 13950 LOCATE 17,1:PRINT"MULTIPLICATION" TAB(20) USING"█             ##               ##          ##    █";S(1,3),S(2,3),S(3,3)
  136. 13960 LOCATE 18,1:PRINT"DIVISION" TAB(20) USING"█             ##               ##          ##    █";S(1,4),S(2,4),S(3,4)
  137. 13965 LOCATE 19,20:PRINT STRING$(50,"█")
  138. 13970 LOCATE 22,30:PRINT USING"Percent Correct = ###";INT(((S(3,1)+S(3,2)+S(3,3)+S(3,4))/S)*100)
  139. 13980 RETURN
  140. 59950 TIMEOUT$=TIME$:TIME2=VAL(LEFT$(TIMEOUT$,2))*120+VAL(MID$(TIMEOUT$,4,2))*60+VAL(RIGHT$(TIMEOUT$,2))
  141. 59960 TIMEOUT$=TIME$:TIME3=VAL(LEFT$(TIMEOUT$,2))*120+VAL(MID$(TIMEOUT$,4,2))*60+VAL(RIGHT$(TIMEOUT$,2))
  142. 59970 IF TIMEOUT > TIME3 - TIME2 THEN 59960 ELSE RETURN
  143. 59980 RNDTIME$=TIME$:RNDVAL=VAL(LEFT$(RNDTIME$,2))*120+VAL(MID$(RNDTIME$,4,2))*60+VAL(RIGHT$(RNDTIME$,2)):RANDOMIZE RNDVAL:RETURN
  144. 59990 IKEY$=INKEY$:IF IKEY$="" THEN 59990 ELSE RETURN
  145.