Guest User

Untitled

a guest
Jul 22nd, 2020
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.78 KB | None | 0 0
  1. 2 PRINT TAB(31);"BLACK JACK"
  2. 4 PRINT TAB(15);"BY MONKEY"
  3. 6 PRINT:PRINT:PRINT
  4. 20 DIM P(15,12),Q(15),C(52),D(52),T(8),S(7),B(15)
  5. 30 DIM R(15)
  6. 40 REM --P(I,J) IS THE JTH CARD IN HAND I, Q(I) IS TOTAL OF HAND I
  7. 50 REM--C IS THE DECK BEING DEALT FROM, D IS THE DISCARD PILE,
  8. 60 REM--T(I) IS THE TOTAL FOR PLAYER I, S(I) IS THE TOTAL THIS HAND
  9. 70 REM--FOR PLAYER I, B(I) IS THE BET FOR HAND I
  10. 80 REM--R(I) IS THE LENGHT OF P(I,*)
  11. 90 GOTO 1500
  12. 100 REM--SUBROUTINE TO GET A CARD. RESUALT IS PUT IN X.
  13. 110 IF C<51 THEN 230
  14. 120 PRINT "RESHUFFLING"
  15. 130 FOR D=D TO 1 STEP -1
  16. 140 C=C-1
  17. 150 C(C)=D(D)
  18. 160 NEXT D
  19. 170 FOR C1=52 TO C STEP -1
  20. 180 C2=INT(RND(1)*(C1-C+1))+C
  21. 190 C3=C(C2_
  22. 200 C(C2)=C(C1)
  23. 210 C(C1)=C3
  24. 220 NEXT C1
  25. 230 X=C(C)
  26. 240 C=C+1
  27. 250 RETURN
  28. 300 REM-- SUBROUTINE TO EVALUATE HAND I. TOTAL IS PUT INTO
  29. 310 REM--Q(I). TOTALS HAVE THE FOLLOWING MEANING:
  30. 320 REM-- 2-10...HARD 2-10
  31. 330 REM-- 11-21...SOFT 11-21
  32. 340 REM-- 22-23...HARD 11-21
  33. 350 REM-- 33+...BUSTED
  34. 360 Q=0
  35. 370 FOR Q2=1 TO R(I)
  36. 380 X=P(1,Q2)
  37. 390 GOSUB 500
  38. 400 NEXT Q2
  39. 410 Q(I)=Q
  40. 420 RETURN
  41. 500 REM--SUBROUTINE TO ADD CARD X TO TOTAL Q.
  42. 510 X1=X: IF X1>10 THEN X1=10: REM SAME AS X1=10 MIN X
  43. 520 Q1=Q+X1
  44. 530 IF Q>=11 THEN 590
  45. 540 IF X>1 THEN 570
  46. 550 Q=Q+11
  47. 560 RETURN
  48. 570 Q=Q1-11*(Q1>=11_
  49. 580 RETURN
  50. 590 Q=Q1-(Q<=21 AND Q1>21)
  51. 600 IF Q<33 THEN 620
  52. 610 Q=-1
  53. 620 RETURN
  54. 700 REM--CARD PRINTING SUBROUTINE
  55. 710 REM D$ DEFINED ELSEWHERE
  56. 720 PRINT MID$(D$,3X-2,3);
  57. 730 PRINT " ";
  58. 740 RETURN
  59. 750 REM--ALTERNATIVE PRINTING ROUTINE
  60. 760 PRINT " ";MID$(D$,3*X-1,2);
  61. 770 PRINT " ";
  62. 780 RETURN
  63. 800 REM--SUBROUTINE TO PLAY OUT A HAND.
  64. 810 REM-- NO SPLUTTING OR BLACKHACKS ALLOWED
  65. 820 H1=5
  66. 830 GOSUB 1410
  67. 840 H1=3
  68. 850 ON H GOTO 950,930
  69. 860 GOSUB 100
  70. 870 B(I)=B(I)*2
  71. 880 PRINT "RECEIVED A";
  72. 890 GOSUB 700
  73. 900 GOSUB 1100
  74. 910 IF Q>0 THEN GOSUB 1300
  75. 920 RETURN
  76. 930 GOSUB 1320
  77. 940 RETURN
  78. 950 GOSUB 100
  79. 960 PRINT "RECEIVED A";
  80. 970 GOSUB 700
  81. 980 GOSUB 1100
  82. 990 IF Q<0 THEN 940
  83. 1000 PRINT "HIT";
  84. 1010 GOTO 830
  85. 1100 REM--SUBROUTINE TO ADD A CARD TO ROW I
  86. 1110 R(I)=R(I)+1
  87. 1120 P(I,R(I))=X
  88. 1130 Q=Q(I)
  89. 1140 GOSUB 500
  90. 1150 Q(I)=Q
  91. 1160 IF Q>=0 THEN 1190
  92. 1170 PRINT "...BUSTED"
  93. 1180 GOSUB 1200
  94. 1190 RETURN
  95. 1200 REM--SUBROUTINE TO DISCARD ROW I
  96. 1210 IF R(I)<>0 THEN 1230
  97. 1220 RETURN
  98. 1230 D=D+1
  99. 1240 D(D)=P(I,R(I))
  100. 1250 R(I)=R(I)-1
  101. 1260 GOTO 1210
  102. 1300 REM--PRINTS TOTAL OF HAND I
  103. 1310 PRINT
  104. 1320 AA=Q(I): GOSUB 3400
  105. 1330 RETURN
  106. 1400 REM--SUBROUTINE TO READ REPLY
  107. 1410 REM I$ DEFINE ELSEWHERE
  108. 1420 INPUT H$: H$=LEFT$(H$,1)
  109. 1430 FOR H=1 TO H1 STEP 2
  110. 1440 IF H$=MID$(I$,H,I) THEN 1480
  111. 1450 NEXT H
  112. 1460 PRINT "TYPE !;MID$(I$,1,H1-1);" PLEASE";
  113. 1470 GOTO 1420
  114. 1480 H=(H+1)/2
  115. 1490 RETURN
  116. 1500 REM--PROGRAM STARTS HERE
  117. 1510 REM--INITIALIZE
  118. 1520 D$="N A 2 3 4 5 6 7N 8 9 10 J Q K"
  119. 1530 I$="H,S,D,/,"
  120. 1540 FOR I=1 TO 13
  121. 1550 FOR J=4*I-3 TO 4*I
  122. 1560 D(J)=I
  123. 1570 NEXT J
  124. 1580 NEXT I
  125. 1590 D=52
  126. 1600 C=52
  127. 1610 PRINT "DO U WANT INSTRUCTIONS";
  128. 1620 INPUT H$
  129. 1630 IF LEFT$(H$,1)="N" THEN 1760
  130. 1640 PRINT "THIS IS THE GAME OF 21 UP TO 7 PLAYERS CAN PLAY"
  131. 1650 PRINT "THE GAME. ON EACH DEAL, BETS WILL BE ASKED FOR, AND THE"
  132. 1660 PRINT "PLAYERS' BETS SHOUD BE TYPED IN. THE CARDS WILL THEN BE"
  133. 1670 PRINT "DEAL, AND EACH PLAYER IN TURN PLAYS HIS HAND. THE"
  134. 1680 PRINT "FIRST RESPONSE SHOLD BE EITHER 'D', INDICATING THAT THE"
  135. 1690 PRINT "PLAYER IS DOUBLING DOWN, 'S', INDICATEING THAT HE IS"
  136. 1700 PRINT "STANDING, 'H' INDICATING HE WANTS ANOTHER CARD OR '/',"
  137. 1710 PRINT "INDICATING THAT HE WANTS TO SPLIT HIS CARGS. AFTER THE"
  138. 1730 PRINT "'H', UNLESS THE CARDS WERE SPLIT, IN WITCH CASE DOUBLING"
  139. 1740 PRINT "DOWN IS AGAIN PREMITTED. IN ORDER TO COLLECT FOR"
  140. 1750 PRINT "BLACKHACK, THE INITIAL REPONSE SHOUD BE 'S'."
  141. 1760 PRINT "NUMBER OF PLAYERS";
  142. 1770 INPUT N
  143. 1780 IF N<1 OF N>7 OF M>INT(N) THEN 1760
  144. 1790 FOR I=1 TO 8: T(I)=0: NEXT I
  145. 1800 D1=N+1
  146. 1810 IF 2*D1+C>=52 THEN GOSUB 120
  147. 1820 IF C=2 THEN C=C-1
  148. 1830 FOR I=1 TO N: Z(I)=0: NEXT I
  149. 1840 FOR I-1 TO 15: B(I)=0: NEXT I
  150. 1850 FOR I=1 TO 15: Q(I)=0: NEXT I
  151. 1860 FOR I=1 TO 7: S(I)=0: NEXT I
  152. 1870 FOR I=1 TO 15: R(I)=: NEXT I
  153. 1880 PRINT "BETS"
  154. 1890 FOR I=1 TO N:PRINT "#";I;: INPUT Z(I): NEXT I
  155. 1900 FOR I=1 TO N
  156. 1910 IF Z(I) <=0 OR Z(I)>500 THEN 1880
  157. 1920 B(I)=Z(I)
  158. 1930 NEXT I
  159. 1940 PRINT "PLAYER";
  160. 1950 FOR I=1 TO N
  161. 1960 PRINT 1;" ";
  162. 1970 NEXT I
  163. 1980 PRINT "DEALER"
  164. 1990 FOR J=I TO 2
  165. 2000 PRINT TAB(5);
  166. 2010 FOR I=1 TO D1
  167. 2020 GOSUB 100
  168. 2030 P(I,J)=X
  169. 2040 IF J=1 OF I<=N THEN GOSUB 750
  170. 2050 NEXT I
  171. 2060 PRINT
  172. 2070 NEXT J
  173. 2080 FOR I=1 TO D1
  174. 2090 R(I)=2
  175. 2100 NEXT I
  176. 2100 REM--TEST FOR INSURANCE
  177. 2120 IF P(D1,1)>1 THEN 2240
  178. 2130 PRINT "ANY INSURANCE";
  179. 2140 INPUT H$
  180. 2150 IF LEFT$(H$,1)<>"Y" THEN 2240
  181. 2160 PRINT "INSURANCE BETS"
  182. 2170 FOR I=1 TO N: PRINT "#";I;: INPUT Z(I): NEXT I
  183. 2180 FOR I=1 TO N
  184. 2190 IF Z(I)<0 OR Z(I)>B(I)/2 THEN 2160
  185. 2200 NEXT I
  186. 2210 FOR I=1 TO N
  187. 2220 S(I)=Z(I)*(3*(-(P(D1,2)>=10))-1)
  188. 2230 NEXT I
  189. 2240 REM--TEST FOR DEALER BLACKJACK
  190. 2250 L1=1: L2=1
  191. 2252 IF P(D1,1)=1 AND P(D1,2)>9 THEN L1=0: L2=0
  192. 2253 IF P(D1,2)=2 AND P(D1,1)>9 THEN L1=0: L2=0
  193. 2254 IF L1<>0 OR L2<>0 THEN 2320
  194. 2260 PRINT "DEALER HAS A";MID$(D$,3*P(D1,2)-2,3);" IN THE HOLE";
  195. 2270 PRINT "FOR BLACKJACK"
  196. 2280 FOR I=1 TO D1
  197. 2290 GOSUB 300
  198. 2300 NEXT I
  199. 2310 GOTO 3140
  200. 2320 REM--NO DEALER BLACKJACK
  201. 2330 IF P(D1,1)>1 AND P(D1,1)<10 THEN 2350
  202. 2340 PRINT "NO DEALER BLACKJACK"
  203. 2350 REM--NOW PLAY THE HANDS
  204. 2360 FOR I=1 TO N
  205. 2370 PRINT "PLAYER";I;
  206. 2380 H1=7
  207. 2390 GOSUB 1410
  208. 2400 ON H GOTO 2550,2410,2510,2600
  209. 2410 REM--PLAYER WANTS TO STAND
  210. 2420 GOSUB 300
  211. 2430 IF Q(I)<>21 THEN 2490
  212. 2440 PRINT "BLACKJACK"
  213. 2450 S(I)=S(I)+1.5*B(I)
  214. 2460 B(I)=O
  215. 2470 GOSUB 1200
  216. 2480 GOTO 2900
  217. 2490 GOSUB 1320
  218. 2500 GOTO 2900
  219. 2510 REM--PLAYER WANTS TO DOUBLE DOWN
  220. 2520 GOSUB 300
  221. 2530 GOSUB 860
  222. 2540 GOTO 2900
  223. 2550 REM--PLAYER WANTS TO BE HIT
  224. 2560 GOSUB 300
  225. 2570 H1=3
  226. 2580 GOSUB 950
  227. 2590 GOTO 2900
  228. 2600 REM--PLAYER WANTS TO SPLIT
  229. 2610 L1=P(I,1): IF P(I,1)>10 THEN L1=10
  230. 2612 L2=P(I,2): IF P(I,2)>10 THEN L2=10
  231. 2614 IF L1=L2 THEN 2640
  232. 2620 PRINT "SPLITTING NOT ALLOWED."
  233. 2630 GOTO 2370
  234. 2640 REM--PLAY OUT SPLIT
  235. 2650 I1=I+D1
  236. 2660 R(I1)=2
  237. 2670 P(I1,1)=P(1,2)
  238. 2680 B(1+D1)=B(I)
  239. 2690 GOSUB 100
  240. 2700 PRINT "FIRST HAND RECEIVES A";
  241. 2710 GOSUB 700
  242. 2720 P(I,2)=X
  243. 2730 GOSUB 300
  244. 2740 PRINT
  245. 2750 GOSUB 100
  246. 2760 PRINT "SECON HAND RECEIVES A";
  247. 27700 I=I1
  248. 2780 GOSUB 700
  249. 2790 P(I,2)=X
  250. 2800 GOSUB 300
  251. 2810 PRINT
  252. 2820 I-I1-D1
  253. 2830 IF P(I,1)=1 THEN 2900
  254. 2840 REM--NOW PLAY THE TWO HANDS
  255. 2850 PRINT "HAND";1-(I>D1);
  256. 2860 GOSUB 800
  257. 2870 I=I+D1
  258. 2880 IF I=I1 THEN 2850
  259. 2890 I=I1-D1
  260. 2900 NEXT I
  261. 2910 GOSUB 300
  262. 2920 REM--TEST FOR PLAYING DEALER'S HAND
  263. 2930 FOR I=1 TO N
  264. 2940 IF R(I)>0 OR R(I+D1)>0 THEN 3010
  265. 2950 NEXT I
  266. 2960 PRINT "DEALER HAD A";
  267. 2970 X=P(D1,2)
  268. 2980 GOSUB 700
  269. 2990 PRINT " CONCEALED"
  270. 3000 GOTO 3140
  271. 3010 PRINT "DEALER HAS A";MID$(D$,3*P(D1,2)-2,3);"CONCEALED ";
  272. 3020 I=D1
  273. 3030 AA=Q(I): GOSUB 3400
  274. 3035 PRINT "FOR A TOTAL OF";AA
  275. 3040 IF AA>14 THEN 3130
  276. 3050 PRINT "DRAWS";
  277. 3060 GOSUB 100
  278. 3070 GOSUB 750
  279. 3080 GOSUB 1100
  280. 3090 AA=Q: GOSUB 3400
  281. 3095 IF Q>0 AND AA<17 THEN 3060
  282. 3100 Q(I)=Q-(Q<0)/2
  283. 3110 IF Q<0 THEN 3140
  284. 3120 AA=Q: GOSUB 3400
  285. 3125 PRINT "---TOTAL IS";AA
  286. 3130 PRINT
  287. 3140 REM--TALLY THE RESULT
  288. 3150 REM
  289. 3160 Z$="LOSES PUNCHES WINS "
  290. 3170 FOR I=1 TO N
  291. 3180 AA=Q(I): GOSUB 3400
  292. 3182 AB=Q(I+D1): GOSUB 3410
  293. 3184 AC=Q(D1): GOSUB 3420
  294. 3186 S(I)=S(I)+B(I)*SGN(AA-AC)+B(I+D1)*SGN(AB=AC)
  295. 3188 B(I+D1)=0
  296. 3200 PRINT "PLAYER";1;
  297. 3201 PRINT MID$(Z$,SGN(S(I))*6+7,6);" ";
  298. 3220 IF S(I)<>0 THEN 3250
  299. 3230 PRINT " ";
  300. 3240 GOTO 3260
  301. 3250 PRINT ABS(S(I));
  302. 3260 T(I)=T(I)+S(I)
  303. 3270 PRINT "TOTAL=";T(I)
  304. 3280 GOSUB 1200
  305. 3290 T(D1)=T(D1)-S(I)
  306. 3300 I-I+D1
  307. 3310 GOSUB 1200
  308. 3330 NEXT I
  309. 3340 PRINT "DEALER'S TOTAL=";T(D1)
  310. 3350 GOSUB 1200
  311. 3360 GOTO 1810
  312. 3400 AA=AA+11*(AA>=22): RETURN
  313. 3410 AB=AB+11*(AB>22): RETURN
  314. 3420 AC=AC+11*(AC>=22): RETURN
Add Comment
Please, Sign In to add comment