home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG026.ARK / BLACKJCK.ASC < prev    next >
Text File  |  1984-04-29  |  7KB  |  165 lines

  1. 100 REM *** B L A C K J A C K ***
  2. 101 WIDTH 80
  3. 110 DIM D(208),H(16),O(16),P(16,11),Q(11),S(16),X(16)
  4. 120 PRINT:PRINT"WELCOME TO THE CASINO"
  5. 130 PRINT "WE PLAY VEGAS STYLE BLACKJACK"
  6. 140 PRINT:INPUT"INSTRUCTIONS? (YES-NO) ";M$: IF M$="NO" THEN GOTO 160
  7. 150 IF M$="YES" THEN GOSUB 1640:GOTO 160 ELSE GOTO 140
  8. 160 R=16:PRINT"HOW MANY DECKS (1-4)";
  9. 170 INPUTN:IFN<1ORN>4THENPRINT"1 TO 4 DECKS ONLY. REENTER";:GOTO170
  10. 180 E=N*52:GOSUB870:B=1:GOSUB890:A=1
  11. 190 PRINT:G=1
  12. 200 INPUT"BET PLEASE";U:IF U>0 THENGOTO220 ELSE IF U=0 THEN GOTO1600
  13. 210 B=1:GOSUB 890:GOTO 200
  14. 220 IF U<=500 THEN GOTO240 ELSEPRINT"SORRY, THE HOUSE LIMIT IS $500!"
  15. 230 GOTO 200
  16. 240 GOSUB930:H(1)=U:N=Q(2):PRINT:PRINT"MY UP CARD";:GOSUB1050:N=P(R,1)
  17. 250 PRINT : PRINT"YOUR 1ST CARD";:GOSUB1050:PRINT"YOUR 2ND CARD";:N=P(R,2)
  18. 260 GOSUB 1050
  19. 270 GOSUB1170:IFM<>11THEN GOTO 280 ELSE GOSUB 1550
  20. 280 IF W<>21 THEN GOTO 320 ELSE PRINT : PRINT"I HAVE BLACKJACK, ";
  21. 290 IF X(1)<>21 THEN GOTO 310 ELSE PRINT"SO DO YOU, WE PUSH"
  22. 300 GOSUB 1510:GOTO 190
  23. 310 PRINT"YOU LOSE":V=V-U:GOTO300
  24. 320 IF X(1)<>21 THEN GOTO340 ELSE PRINT"YOU HAVE BLACKJACK, YOU WIN!"
  25. 330 V=V+3*U/2:GOTO300
  26. 340 PRINT:PRINT"PLAY ";:IF R=1 THEN GOTO 350 ELSE PRINT"FOR HAND";G;
  27. 350 PRINT:PRINT"YOUR TOTAL IS";X(G);:INPUT F:IF F>-1 THEN GOTO 370
  28. 360 PRINT"ONLY 0-3 IS VALID, REENTER";:GOTO350
  29. 370 IF F>3 THEN GOTO 360 ELSE IF F<>1 THEN GOTO 550
  30. 380 REM ******** PLAYER HIT ROUTINE *************
  31. 390 IF A<=E THEN GOTO 400 ELSE GOSUB 1220
  32. 400 M=S(G):M=M+1:S(G)=M:N=D(A):P(G,M)=N:PRINT"YOUR CARD IS";:GOSUB 1050
  33. 410 GOSUB 1010:A=A+1:IF N<>11 THEN GOTO 420 ELSE O(G)=O(G)+1
  34. 420 X(G)=X(G)+N
  35. 430 IF X(G)<22 THEN GOTO 340 ELSE IF O(G)=0 THEN 450
  36. 440 O(G)=O(G)-1:X(G)=X(G)-10:GOTO 430
  37. 450 PRINT:PRINT"YOU BUSTED WITH";X(G):X(G)=0:Y=Y-1:PRINT
  38. 460 REM ********* CHECK FOR END OF PLAY ************
  39. 470 IF G<R GOTO 500
  40. 480 GOSUB 1250
  41. 490 GOTO190
  42. 500 G=G+1
  43. 510 N=P(G,1)
  44. 520 PRINT "YOUR 1ST CARD FOR HAND ";G;" WAS";
  45. 530 GOSUB 1050
  46. 540 GOTO 340
  47. 550 IF F<>0 GOTO 620
  48. 560 REM *********PLAYER STAND ALONE ROUTINE ************
  49. 570 IF X(G)<22 GOTO 470
  50. 580 IF O(G)=0 GOTO 450
  51. 590 X(G)=X(G)-10
  52. 600 O(G)=O(G)-1
  53. 610 G=G+1
  54. 620 IF F<>2 GOTO 730
  55. 630 IF S(G)=2 GOTO 670
  56. 640 PRINT "DOUBLE ON 1ST 2 CARDS ONLY"
  57. 650 GOTO 340
  58. 660 REM ***** DOUBLE DOWN ROUTINE **********
  59. 670 IF A<=E THEN GOTO 680 ELSE 1220
  60. 680 H(G)=2*U:N=D(A):P(G,3)=N:A=A+1:PRINT "YOU DRAW THE";:GOSUB 1050
  61. 690 GOSUB 1010:IF N=11 THEN O(G)=O(G)+1
  62. 700 X(G)=X(G)+N
  63. 710 IF X(G)<22 THEN GOTO 470
  64. 720 IF O(G)=0 THEN GOTO 450 ELSE O(G)=O(G)-1:X(G)=X(G)-10:GO1350
  65. 730 N=P(G,1):Y=Y+1:GOSUB 1010:M=N:N=P(G,2):GOSUB1010:IFM=NTHENGOTO760
  66. 740 PRINT "YOU MAY ONLY SPLIT PAIRS": GOTO 340
  67. 750 REM *********PAIR SPLIT ROUTINE **********
  68. 760 R=R+1:Y=Y+1:P(R,1)=P(G,2):S(G)=1:S(R)=1:X(G)=X(G)/2:X(R)=X(G)
  69. 770 H(R)=U:IF N<>11 THEN GOTO 340
  70. 780 REM **********ACES WERE SPLIT - 1 CARD EACH *********
  71. 790 IF A>E THEN GOSUB 1220
  72. 800 N=D(A):P(G,2)=N:PRINT "1ST ACE GETS A";:GOSUB 1050: GOSUB 1010
  73. 810 IF N=11 THEN N=1
  74. 820 X(G)=X(G)+N:A=A+1:IF A>E THEN GOSUB 1220
  75. 830 N=D(A):P(R,2)=N:PRINT "2ND ACE GETS A";:GOSUB 1050:GOSUB 1010
  76. 840 IF N=11 THEN N=1
  77. 850 X(R)=X(R)+N:A=A+1:GOTO480
  78. 860 REM ************ BUILD 1 TO 4 DECKS ************
  79. 870 FOR I=1 TO N: J=(I-1)*52: FOR K =1 TO 52: D(J+K)=K:NEXT K,I:RETURN
  80. 880 REM *********SHUFFLE THE CARDS ***********
  81. 890 PRINTCHR$(26):PRINT "I'M SHUFFLING.... ":FOR I=B TO E
  82. 900 C=RND(1)*E:IF C<B GOTO 900 ELSE L=D(I):D(I)=D(C):D(C)=L:NEXTI
  83. 910 A=B:RETURN
  84. 920 REM ******** DEAL THE CARDS ***********
  85. 930 FOR I=1 TO 11:Q(I)=0:FOR J=1 TO R: P(J,I)=0:NEXT J,I:R=1:Y=1
  86. 940 IF A+4>E THEN B=1:GOSUB 890
  87. 950 PRINT "DEALING":P(R,1)=D(A):Q(1)=D(A+1):P(R,2)=D(A+2):Q(2)=D(A+3)
  88. 960 A=A+4:T=2:S(1)=2:GOSUB980:M=N:RETURN
  89. 970 REM ********** COMPUTE THE VALUE OF THE DEALERS HAND *********
  90. 980 Z=0:W=0:FOR I=1 TO 2:N=Q(I):GOSUB 1010:IF N=11 THEN Z=Z+1
  91. 990 W=W+N:NEXT I :RETURN
  92. 1000 REM **********COMPUTE THE VALUE OF A CARD **********:
  93. 1010 IF N<14 THEN GOTO 1020 ELSE N=N-13:GOTO 1010
  94. 1020 IF N=1 THEN N=11:RETURN ELSE GOTO 1030
  95. 1030 IF N<11 THEN RETURN ELSE N=10:RETURN
  96. 1040 **********PRINT A CARD **********
  97. 1050 I=0
  98. 1060 IF N>=14 THEN N=N-13:I=I+1:GOTO1060
  99. 1070 IF N=1 THEN PRINT TAB(17);"ACE ";:GOTO1130
  100. 1080 IF N<10 THEN PRINT TAB(18);N;:GOTO1130
  101. 1090 IF N<11 THEN PRINT TAB(17);N;:GOTO 1130
  102. 1100 IF N<12 THEN PRINT TAB(16);"JACK ";:GOTO1130
  103. 1110 IF N<13 THEN PRINT TAB(15);"QUEEN ";:GOTO 1130
  104. 1120 PRINT TAB(16);"KING ";
  105. 1130 PRINT "OF ";:IF I=0 THEN PRINT "SPADES":RETURN
  106. 1140 IF I=1 THEN PRINT "HEARTS":RETURN
  107. 1150 IF I=2 THEN PRINT "DIAMONDS":RETURN ELSE PRINT "CLUBS":RETURN
  108. 1160 REM ********* COMPUTE VALUE OF PLAYERS HAND *********:
  109. 1170 O(G)=0:X(G)=0:FOR I =1 TO 2: N=P(G,I):GOSUB 1010:X(G)=X(G)+N
  110. 1180 IF N<>11 THEN GOTO 1200
  111. 1190 O(G)=O(G)+1
  112. 1200 NEXT I:RETURN
  113. 1210 REM *********SAVE THE CARDS THAT ARE ALREADY DEALT AND SHUFFLE**
  114. 1220 K=T:FOR I=1 TO R:K=K+S(I):NEXT I
  115. 1230 FOR I=1TOK:A=A-1:J=D(I):D(I)=D(A):D(A)=J:NEXTI:B=K+1:GOSUB890:RETURN
  116. 1240 REM *******DEALERS LOGIC **********:
  117. 1250 N=Q(1):PRINT "MY HOLE CARD";:GOSUB 1050:IF Y=0 THEN GOTO 1390
  118. 1260 IF W<17 THEN GOTO 1300
  119. 1270 IF W>17 THEN GOTO 1340
  120. 1280 IF Z=0 THEN GOTO 1380
  121. 1290 W=W-10:Z=Z-1
  122. 1300 IF A>E THEN GOSUB 1220
  123. 1310 N=D(A):T=T+1:A=A+1:PRINT:PRINT "I DRAW THE";:GOSUB1050:GOSUB1010
  124. 1320 IF N=11 THEN Z=Z+1
  125. 1330 W=W+N:GOTO 1260
  126. 1340 IF W<22 THEN GOTO 1380
  127. 1350 IF Z=0 THEN GOTO 1370
  128. 1360 Z=Z-1:W=W-10:GOTO1260
  129. 1370 PRINT "I BUSTED ";
  130. 1380 PRINT "MY TOTAL IS ";W
  131. 1390 FOR I =1 TO R:PRINT "YOU ";:IF X(I)<>0 THEN GOTO 1410
  132. 1400 PRINT "LOST ";:V=V-H(I):GOTO 1460
  133. 1410 IF W<22 THEN GOTO 1430
  134. 1420 PRINT "WON ";:V=V+H(I):GOTO 1460
  135. 1430 IF W<>X(I) THEN GOTO 1450
  136. 1440 PRINT "PUSHED ON ";:GOTO1460
  137. 1450 IF W<X(I) THEN GOTO 1420 ELSE GOTO 1400
  138. 1460 IF R<>1 THEN GOTO 1470 ELSE PRINT "THE HAND":GOTO 1480
  139. 1470 PRINT "HAND ";I
  140. 1480 NEXT I
  141. 1490 REM ********* PRINT THE PLAYERS WON/LOST STANDING *******
  142. 1500 PRINT
  143. 1510 PRINT "YOU'RE ";:IF V=0 THEN PRINT "EVEN":RETURN
  144. 1520 IF V<0 THEN PRINT "BEHIND $"V:RETURN ELSE PRINT "AHEAD $";V:RETURN
  145. 1530 PRINT "AHEAD $";V
  146. 1540 REM ********INSURANCE ROUTINE ************
  147. 1550 INPUT "INSURANCE (YES-NO)";M$:IF M$="NO" THEN RETURN
  148. 1560 IF M$<>"YES" THEN GOTO 1550
  149. 1570 PRINT "YOUR INSURANCE BET ";:IF W=21 THEN PRINT "WINS":V=V+U:RETURN
  150. 1580 PRINT "LOSES":V=V-U/2:RETURN
  151. 1590 REM ******END OF GAME WRAP UP **************
  152. 1600 PRINT "THANKS FOR PLAYING":PRINT "HOPE YOU ENJOYED YOURSELF"
  153. 1610 PRINT "HERE'S YOUR FINAL STANDING!":GOSUB 1510
  154. 1620 IFV>0THENPRINT"NOW, JUST YOU TRY TO COLLECT !!":END
  155. 1630 IF V=0THENPRINT"BIG DEAL......":END ELSEPRINT"PAY UP, OR ELSE":END
  156. 1640 REM ******** INSTRUCTIONS ***********
  157. 1650 PRINT:PRINT"THE DEALER STANDS ON 17 OR MORE"
  158. 1660 PRINT"BUT WILL HIT A SOFT 17."
  159. 1670 PRINT"YOU MAY SPLIT ANY PAIR.":PRINT"YOU MAY DOUBLE THE 1ST 2 CARDS"
  160. 1680 PRINT"AND GET ONLY 1 MORE CARD.":PRINT:PRINT"PLAY CODES:"
  161. 1690 PRINT "  0 - STAND":PRINT "  1 - HIT":PRINT "  2 - DOUBLE DOWN"
  162. 1700 PRINT "  3 - SPLIT A PAIR":PRINT:PRINT "A ZERO BET ENDS THE GAME"
  163. 1710 PRINT "A NEGATIVE BET FORCES A SHUFFLE"
  164. 1720 PRINT "GOOD LUCK - LET'S START":RETURN
  165.