home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib41b.dsk / HIGH.ROLLER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  11KB  |  221 lines

  1. 10  REM *********************
  2. 20  REM *    HIGH ROLLER    *
  3. 30  REM *   BY RUDY A. GUY  *
  4. 40  REM * COPYRIGHT 1991 BY *
  5. 50  REM *     MINDCRAFT     *
  6. 60  REM *  PUBLISHING CORP. *
  7. 70  REM * LINCOLN, MA 01773 *
  8. 80  REM *********************
  9. 90  ONERR  GOTO 2030
  10. 100  IF  PEEK(104) < >64  THEN  POKE 103,1: POKE 104,64: POKE 16384,0: PRINT  CHR$(4)"RUN HIGH.ROLLER"
  11. 110 EL = 1
  12. 120  PRINT  CHR$(4)"BLOAD HR.SHAPES,A$801"
  13. 130  POKE 232,1: POKE 233,8: ROT= 0: SCALE= 1
  14. 140  DIM AR(12),HP$(12),HS(12)
  15. 150 EL = 2
  16. 160  PRINT  CHR$(4)"RENAME HR.HIGH,HR.HIGH"
  17. 170  PRINT  CHR$(4)"OPEN HR.HIGH": PRINT  CHR$(4)"READ HR.HIGH"
  18. 180  FOR I = 1 TO 10: INPUT HP$(I),HS(I)
  19. 190  NEXT : PRINT  CHR$(4)"CLOSE"
  20. 200 EL = 0
  21. 210  REM  CHECK FOR GS OR //C PLUS
  22. 220 MC =  PEEK( -1)
  23. 230  IF MC = 196  OR MC = 200  THEN TL = 3: GOTO 260
  24. 240 TL = 1
  25. 250  REM  TITLE SCREEN
  26. 260  PRINT  CHR$(12) CHR$(21)
  27. 270  HOME : VTAB 10
  28. 280 A$ = "*** HIGH ROLLER ***": INVERSE : GOSUB 2010: NORMAL 
  29. 290 A$ = "By Rudy A. Guy": GOSUB 2010
  30. 300 A$ = "----------------": GOSUB 2010
  31. 310 A$ = "Copyright 1991": GOSUB 2010
  32. 320 A$ = "MindCraft Publishing Corp.": GOSUB 2010
  33. 330  VTAB 23:A$ = "(I)nstructions, (G)ame or (Q)uit ": GOSUB 2010
  34. 340 X =  PEEK( -16384):I =  RND(1)
  35. 350  IF X = 201  OR X = 233  THEN  POKE  -16368,0: GOTO 1760
  36. 360  IF X = 199  OR X = 231  THEN  POKE  -16368,0: GOTO 460
  37. 370  IF X = 209  OR X = 241  THEN  POKE  -16368,0: GOTO 390
  38. 380  GOTO 340
  39. 390  VTAB 23: CALL  -958
  40. 400  INPUT "Do you really want to quit? ";YN$
  41. 410  IF  LEFT$(YN$,1) = "y"  OR  LEFT$(YN$,1) = "Y"  THEN 440
  42. 420  IF  LEFT$(YN$,1) = "n"  OR  LEFT$(YN$,1) = "N"  THEN 270
  43. 430  CALL 64484: GOTO 390
  44. 440  TEXT : HOME : VTAB 12: PRINT "Thanks for playing.": VTAB 23: END 
  45. 450  REM   GAME STARTS HERE
  46. 460  HOME : VTAB 12: INPUT "Do you want to play the computer? ";YN$
  47. 470  IF  LEFT$(YN$,1) = "Y"  OR  LEFT$(YN$,1) = "y"  THEN CP = 1: GOTO 590
  48. 480  IF  LEFT$(YN$,1) = "N"  OR  LEFT$(YN$,1) = "n"  THEN CP = 0: GOTO 500
  49. 490  CALL 64484: GOTO 460
  50. 500  FOR I = 1 TO 2: HOME : VTAB 12
  51. 510  PRINT "Player #"I" - enter your name: ";: INPUT "";PL$(I)
  52. 520  IF  LEN(PL$(I)) <1  THEN  CALL 64484: GOTO 510
  53. 530  NEXT 
  54. 540  HOME : VTAB 10: FOR I = 1 TO 2: PRINT "Player #"I" - "PL$(I): NEXT 
  55. 550  VTAB 13: INPUT "Are these correct? ";YN$
  56. 560  IF  LEFT$(YN$,1) = "Y"  OR  LEFT$(YN$,1) = "y"  THEN 620
  57. 570  IF  LEFT$(YN$,1) = "N"  OR  LEFT$(YN$,1) = "n"  THEN 460
  58. 580  CALL 64484: GOTO 540
  59. 590  HOME : VTAB 12: INPUT "Please enter your name: ";PL$(1)
  60. 600  IF  LEN(PL$(1)) <1  THEN  CALL 64484: GOTO 590
  61. 610 PL$(2) = "Apple"
  62. 620  HOME : VTAB 12: INPUT "How many rounds? (2 to 10): ";RD$:RD =  VAL(RD$)
  63. 630  IF RD <2  OR RD >10  THEN  CALL 64484: GOTO 620
  64. 640  REM  INITIALIZE VARIABLES
  65. 650  FOR I = 2 TO 12:AR(I) = 0: NEXT :PS(1) = 0:PS(2) = 0: HGR 
  66. 660  FOR I = 1 TO RD
  67. 670  FOR J = 1 TO 2:TS = 0:TR = 0
  68. 680  REM  DRAW HIRES SCREEN
  69. 690  HCOLOR= 3: HPLOT 0,0: CALL  -3082
  70. 700  XDRAW 17 AT 80,10: XDRAW 18 AT 112,10: XDRAW 19 AT 139,10: XDRAW 20 AT 170,10
  71. 710  HCOLOR= 0: HPLOT 10,40 TO 270,40 TO 270,60 TO 10,60 TO 10,40
  72. 720  HPLOT 9,40 TO 9,60: HPLOT 271,40 TO 271,60
  73. 730  GOSUB 1580
  74. 740  VTAB 21: HTAB 1: CALL  -958
  75. 750  PRINT "Player       : ";PL$(J);: HTAB 31: PRINT "Round: ";I
  76. 760  PRINT "Score        : ";PS(J): PRINT "This round   : ";TS
  77. 770  PRINT "Score to beat: ";
  78. 780  IF J = 1  THEN  PRINT PS(2);: GOTO 800
  79. 790  PRINT PS(1);
  80. 800  IF J = 2  AND CP = 1  THEN 1410
  81. 810  VTAB 23: HTAB 30: INVERSE : PRINT "(R)OLL OR ": VTAB 24: HTAB 30: PRINT "(E)ND TURN";: NORMAL 
  82. 820 X =  PEEK( -16384):Y =  INT( RND(1)): IF X = 210  OR X = 242  THEN  GOSUB 1510: GOTO 1180
  83. 830  IF X = 197  OR X = 229  THEN  POKE  -16368,0:PS(J) = PS(J) +TS: GOTO 850
  84. 840  GOTO 820
  85. 850  IF D1 < >0  THEN  XDRAW D1 +10 AT 114,100: XDRAW D2 +10 AT 144,100:D1 = 0
  86. 860 TR = 0:EN = 0: FOR K = 2 TO 12:AR(K) = 0: NEXT K: NEXT J
  87. 870  NEXT I
  88. 880  REM  GAME OVER
  89. 890  TEXT : HOME 
  90. 900  VTAB 12:A$ = "Please wait. Calculating results.": GOSUB 2010
  91. 910 HP$(11) = PL$(1):HS(11) = PS(1):HP$(12) = PL$(2):HS(12) = PS(2)
  92. 920 FL = 0
  93. 930  FOR I = 1 TO 11
  94. 940  IF HS(I) > = HS(I +1)  THEN 990
  95. 950 T1 = HS(I):T1$ = HP$(I)
  96. 960 HS(I) = HS(I +1):HP$(I) = HP$(I +1)
  97. 970 HS(I +1) = T1:HP$(I +1) = T1$
  98. 980 FL = 1
  99. 990  NEXT 
  100. 1000  IF FL  THEN 920
  101. 1010  FOR K = 1 TO 4000 *TL: NEXT 
  102. 1020  HOME :A$ = "*** HIGH ROLLER RESULTS ***": INVERSE : GOSUB 2010: NORMAL 
  103. 1030  VTAB 3: HTAB 5: PRINT PL$(1);:PS = PS(1): GOSUB 1940
  104. 1040  IF PS(1) >PS(2)  THEN  INVERSE : PRINT PS(1): NORMAL : GOTO 1060
  105. 1050  PRINT PS(1)
  106. 1060  HTAB 5: PRINT PL$(2);:PS = PS(2): GOSUB 1940
  107. 1070  IF PS(2) >PS(1)  THEN  INVERSE : PRINT PS(2): NORMAL : GOTO 1090
  108. 1080  PRINT PS(2)
  109. 1090  VTAB 6
  110. 1100  IF PS(2) = PS(1)  THEN A$ = "IT'S A TIE!!!": INVERSE : GOSUB 2010: NORMAL : GOTO 1130
  111. 1110  IF PS(1) >PS(2)  THEN A$ = PL$(1) +" WON!!!": GOSUB 2010: GOTO 1130
  112. 1120  IF PS(2) >PS(1)  THEN A$ = PL$(2) +" WON!!!": GOSUB 2010
  113. 1130  VTAB 8: GOSUB 1310
  114. 1140  VTAB 23: HTAB 5: INPUT "Another game? ";YN$
  115. 1150  IF  LEFT$(YN$,1) = "Y"  OR  LEFT$(YN$,1) = "y"  THEN 460
  116. 1160  IF  LEFT$(YN$,1) = "N"  OR  LEFT$(YN$,1) = "n"  THEN 390
  117. 1170  CALL 64484: GOTO 1140
  118. 1180  IF TR = 11  THEN TS = TS *2: GOSUB 1210:PS(J) = PS(J) +TS: GOTO 850
  119. 1190  IF EN = 1  THEN  GOSUB 1260:EN = 0: GOTO 850
  120. 1200  GOTO 740
  121. 1210  VTAB 21: HTAB 1: CALL  -958
  122. 1220 A$ = "BONUS!!!": INVERSE : VTAB 22: GOSUB 2010: NORMAL 
  123. 1230  FOR K = 1 TO 20: CALL 64484: NEXT 
  124. 1240  FOR K = 1 TO 5000 *TL: NEXT 
  125. 1250  RETURN 
  126. 1260  VTAB 21: HTAB 1: CALL  -958
  127. 1270 A$ = PL$(J) +", YOU BLEW IT!!!": VTAB 22: GOSUB 2010
  128. 1280  FOR K = 1 TO 100:X =  PEEK( -16336): NEXT 
  129. 1290  FOR K = 1 TO 5000 *TL: NEXT 
  130. 1300  RETURN 
  131. 1310 A$ = "*** HIGH ROLLER HONOR ROLL ***": INVERSE : GOSUB 2010: NORMAL 
  132. 1320  PRINT : FOR I = 1 TO 10
  133. 1330  HTAB 5: PRINT HP$(I);: GOSUB 1970: IF HS(I) >0  THEN  PRINT HS(I)
  134. 1340  NEXT 
  135. 1350  PRINT  CHR$(4)"DELETE HR.HIGH"
  136. 1360  PRINT  CHR$(4)"OPEN HR.HIGH": PRINT  CHR$(4)"WRITE HR.HIGH"
  137. 1370  FOR I = 1 TO 10: PRINT HP$(I): PRINT HS(I): NEXT 
  138. 1380  PRINT  CHR$(4)"CLOSE"
  139. 1390  RETURN 
  140. 1400  REM  COMPUTER'S TURN
  141. 1410  FOR K = 1 TO 5000 *TL: NEXT 
  142. 1420  IF Q = 1  THEN Q = 0: GOTO 1490
  143. 1430  IF TR > = 1  AND (I = RD  AND PS(2) +TS =  >PS(1))  THEN 1490
  144. 1440  IF I = RD  AND PS(2) +TS > = PS(1)  THEN Q = 1: GOSUB 1510: GOTO 1180
  145. 1450  IF TR <3  THEN  GOSUB 1510: GOTO 1180
  146. 1460  IF TR <4  AND PS(2) +TS <PS(1)  THEN  GOSUB 1510: GOTO 1180
  147. 1470  IF I = RD  AND PS(2) +TS <PS(1)  THEN  GOSUB 1510: GOTO 1180
  148. 1480  IF PS(2) +TS < = PS(1)/RD  THEN  GOSUB 1510: GOTO 1180
  149. 1490 PS(J) = PS(J) +TS: GOTO 850
  150. 1500  REM  ROLL DICE
  151. 1510  POKE  -16368,0: IF D1 < >0  THEN  XDRAW D1 +10 AT 114,100: XDRAW D2 +10 AT 144,100
  152. 1520 D1 =  INT( RND(1) *6) +1:D2 =  INT( RND(1) *6) +1
  153. 1530  XDRAW D1 +10 AT 114,100: XDRAW D2 +10 AT 144,100
  154. 1540 T = D1 +D2
  155. 1550  IF AR(T) = 1  THEN EN = 1: GOTO 1570
  156. 1560 AR(T) = 1:TS = TS +T:TR = TR +1:F = 1: ON T -1 GOSUB 1600,1610,1620,1630,1640,1650,1660,1680,1690,1710,1730:F = 0
  157. 1570  RETURN 
  158. 1580  FOR K = 2 TO 12: IF AR(K) = 0  THEN  ON K -1 GOSUB 1600,1610,1620,1630,1640,1650,1660,1680,1690,1710,1730
  159. 1590  NEXT : RETURN 
  160. 1600  XDRAW 3 AT 15,42: RETURN 
  161. 1610  XDRAW 4 AT 35,42: RETURN 
  162. 1620  XDRAW 5 AT 55,42: RETURN 
  163. 1630  XDRAW 6 AT 75,42: RETURN 
  164. 1640  XDRAW 7 AT 95,42: RETURN 
  165. 1650  XDRAW 8 AT 115,42: RETURN 
  166. 1660  IF F = 0  THEN  XDRAW 9 AT 135,42: HCOLOR= 0: HPLOT 136,44 TO 136,49: RETURN 
  167. 1670  XDRAW 9 AT 135,42: HCOLOR= 3: HPLOT 136,44 TO 136,49: RETURN 
  168. 1680  XDRAW 10 AT 155,42: RETURN 
  169. 1690  XDRAW 2 AT 175,42
  170. 1700  XDRAW 1 AT 188,42: RETURN 
  171. 1710  XDRAW 2 AT 208,42
  172. 1720  XDRAW 2 AT 221,42: RETURN 
  173. 1730  XDRAW 2 AT 241,42
  174. 1740  XDRAW 3 AT 254,42: RETURN 
  175. 1750  REM  Instructions
  176. 1760  HOME :A$ = "HIGH ROLLER": INVERSE : GOSUB 2010:A$ = "===========": GOSUB 2010: NORMAL 
  177. 1770  PRINT : PRINT "The object of HIGH ROLLER is to get a": PRINT "higher score than your opponent. Each": PRINT "player may roll the dice as many as 11"
  178. 1780  PRINT "times per turn. Each time that the dice are rolled, the number corresponding to"
  179. 1790  PRINT "total of the dice is removed from the": PRINT "tally board. After each roll the player may choose to roll again or end the"
  180. 1800  PRINT "current turn. Ending the turn will add": PRINT "the current points for the round to the": PRINT "player's game total."
  181. 1810  PRINT : PRINT "If a player continues to roll and rolls a combination that has been rolled priorduring the current turn, the player's"
  182. 1820  PRINT "turn ends and all the points from the": PRINT "current round are forfeit.": GOSUB 1880
  183. 1830  HOME : PRINT "Clearing all eleven numbers from the": PRINT "tally board scores a bonus of 77 points."
  184. 1840  PRINT "The game may be played between two": PRINT "people, or one person may play against": PRINT "the computer. Games may be 2 to 10": PRINT "rounds in length."
  185. 1850  PRINT : PRINT "At the end of the game the scores will": PRINT "be displayed and the winner will be": PRINT "given credit. In addition, if the": PRINT "scores are high enough, they will be"
  186. 1860  PRINT "placed on the HIGH ROLLER honor roll.": GOSUB 1880
  187. 1870  HOME : VTAB 12:A$ = "Good luck!!!": GOSUB 2010: FOR I = 1 TO 5000: NEXT : GOTO 270
  188. 1880  VTAB 23:A$ = "(M)ore or (G)ame ?": GOSUB 2010
  189. 1890 X =  PEEK( -16384):I =  RND(1)
  190. 1900  IF X = 205  OR X = 237  THEN  POKE  -16368,0: HOME : RETURN 
  191. 1910  IF X = 199  OR X = 231  THEN  POKE  -16368,0: POP : GOTO 460
  192. 1920  GOTO 1890
  193. 1930  REM  SUBROUTINE TO ADJUST SCORE SPACING
  194. 1940  IF PS <10  THEN  HTAB 34: RETURN 
  195. 1950  IF PS <100  THEN  HTAB 33: RETURN 
  196. 1960  HTAB 32: RETURN 
  197. 1970  IF HS(I) <10  THEN  HTAB 34: RETURN 
  198. 1980  IF HS(I) <100  THEN  HTAB 33: RETURN 
  199. 1990  HTAB 32: RETURN 
  200. 2000  REM  CENTERING ROUTINE
  201. 2010  HTAB 20 - LEN(A$)/2: PRINT A$: RETURN 
  202. 2020  REM  ERROR HANDLING ROUTINE
  203. 2030 ER =  PEEK(222)
  204. 2040  IF EL = 1  THEN 2130
  205. 2050  IF ER = 255  AND EL = 0  THEN 2170
  206. 2060  IF ER = 6  AND EL = 2  THEN 2090
  207. 2070  HOME : VTAB 12: PRINT "Error #"ER" has occurred.": PRINT "The error occurred in line " PEEK(218) + PEEK(219) *256".": PRINT : PRINT "Please refer to your BASIC and DOS manual."
  208. 2080  END 
  209. 2090  PRINT  CHR$(4)"OPEN HR.HIGH": PRINT  CHR$(4)"WRITE HR.HIGH"
  210. 2100  FOR I = 1 TO 10: PRINT : PRINT "0": NEXT 
  211. 2110  PRINT  CHR$(4)"CLOSE"
  212. 2120  GOTO 160
  213. 2130  HOME : VTAB 12: PRINT "Please place the disk containing the": PRINT "file HR.SHAPES in the drive."
  214. 2140  VTAB 23:A$ = "Press a key to continue.": GOSUB 2010
  215. 2150 X =  PEEK( -16384): IF X >127  THEN  POKE  -16368,0: RUN 
  216. 2160  GOTO 2150
  217. 2170  HOME : VTAB 12: PRINT "A Control-C has been entered. The game  has been aborted."
  218. 2180  VTAB 23: INPUT "Do you want to quit? ";YN$
  219. 2190  IF  LEFT$(YN$,1) = "n"  OR  LEFT$(YN$,1) = "N"  THEN  RUN 
  220. 2200  IF  LEFT$(YN$,1) = "y"  OR  LEFT$(YN$,1) = "Y"  THEN 390
  221. 2210  CALL 64484: GOTO 2170