home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib22b.dsk / CONCENTRATION.bas < prev    next >
BASIC Source File  |  2023-02-26  |  9KB  |  112 lines

  1. 10  REM  **********************
  2. 20  REM  *   CONCENTRATION    *
  3. 30  REM  *   BY STEVEN WONG   *
  4. 40  REM  * COPYRIGHT (C) 1984 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  REM 
  9. 90  LOMEM: 24576: GOTO 760
  10. 100  REM 
  11. 110 II = II -1:TT =  INT(II/15): IF II/15 < >TT  THEN  RETURN 
  12. 120  &  POP 75,2:J = TT >9: IF TT = 5  THEN FF = 112
  13. 130  POKE 1892,TT -10 *J +FF: IF TT <20  THEN  POKE 1891,FF +J
  14. 140  IF TT  THEN  RETURN 
  15. 150 OF = 1: POP : RETURN 
  16. 160 I =  FRE(0):HP =  POS(0) +1:I$ = ""
  17. 170  INVERSE : PRINT " ";: NORMAL : PRINT BS$;
  18. 180 I =  PEEK(KB) -128: IF TF  THEN  GOSUB 110
  19. 190  IF I <0  THEN 180
  20. 200  POKE KR,0: &  POP I +50,2:A$ =  CHR$(I): IF I = 13  AND  LEN(I$)  THEN  PRINT " ";:I =  FRE(0): RETURN 
  21. 210  IF ( LEN(I$) >6  OR I <33)  AND I < >8  THEN 170
  22. 220  IF I < >8  THEN  PRINT A$;:I$ = I$ +A$: GOTO 170
  23. 230  IF TF  THEN  GOSUB 110: GOSUB 110
  24. 240  IF  LEN(I$) <2  THEN  HTAB HP: PRINT "  ";: HTAB HP: GOTO 160
  25. 250  PRINT BS$"  "BS$BS$;:I$ =  LEFT$(I$, LEN(I$) -1): GOTO 170
  26. 260 A =  ASC( LEFT$(I$,1)) -64:B =  VAL( RIGHT$(I$,1))
  27. 270  IF A <1  OR A >4  OR B <1  OR B >6  OR  LEN(I$) < >2  THEN EF = 1: RETURN 
  28. 280 C = L(A,B): IF M1 = A  AND M2 = B  OR C =  -1  THEN EF = 1: RETURN 
  29. 290  FOR I = 1 TO 5: &  POP I *10 +200,10: NEXT :J = X(B):K = Y(A):T1 = 14
  30. 300  HCOLOR= 4:X1 = J -18:Y1 = K -14: FOR I = Y1 +15 TO Y1 +30: HPLOT X1,I TO X1 +36,I
  31. 310  HPLOT X1,I +14 -T1 TO X1 +36,I +14 -T1:T1 = T1 +2: NEXT : HCOLOR= SC(C): DRAW C AT J -DX(C),K -DY(C): RETURN 
  32. 320  FOR J = 1 TO 250: NEXT : RETURN 
  33. 330  FOR J = 1 TO 500: NEXT : RETURN 
  34. 340 EF = 0:FF = 176:II = 299:M1 = 0:M2 = 0:OF = 0: VTAB 23: HTAB 20: PRINT "20"
  35. 350  FOR I = 21 TO 24: VTAB I: HTAB 1: PRINT  SPC( 18): NEXT : VTAB 21: HTAB 1: RETURN 
  36. 360 A = M1:B = M2: GOSUB 410:A = M3:B = M4: GOSUB 410
  37. 370  CALL 54915: ON PN GOTO 750,740
  38. 380  VTAB 23: IF PN = 1  THEN S1 = S1 +TS:S1 = S1 *(S1 >0):I = S1
  39. 390  IF PN = 2  THEN  PRINT :S2 = S2 +TS:S2 = S2 *(S2 >0):I = S2
  40. 400  HTAB 36: PRINT  RIGHT$("000" + STR$(I),4);: RETURN 
  41. 410  &  POP 150,10: &  POP 200,10: &  POP 250,10:J = X(B):K = Y(A):X1 = J -18:X2 = J -14:Y1 = K -14:T1 = 30:T2 = 22
  42. 420  FOR I = Y1 TO Y1 +15: HCOLOR= 4: HPLOT X1,I TO X1 +36,I: HPLOT X1,I +T1 TO X1 +36,I +T1:T1 = T1 -2: IF I <K -10  THEN  NEXT 
  43. 430  HCOLOR= 5: HPLOT X2,I TO X2 +28,I: HPLOT X2,I +T2 TO X2 +28,I +T2:T2 = T2 -2: NEXT : RETURN 
  44. 440  POKE KR,0: VTAB 12: HTAB 20: PRINT "09": POKE  -16303,0: GOSUB 330:I = 100
  45. 450  IF  PEEK(KB) <128  THEN I = I -1: IF I  THEN  &  POP 150 -I,3: POKE 1468, INT(I/10) +176: GOTO 450
  46. 460  POKE KR,0: GOSUB 320: &  POP 50,100: GOSUB 320: POKE  -16304,0: &  POP 100,40: RETURN 
  47. 470  VTAB 24: HTAB 1: PRINT "A MATCH!";: FOR I = 10 TO 230  STEP 10: &  POP I,3: &  POP I +20,3: &  POP I,10: NEXT : GOTO 330
  48. 480  VTAB 24: HTAB 1: PRINT "CORRECT!";: FOR I = 10 TO 150: &  POP I,2: NEXT : GOSUB 330:TS = 25 +TT *5: GOTO 380
  49. 490  VTAB 24: HTAB 1: PRINT "WRONG ANSWER!";: FOR I = 10 TO 150  STEP 10: &  POP I,10: &  POP 1,15: NEXT : GOSUB 330:TS =  -5: GOTO 380
  50. 500  VTAB 24: HTAB 1: PRINT "SORRY, NO MATCHES!";: FOR I = 1 TO 5: &  POP 100,20 +I: &  POP 150,20 -I: NEXT : GOSUB 330:TS =  -10: GOTO 380
  51. 510  VTAB 24: HTAB 1: PRINT "TIME'S UP";: FOR I = 200 TO 100  STEP  -10: &  POP I,10: &  POP 50,5: GOSUB 330:TS =  -15: GOTO 380
  52. 520  VTAB 24: HTAB 1: PRINT "ILLEGAL MOVE!";: FOR I = 1 TO 5: &  POP 170 +10 *I,60 +I: NEXT : GOSUB 330:TS =  -20: GOTO 380
  53. 530  VTAB 21: HTAB 1: GOSUB 350: IF S1 = S2  THEN  FLASH : PRINT "  TIE GAME  ": NORMAL : GOTO 560
  54. 540  IF S1 >S2  THEN  INVERSE : PRINT P1$;: NORMAL : PRINT " DEFEATS": PRINT P2$", "S1" TO "S2: GOTO 560
  55. 550  PRINT P2$" DEFEATS": INVERSE : PRINT P1$;: NORMAL : PRINT ", "S2" TO "S1
  56. 560  VTAB 24: PRINT "PLAY AGAIN? ";: GET A$: PRINT A$: IF A$ < >"N"  THEN  RUN 
  57. 570  TEXT : HOME : END 
  58. 580  GOSUB 350:N1 =  FN I(LE):N2 =  FN I(LE):I =  INT( RND(1) *4) +1: ON I GOTO 590,600,620,620
  59. 590  PRINT "ADDITION:":N3 = N1 +N2:I = 43: GOTO 640
  60. 600  PRINT "SUBTRACTION:": IF N2 >N1  THEN I = N2:N2 = N1:N1 = I
  61. 610 N3 = N1 -N2:I = 45: GOTO 640
  62. 620 N1 =  INT(N1/2):N2 =  INT(N2/2): IF I = 3  THEN  PRINT "MULTIPLICATION:":N3 = N2 *N1:I = 42: GOTO 640
  63. 630  PRINT "DIVISION":N3 = N1:N1 = N1 *N2:I = 47: GOTO 640
  64. 640  PRINT N1 CHR$(I)N2"=";: GOSUB 160: IF OF  THEN  GOSUB 510: GOTO 360
  65. 650  IF  VAL(I$) < >N3  THEN  VTAB 23: HTAB HP: FLASH : PRINT N3: NORMAL : GOSUB 490: GOTO 360
  66. 660  GOSUB 480:L(M1,M2) =  -1:L(M3,M4) =  -1:CS = 0: RETURN 
  67. 670  PRINT "'S TURN": IF CS  THEN  GOSUB 440
  68. 680 CS = 1: VTAB 22: HTAB 1: PRINT "MOVE 1: ";: GOSUB 160: IF OF  THEN  GOSUB 510: GOTO 370
  69. 690  GOSUB 260:M1 = A:M2 = B: IF EF  THEN  GOSUB 520: GOTO 370
  70. 700  VTAB 23: HTAB 1: PRINT "MOVE 2: ";: GOSUB 160: IF OF  THEN  GOSUB 510:A = M1:B = M2: GOSUB 410: GOTO 370
  71. 710  GOSUB 260:M3 = A:M4 = B: IF EF  THEN  GOSUB 520:A = M1:B = M2: GOSUB 410: GOTO 370
  72. 720  IF L(M1,M2) < >L(M3,M4)  THEN  GOSUB 500:A = M1:B = M2: GOSUB 410:A = M3:B = M4: GOSUB 410: GOTO 370
  73. 730  GOSUB 470: GOTO 580
  74. 740  GOSUB 340:PN = 1: INVERSE : PRINT P1$;: NORMAL : GOSUB 670:NU = NU +1: ON (NU = 12) +1 GOTO 740,530
  75. 750  GOSUB 340:PN = 2: PRINT P2$;: GOSUB 670:NU = NU +1: ON (NU = 12) +1 GOTO 750,530
  76. 760  TEXT : HOME : IF  PEEK(16384) < >32  THEN  PRINT  CHR$(4)"BLOAD M.SHAPES"
  77. 770  POKE 48,170: HLIN 9,30 AT 8: HLIN 9,30 AT 20: VLIN 9,19 AT 8: VLIN 9,19 AT 31
  78. 780  VTAB 7: HTAB 12: PRINT "MATH CONCENTRATION": PRINT : HTAB 14: PRINT "BY STEVEN WONG"
  79. 790  POKE 1013,76: POKE 1014,0: POKE 1015,64: POKE 230,32: POKE 232,48: POKE 233,64: CALL 62450
  80. 800 I = 12: DIM A(I),B(I),DX(I),DY(I),SC(I):KB =  -16384:KR =  -16368:S1 = 100:S2 = 100:BS$ =  CHR$(8)
  81. 810 VA(1) = 10:VB(1) = 2:VA(2) = 25:VB(2) = 5:VA(3) = 50:VB(3) = 10: DEF  FN I(LE) =  INT( RND(1) *VA(LE) +VB(LE))
  82. 820  FOR I = 1 TO 3:X(I) = 22 +(I -1) *42:X(I +3) = 150 +X(I): NEXT 
  83. 830  FOR I = 1 TO 4:Y(I) = 19 +(I -1) *33: NEXT : FOR I = 1 TO 12: READ SC(I),DX(I),DY(I): NEXT 
  84. 840  DATA 3,8,6,3,9,9,3,9,3,7,7,8,3,9,2,7,9,4,3,7,8,3,14,4,3,9,9,7,8,6,3,10,9,7,10,2
  85. 850  FOR I = 1 TO 12:A(I) = I:B(I) = I: NEXT : FOR I = 1 TO 12:J =  INT( RND(1) *12 +1)
  86. 860 K =  INT( RND(1) *12 +1):T = A(I):A(I) = A(J):A(J) = T:T = B(I):B(I) = B(K):B(K) = T: NEXT 
  87. 870  FOR J = 1 TO 3: FOR K = 1 TO 4:I = K +(J -1) *4:L(K,J) = A(I):L(K,J +3) = B(I): NEXT : NEXT : POKE KR,0
  88. 880  VTAB 22: HTAB 4: PRINT "->    PRESS ANY KEY TO BEGIN    <-";
  89. 890  FOR I = 1 TO 3: &  POP 100 -I,2: HTAB 3 +I: PRINT "->";: IF  PEEK(KB) >128  THEN 930
  90. 900  HTAB 37 -I: PRINT "<-";: GOSUB 320: NEXT : HTAB 4: PRINT  SPC( 4): HTAB 34: PRINT  SPC( 4)
  91. 910  FOR I = 1 TO 3: &  POP 100 -I,2: HTAB 7 -I: PRINT "<-";: IF  PEEK(KB) >128  THEN  POKE KR,0: CALL 54915: GOTO 930
  92. 920  HTAB 33 +I: PRINT "->";: GOSUB 320:J =  RND(1): NEXT : GOTO 880
  93. 930  HOME : INVERSE : PRINT  SPC( 11)"MATH CONCENTRATION" SPC( 12)"COPYRIGHT (C) 1984  BY MICROSPARC, INC ": NORMAL 
  94. 940  VTAB 5: PRINT "MATH CONCENTRATION IS THE TIMELESS GAME OF CONCENTRATION WITH AN ADDED TWIST."
  95. 950  PRINT : PRINT "THE OBJECT OF THE GAME IS STILL TO MATCHSHAPES, BUT A MATH PROBLEM MUST ALSO BE"
  96. 960  PRINT "CORRECTLY ANSWERED TO WIN POINTS.": PRINT : PRINT "TO ADD TO THE EXCITEMENT, THERE IS A"
  97. 970  PRINT "TWENTY SECOND TIME LIMIT IN WHICH THE   TWO TASKS MUST BE COMPLETED."
  98. 980  PRINT : PRINT "ENTER YOUR NAMES AND WE'LL BEGIN...": VTAB 19: HTAB 1: PRINT "PLAYER  1'S NAME? ";: GOSUB 160:P1$ = I$
  99. 990  VTAB 21: HTAB 1: CALL  -868: PRINT "PLAYER  2'S NAME? ";: GOSUB 160:P2$ = I$: IF P1$ = P2$  THEN 990
  100. 1000  VTAB 23: HTAB 1: INVERSE : PRINT "1=EASY 2=MODERATE 3=HARD": NORMAL 
  101. 1010  VTAB 24: HTAB 1: CALL  -868: PRINT "WHAT LEVEL (1-3)? ";: GOSUB 160:LE =  VAL(I$): IF LE <1  OR LE >3  THEN 1010
  102. 1020  GOSUB 330: &  POP 81,32: &  POP 77,128: &  POP 81,128: &  POP 102,64: &  POP 121,128: &  POP 91,64: GOSUB 320
  103. 1030 TF = 1: HOME : HGR : SCALE= 1: ROT= 0: HCOLOR= 6
  104. 1040  FOR I = 3 TO 135  STEP 33: FOR J = 0 TO 1: HPLOT 0,I +J TO 129,I +J: HPLOT 150,I +J TO 279,I +J: NEXT : NEXT 
  105. 1050  FOR I = 0 TO 126  STEP 42: FOR J = 0 TO 2: HPLOT I +J,3 TO I +J,153: HPLOT I +J +150,3 TO I +J +150,153: NEXT : NEXT 
  106. 1060  FOR I = 0 TO 1: HPLOT 0,152 +I TO 129,152 +I: HPLOT 150,152 +I TO 279,152 +I: NEXT : HCOLOR= 5
  107. 1070  FOR I = 13 TO 22: READ J,K: XDRAW I AT J,K: NEXT : DATA 137,17,137,50,137,83,137,116,21,141,62,141,104,141,170,141,212,141,254,141 
  108. 1080  FOR I = 1 TO 4: FOR J = 1 TO 6:X1 = X(J) -14:Y1 = Y(I) -10:L = 22: &  POP 200,5
  109. 1090  FOR K = Y1 TO Y1 +11: HPLOT X1,K TO X1 +28,K: HPLOT X1,K +L TO X1 +28,K +L:L = L -2: NEXT : NEXT : NEXT 
  110. 1100  VTAB 21: HTAB 19: PRINT "TIME";: HTAB 26: PRINT "PLAYER'S SCORES": HTAB 20: PRINT "20";: HTAB 26: INVERSE 
  111. 1110  PRINT P1$;: NORMAL : HTAB 34: PRINT "-";: HTAB 36: PRINT "0100": HTAB 26: PRINT P2$;: HTAB 34: PRINT "-";
  112. 1120  HTAB 36: PRINT "0100";: VTAB 8: HTAB 7: PRINT "PRESS ANY KEY TO RESUME PLAY": POKE 48,173: HLIN 6,33 AT 16: POKE 34,20: GOTO 740