home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib27b.dsk / QUINTIC.TEACHER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  8KB  |  144 lines

  1. 10  REM  ***************************
  2. 20  REM  *    QUINTIC.TEACHER      *
  3. 30  REM  * BY JAMES R. GESCHWENDER *
  4. 40  REM  *   COPYRIGHT (C) 1986    *
  5. 50  REM  *   BY MICROSPARC, INC.   *
  6. 60  REM  *   CONCORD, MA  01742    *
  7. 70  REM  ***************************
  8. 80  REM  INITIALIZE
  9. 90  HIMEM: 34816: LOMEM: 24576: DIM ES%(100),MS%(100)
  10. 100  TEXT : HOME : HTAB 13: PRINT "QUINTIC.TEACHER": PRINT : HTAB 9: PRINT "BY JAMES R. GESCHWENDER": VTAB 6: PRINT "** COPYRIGHT 1986 BY MICROSPARC, INC. **"
  11. 110 EF = 3: ONERR  GOTO 1410
  12. 120  PRINT  CHR$(4);"BLOAD QUINTIC.SHAPES,A$9200"
  13. 130  POKE 216,0
  14. 140  POKE 232,0: POKE 233,146: SCALE= 1: HCOLOR= 3: ROT= 0
  15. 150  GOTO 740
  16. 160  REM  MAIN MENU
  17. 170  TEXT : HOME : HTAB 13: PRINT "QUINTIC.TEACHER": PRINT : PRINT "** COPYRIGHT 1986 BY MICROSPARC, INC **": VTAB 6: HTAB 16: PRINT "MAIN MENU": VTAB 10
  18. 180  HTAB 8: PRINT "1) DISPLAY END STRATEGY": HTAB 8: PRINT "2) DISPLAY CENTER STRATEGY": HTAB 8: PRINT "3) SAVE COMPUTER PLAYER"
  19. 190  HTAB 8: PRINT "4) INSTRUCTIONS": HTAB 8: PRINT "5) QUIT"
  20. 200  VTAB 20: PRINT "ON DISPLAY SCREENS: USE <--, -->": PRINT " AND SPACE TO MOVE CURSOR, <RETURN> TO": PRINT " CHANGE ITEM, <ESC> FOR MENU."
  21. 210  VTAB 17: HTAB 10: INPUT "WHICH? ";A$:M =  VAL(A$): IF M >5  OR M <1  THEN 170
  22. 220  ON M GOTO 240,340,870,1050,1420
  23. 230  REM  END STRATEGY
  24. 240  HGR :X = 15:Y = 0:C = 0: POKE  -16302,0:AX = 220:AY = 157:A$ = "PAGE 1": GOSUB 1010
  25. 250  FOR N1 = 15 TO 17: FOR N2 = 15 TO 17: FOR N3 = 15 TO 17: FOR N4 = 15 TO 17
  26. 260 C = C +1: IF C = 42  THEN  HGR2 :Y = 0:X = 15:AX = 220:AY = 157:A$ = "PAGE 2": GOSUB 1010
  27. 270  XDRAW N1 +36 AT X,24 +Y: XDRAW N2 +36 AT X,18 +Y: XDRAW N3 +36 AT X,Y +12: XDRAW N4 +36 AT X,Y +6: HCOLOR= 3: XDRAW 54 AT X,Y +30
  28. 280 A$ = "00" + STR$(ES%(C)):A$ =  RIGHT$(A$,3):AX = X -9:AY = Y +42: GOSUB 1010
  29. 290 X = X +25: IF X >275  THEN X = 15:Y = Y +48
  30. 300  POKE ADD +32992,P: POKE ADD +33248,P
  31. 310  NEXT : NEXT : NEXT : NEXT 
  32. 320  GOTO 430
  33. 330  REM  CENTER STRATEGY
  34. 340  HGR :X = 15:Y = 0:C = 0: POKE  -16302,0:AX = 220:AY = 157:A$ = "PAGE 1": GOSUB 1010
  35. 350  FOR N1 = 15 TO 17: FOR N2 = 15 TO 17: FOR N3 = 15 TO 17: FOR N4 = 15 TO 17
  36. 360 C = C +1: IF C = 42  THEN  HGR2 :Y = 0:X = 15:AX = 220:AY = 157:A$ = "PAGE 2": GOSUB 1010
  37. 370  XDRAW N1 +36 AT X,Y +12: XDRAW N2 +36 AT X,Y +6: XDRAW N3 +36 AT X,Y +24: XDRAW N4 +36 AT X,Y +30: HCOLOR= 3: XDRAW 54 AT X,Y +18
  38. 380 A$ = "00" + STR$(MS%(C)):A$ =  RIGHT$(A$,3):AX = X -9:AY = Y +42: GOSUB 1010
  39. 390 X = X +25: IF X >275  THEN X = 15:Y = Y +48
  40. 400  POKE ADD +33504,P
  41. 410  NEXT : NEXT : NEXT : NEXT 
  42. 420  REM  TEACH STUDENT
  43. 430 N = 1:A = 49: GOTO 460
  44. 440  GET A$:A =  ASC(A$)
  45. 450  HCOLOR= 0: HPLOT CX,CY TO CX +8,CY TO CX +8,CY +32 TO CX,CY +32 TO CX,CY: HCOLOR= 3
  46. 460 D = 0: IF A = 49  OR A = 50  THEN  POKE  -16349 +A,0: POKE 230,(A -48) *32:N = 1 +41 *(A = 50)
  47. 470  IF A = 27  THEN 170
  48. 480  IF A = 32  THEN N = N +11: IF N >41  AND N <53  THEN N = 1
  49. 490  IF A = 8  THEN N = N -1: IF N = 41  THEN N = 81
  50. 500  IF A = 21  THEN N = N +1: IF N = 42  THEN N = 1
  51. 510  IF N <1  THEN N = 41
  52. 520  IF N >81  THEN N = 42
  53. 530 NN = N -41 *(N >41):CX = ((NN/11) - INT(NN/11)) *11: IF CX = 0  THEN CX = 11
  54. 540 CY =  INT(NN -CX +.1) *48/11 +2:CX =  INT(CX *25 -13.9)
  55. 550  IF A = 13  OR D = 3  THEN 580
  56. 560  HPLOT CX,CY TO CX +8,CY TO CX +8,CY +32 TO CX,CY +32 TO CX,CY
  57. 570  GOTO 440
  58. 580  HPLOT CX -7,CY +32 TO CX +15,CY +32 TO CX +15,CY +42 TO CX -7,CY +42 TO CX -7,CY +32
  59. 590  HPLOT 223,166 TO 256,166 TO 256,178 TO 223,178 TO 223,166
  60. 600 AX = 229:AY = 175:D = 0:S = 0
  61. 610  XDRAW 50 AT AX,AY: GET A$:A =  ASC(A$): GOSUB 620: GOTO 610
  62. 620  XDRAW 50 AT AX,AY: IF A = 8  AND D >0  THEN D = D -1:AX = AX -7: GOSUB 1010:AX = AX -7: RETURN 
  63. 630  IF A = 13  AND (D = 3  OR D = 0)  THEN  POP : ON D +1 GOTO 700,100,100,660
  64. 640  IF A <48  OR A >57  OR D = 3  THEN  RETURN 
  65. 650 S(D) = A -48: GOSUB 1010:D = D +1: RETURN 
  66. 660 S = S(2) +10 *S(1) +100 *S(0):AX = 229:A$ = "???": GOSUB 1010: IF S >255  OR S <1  THEN 600
  67. 670  IF M = 1  THEN ES%(N) = S: GOTO 690
  68. 680 MS%(N) = S
  69. 690 A$ = "00" + STR$(S):A$ =  RIGHT$(A$,3):AX = CX -5:AY = CY +40: GOSUB 1010
  70. 700  HCOLOR= 0: HPLOT CX -7,CY +32 TO CX +15,CY +32 TO CX +15,CY +42 TO CX -7,CY +42 TO CX -7,CY +32
  71. 710  HPLOT 223,166 TO 256,166 TO 256,178 TO 223,178 TO 223,166: HCOLOR= 3
  72. 720 A = 21: ON D +1 GOTO 560,100,100,500
  73. 730  REM  LOAD STUDENT
  74. 740 EF = 1: ONERR  GOTO 1410
  75. 750  VTAB 12: INPUT "WHAT IS YOUR PUPIL'S NAME? ";NAME$:F$ = NAME$: GOSUB 1380: IF NF  THEN  ON (F$ = "?") +1 GOSUB 1440,1430: VTAB 12 -10 *(F$ = "?"): HTAB 1: CALL  -958: GOTO 750
  76. 760  PRINT : PRINT "LOADING ";NAME$
  77. 770  PRINT  CHR$(4);"BLOAD";NAME$
  78. 780  POKE 216,0
  79. 790  PRINT : PRINT "EXAMINING ";NAME$
  80. 800 N = 0: FOR N1 = 15 TO 17: FOR N2 = 15 TO 17: FOR N3 = 15 TO 17: FOR N4 = 15 TO 17:N = N +1
  81. 810 ADD = N1 *(N1 >15) +N2 *(N2 >15) *2 +N3 *(N3 >15) *4 +N4 *(N4 >15) *8
  82. 820 ES%(N) = ( PEEK(ADD +36352) + PEEK(ADD +36608))/2
  83. 830 MS%(N) =  PEEK(ADD +36864)
  84. 840  NEXT : NEXT : NEXT : NEXT 
  85. 850  GOTO 170
  86. 860  REM  SAVE STUDENT
  87. 870 EF = 2: ONERR  GOTO 1410
  88. 880  HOME : PRINT "ORIGINAL PLAYER NAME - ";NAME$: PRINT 
  89. 890  PRINT "WHAT NAME DO YOU WANT": INPUT "FOR THE NEWLY TAUGHT PLAYER? ";F$: GOSUB 1380: IF NF  THEN  ON (F$ = "?") +1 GOSUB 1440,1430: HOME : GOTO 880
  90. 900  PRINT : PRINT "FINALIZING CHANGES"
  91. 910 N = 0: FOR N1 = 15 TO 17: FOR N2 = 15 TO 17: FOR N3 = 15 TO 17: FOR N4 = 15 TO 17:N = N +1
  92. 920 ADD = N1 *(N1 >15) +N2 *(N2 >15) *2 +N3 *(N3 >15) *4 +N4 *(N4 >15) *8
  93. 930  POKE ADD +36352,ES%(N): POKE ADD +36608,ES%(N)
  94. 940  POKE ADD +36864,MS%(N)
  95. 950  NEXT : NEXT : NEXT : NEXT 
  96. 960  PRINT "SAVING ";F$
  97. 970  PRINT  CHR$(4);"BSAVE";F$;",A$8E00,L$300"
  98. 980  POKE 216,0
  99. 990  PRINT N$;" IS SAVED AND READY TO PLAY.": END 
  100. 1000  REM  SCREEN PRINT
  101. 1010  HCOLOR= 0: FOR W = 1 TO  LEN(A$):A =  ASC( MID$ (A$,W,1))
  102. 1020  DRAW 49 AT AX,AY: IF A >43  THEN  XDRAW A -43 AT AX,AY
  103. 1030 AX = AX +7: NEXT : HCOLOR= 3: RETURN 
  104. 1040  REM  INSTRUCTIONS
  105. 1050  VTAB 6: POKE 34,5: HOME : PRINT "THE QUINTIC.TEACHER PROGRAM IS DESIGNED": PRINT 
  106. 1060  PRINT "TO ALLOW YOU TO 'COACH' COMPUTER QUINTIC"
  107. 1070  PRINT "PLAYERS.  COACHING CONSISTS OF ALTERING": PRINT 
  108. 1080  PRINT "THE STRATEGIC PRIORITIES THAT THE PLAYER"
  109. 1090  PRINT "USES WHEN IT MAKES ITS CHOICE OF MOVES.": PRINT 
  110. 1100  PRINT "A STRATEGIC PRIORITY IS A RATING FROM": PRINT 
  111. 1110  PRINT "ONE TO TWO HUNDRED AND FIFTY FIVE THAT": PRINT 
  112. 1120  PRINT "REPRESENTS THE VALUE OF PLACING A WHITE": PRINT 
  113. 1130  PRINT "STONE AT THE INDICATED POSITION."
  114. 1140  GOSUB 1360
  115. 1150  PRINT "THERE ARE TWO TYPES OF PRIORITIES;": PRINT 
  116. 1160  PRINT "END PRIORITIES AND CENTER PRIORITIES.": PRINT 
  117. 1170  PRINT "A COMPLETE SET OF END OR CENTER": PRINT 
  118. 1180  PRINT "PRIORITIES REQUIRES TWO HIGH-RES SCREENS"
  119. 1190  PRINT "TO DISPLAY.  PRESSING THE '1' KEY BRINGS"
  120. 1200  PRINT "UP PAGE 1, AND THE '2' KEY PREDICTABLY": PRINT 
  121. 1210  PRINT "GIVES YOU PAGE 2.": GOSUB 1360
  122. 1220  PRINT "TO CHANGE A PRIORITY, MOVE THE 'CURSOR'": PRINT 
  123. 1230  PRINT "TO THE ITEM YOU WISH TO CHANGE BY USING": PRINT 
  124. 1240  PRINT "THE ARROW KEYS AND THE SPACE BAR.  ONCE": PRINT 
  125. 1250  PRINT "THERE, PRESS THE RETURN KEY.  THEN JUST": PRINT 
  126. 1260  PRINT "ENTER THE NEW PRIORITY AND PRESS RETURN": PRINT 
  127. 1270  PRINT "TWICE.  WHEN YOU HAVE MADE ALL THE": PRINT 
  128. 1280  PRINT "CHANGES YOU WISH TO MAKE, PRESS THE": PRINT 
  129. 1290  PRINT "ESCAPE KEY, AS THIS RETURNS YOU TO THE": PRINT 
  130. 1300  PRINT "MAIN MENU.": GOSUB 1360
  131. 1310  PRINT "THAT IS ALL THERE IS TO IT.  FROM THE": PRINT 
  132. 1320  PRINT "MAIN MENU YOU CAN SELECT THE SAVE OPTION"
  133. 1330  PRINT "AFTER WHICH YOU WILL BE READY TO TEST": PRINT 
  134. 1340  PRINT "CHANGES YOU HAVE MADE.  NOW TRY IT OUT.": GOSUB 1360
  135. 1350  GOTO 170
  136. 1360  VTAB 24: HTAB 8: PRINT "<RETURN TO CONTINUE>";: CALL  -678
  137. 1370  HOME : RETURN 
  138. 1380 NF = 1:LF =  LEN(F$): IF LF <9  AND LF  THEN  FOR NC = 1 TO LF:NA =  ASC( MID$ (F$,NC,1)):NF = ((NA >64  AND NA <91)  OR (NA = 46  AND NC >1)  OR (NA >47  AND NA <58  AND NC >1))  AND NF = 1: NEXT :NF =   NOT NF
  139. 1390  IF NF  THEN F$ =  LEFT$(F$,1)
  140. 1400  RETURN 
  141. 1410  POKE 216,0: PRINT  CHR$(4)"CLOSE": HOME : VTAB 12: PRINT "ERROR " PEEK(222): PRINT "IN LINE " PEEK(218) +256 * PEEK(219): GOSUB 1360: HOME : ON EF GOTO 740,870,110
  142. 1420  HOME : END 
  143. 1430  VTAB 2: HTAB 1: CALL  -958: VTAB 2: PRINT  CHR$(4)"CATALOG": GOSUB 1360: RETURN 
  144. 1440  VTAB 23: PRINT "NAME MUST BE 8 OR FEWER LETTERS": PRINT "PRESS <RETURN> TO CONTINUE.";: GET Z$: RETURN