home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug013.ark / 1500.ASC < prev    next >
Text File  |  1984-04-29  |  6KB  |  177 lines

  1. 100 REM WRITTEN BY W.A.BURTON NOV.1977
  2. 101 PRINT CHR$(26) : WIDTH 80
  3. 102 PRINT TAB(20); "***  1500 GAME   ***"
  4. 103 PRINT : PRINT : PRINT 
  5. 104 INPUT "              DOES ANYONE NEED INSTRUCTIONS"; A$
  6. 105 IF LEFT$(A$,1)="Y" THEN GOSUB 237
  7. 106 CLEAR : BL$=" " : GF=0
  8. 107 PRINT CHR$(26)
  9. 108 INPUT "                   HOW MANY PLAYERS (2 TO 7)"; P
  10. 109 PRINT CHR$(26)
  11. 110 IF P<2 OR P>7 OR P<>INT(P) THEN PRINT "WRONG !!"; : GOTO 108
  12. 111 DIM PL$(P), PS(P), DI(3), Q(P)
  13. 112 FOR X=1 TO P
  14. 113 PRINT "PLAYER #"; X; : INPUT "WHAT IS YOUR NAME "; PL$(X)
  15. 114 GOSUB 204 : A=0
  16. 115 NEXT X
  17. 116 GOSUB 215
  18. 117 '
  19. 118 '
  20. 119 '
  21. 120 REM MAIN MODULE
  22. 121 PRINT "HIT RETURN TO PLAY" : WAIT 0,1,1 : PRINT CHR$(26)
  23. 122 TF=0 : TP=0
  24. 123 GOSUB 150
  25. 124 GOSUB 154
  26. 125 GOSUB 161
  27. 126 IF Q(CO)=0 AND (TP+PS(CO))>=250 THEN Q(CO)=1 : ELSE 129
  28. 127 PRINT PL$(CO); ", YOU'RE QUALIFIED" 
  29. 128 PS(CO)=PS(CO)+TP : GOTO 136
  30. 129 IF Q(CO)=1 THEN 133
  31. 130 IF Q(CO)=0 AND TF=0 THEN 123 
  32. 131 IF Q(CO)=0 AND TF=1 THEN PRINT "SORRY, "; PL$(CO); ", YOU BUSTED" ELSE 135
  33. 132 PRINT : GOTO 135
  34. 133 IF TF=1 THEN PRINT TAB(15); "BUSTED" ELSE 142
  35. 134 PRINT
  36. 135 PS(CO)=PS(CO)+TP
  37. 136 CO=CO+1
  38. 137 IF CO>P THEN CO=1
  39. 138 PRINT PL$(CO); ", HIT RETURN FOR YOUR TURN"
  40. 139 WAIT 0,1,1 : PRINT CHR$(26)
  41. 140 GOSUB 195
  42. 141 GOTO 122
  43. 142 A$="TRAP"
  44. 143 INPUT "                     DO YOU WANT TO ROLL AGAIN "; A$ : PRINT
  45. 144 IF LEFT$(A$,1)="Y" THEN 123
  46. 145 IF LEFT$(A$,1)="N" THEN 135
  47. 146 PRINT "TRY AGAIN !!"; : GOTO 142
  48. 147 '
  49. 148 '
  50. 149 '
  51. 150 REM THIS 'ROLLS' THE DICE & CHECKS FOR 'TRIPLES'
  52. 151 FOR X=1 TO 3
  53. 152 DI(X)=INT(RND(1)*6)+1
  54. 153 NEXT
  55. 154 REM CHECK FOR 'TRIPS'
  56. 155 TR$=""
  57. 156 IF DI(1)=DI(2) AND DI(2)=DI(3) THEN TR$=" ** TRIPLE **"
  58. 157 RETURN
  59. 158 '
  60. 159 '
  61. 160 '
  62. 161 REM THIS PRINTS OUT PLAYER'S SCORE
  63. 162 PRINT PL$(CO); ", YOUR ROLL WAS";
  64. 163 PRINT BL$; DI(1); BL$; DI(2); BL$; DI(3); TR$
  65. 164 PRINT : GOSUB 171
  66. 165 PRINT TAB(15); "YOUR SCORE FOR THIS TURN   "; TP
  67. 166 IF Q(CO)=0 THEN PRINT
  68. 167 RETURN
  69. 168 '
  70. 169 '
  71. 170 '
  72. 171 REM THIS COMPUTES PLAYER'S SCORE
  73. 172 IF TR$<>"" THEN 184
  74. 173 IF DI(1)=5 THEN TP=TP+50
  75. 174 IF DI(2)=5 THEN TP=TP+50
  76. 175 IF DI(3)=5 THEN TP=TP+50
  77. 176 IF DI(1)=6 THEN TP=TP+100
  78. 177 IF DI(2)=6 THEN TP=TP+100
  79. 178 IF DI(3)=6 THEN TP=TP+100
  80. 179 IF DI(1)<5 AND DI(2)<5 AND DI(3)<5 THEN TF=1 : TP=0 : RETURN
  81. 180 GOTO 188
  82. 181 '
  83. 182 '
  84. 183 '
  85. 184 REM SCORING FOR 'TRIPLES'
  86. 185 X=DI(1)*100
  87. 186 IF X<500 THEN TP=0 : TP=TP-X  : GOTO 188
  88. 187 TP=TP+X
  89. 188 IF TP<50 THEN TF=1
  90. 189 EG=PS(CO)+TP
  91. 190 IF EG>=1500 THEN GF=1 : GOTO 222
  92. 191 RETURN
  93. 192 '
  94. 193 '
  95. 194 '
  96. 195 REM PRINT SCORES TO DATE
  97. 196 IF GF=0 THEN PRINT "GAME SCORE"; ELSE PRINT "FINAL SCORE";
  98. 197 FOR X=1 TO P
  99. 198 PRINT TAB(15); PL$(X); TAB(27); PS(X)
  100. 199 NEXT X : PRINT
  101. 200 RETURN
  102. 201 '
  103. 202 '
  104. 203 '
  105. 204 REM 'SEED' RANDOM NUMBER GENERATOR
  106. 205 FOR X1=1 TO LEN(PL$(X))
  107. 206 A=A+ASC(MID$(PL$(X),X1,1))
  108. 207 NEXT X1
  109. 208 A=A MOD 137
  110. 209 FOR X1=1 TO A
  111. 210 A1=RND(1) : A1=RND(-X1)
  112. 211 NEXT X1 : RETURN
  113. 212 '
  114. 213 '
  115. 214 '
  116. 215 REM THIS DECIDES WHO WILL GO FIRST
  117. 216 X=INT(RND(1)*P)+1
  118. 217 PRINT CHR$(26) : PRINT PL$(X); ", YOU WILL START THIS GAME" : PRINT : PRINT
  119. 218 CO=X : RETURN
  120. 219 '
  121. 220 '
  122. 221 '
  123. 222 REM WIN ROUTINE
  124. 223 PRINT CHR$(26)
  125. 224 PRINT TAB(22); "*** WINNER ***" : PRINT : PRINT : PRINT
  126. 225 PRINT TAB(12); PL$(CO); ", YOUR WINNING ROLL WAS   ";
  127. 226 PRINT DI(1); DI(2); DI(3) : PRINT : PRINT : PRINT
  128. 227 PRINT TAB(12); PL$(CO); " WINS WITH"; PS(CO)+TP; "POINTS" : PRINT : PRINT : PRINT
  129. 228 PS(CO)=EG
  130. 229 GOSUB 195
  131. 230 A$="TRAP" : INPUT "ANOTHER GAME (Y OR N)"; A$
  132. 231 IF LEFT$(A$,1)="Y" THEN RUN 106
  133. 232 IF LEFT$(A$,1)="N" THEN PRINT CHR$(26) : RESET : END
  134. 233 PRINT "NICE TRY  "; : GOTO 230
  135. 234 '
  136. 235 '
  137. 236 '
  138. 237 REM INSTRUCTIONS
  139. 238 PRINT CHR$(26)
  140. 239 PRINT TAB(20); "***    INSTRUCTIONS    ***" : PRINT 
  141. 240 PRINT "THREE DICE ARE ROLLED, AND ARE SCORED AS FOLLOWS:" : PRINT
  142. 241 PRINT "    EACH '6' ROLLED SCORES 100 POINTS"
  143. 242 PRINT "    EACH '5' ROLLED SCORES  50 POINTS" : PRINT
  144. 243 PRINT "FOR EXAMPLE: A ROLL OF '6  5  1' IS WORTH 150 POINTS - 100 POINTS"
  145. 244 PRINT "FOR THE '6' AND 50 POINTS FOR THE '5';  (NOTHING FOR THE '1')." : PRINT
  146. 245 PRINT "WHEN YOU ROLL 3 OF A KIND, THE SCORING IS AS FOLLOWS:" : PRINT
  147. 246 PRINT "    THREE 1'S    - 100 POINTS"
  148. 247 PRINT "    THREE 2'S    - 200 POINTS"
  149. 248 PRINT "    THREE 3'S    - 300 POINTS"
  150. 249 PRINT "    THREE 4'S    - 400 POINTS"
  151. 250 PRINT "    THREE 5'S    + 500 POINTS"
  152. 251 PRINT "    THREE 6'S    + 600 POINTS" : PRINT
  153. 252 PRINT "GET THE IDEA...?" : PRINT
  154. 253 PRINT "HIT RETURN MORE INSTRUCTIONS" : WAIT 0,1,1
  155. 254 PRINT CHR$(26)
  156. 255 PRINT "THE GAME CONSISTS OF THREE PHASES..." : PRINT
  157. 256 PRINT TAB(12); "PHASE 1 - WHO GOES FIRST"
  158. 257 PRINT TAB(12); "PHASE 2 - QUALIFYING (REACH 250 POINTS) PHASE"
  159. 258 PRINT TAB(12); "PHASE 3 - WHO WINS (REACHES 1500 POINTS FIRST)" : PRINT
  160. 259 PRINT "THE COMPUTER DECIDES WHO GOES FIRST, THEN THE COMPUTER WILL CONTINUE"
  161. 260 PRINT "TO ROLL FOR EACH PLAYER UNTIL THAT PLAYER REACHES 250 POINTS OR UNTIL"
  162. 261 PRINT "THAT PLAYER HAS A ROLL WITH NO '5' OR '6', AT WHICH POINT THE SCORE"
  163. 262 PRINT "FOR THAT PLAYER IS RESET TO ZERO (UNLESS TRIPLES LESS THAN FIVE ARE"
  164. 263 PRINT "THROWN - IN WHICH CASE THAT PLAYER'S SCORE MAY WELL GO BELOW ZERO)."
  165. 264 PRINT "IN THIS PHASE (2) EACH PLAYER WILL EITHER REACH (OR EXCEED) 250 OR"
  166. 265 PRINT "BE RESET TO ZERO (OR LESS). WHEN A PLAYER HAS QUALIFIED, PLAY PASSES"
  167. 266 PRINT "TO NEXT PLAYER. AFTER QUALIFYING, COMPUTER ROLLS ONCE, IF THAT ROLL"
  168. 267 PRINT "RESULTS IN SCORE LESS THAN 50, TURN WILL PASS TO NEXT PLAYER. IF THAT"
  169. 268 PRINT "PLAYER SCORES 50 (OR MORE) POINTS, THEN THAT PLAYER CAN DECIDE WHETHER"
  170. 269 PRINT "TO TAKE (AND KEEP) THE POINTS FROM THAT ROLL OR TO ROLL AGAIN IN HOPE"
  171. 270 PRINT "OF GETTING MORE POINTS. ANY ROLL OF LESS THAN 50 POINTS WILL CANCEL"
  172. 271 PRINT "ALL POINTS EARNED ON THAT TURN. FIRST PLAYER TO REACH 1500 WINS. IT"
  173. 272 PRINT "IS ONLY NECESSARY TO 'QUALIFY' ONCE IN ANY GIVEN GAME, AND SCORING"
  174. 273 PRINT "RELATED TO 'TRIPLES' IS IN EFFECT DURING ALL PHASES OF THE GAME."
  175. 274 PRINT : PRINT "HIT RETURN TO PLAY" : WAIT 0,1,1
  176. 275 RETURN
  177.