"Blackjack"

Highlight the following code and save it as a text file called BLAKJACK.BAS
Put it in the same folder as your GW-BASIC program. Load it and run it.

10 ' ----------------------------------------------
20 '             AUSTRALIAN BLACKJACK
30 ' ----------------------------------------------
40 '     Program by G C Lindridge           6/12/90
50 '     Hole card conditions              19/11/92
60 '     Double on any 2 cards              1/12/93
70 '     
80 'When a satisfactory time delay setting has been found it ought to
90 'be entered into the code and then the TIME DELAY SETTING subroutine
100 'can be isolated from the normal running of the program.
110 CLEAR :KEY OFF :CLS :SCREEN 0 :WIDTH 80
120 DEFINT A-Z
130 DIM BET(2), PLHAND(2), PLSOFT(2), PLCARD(15), DLCARD(15)
140 DIM SOFT(21,11), HARD(27,11), DOUB(11,11), PAIR(22,11)
150 TD = 600                                        'TIME DELAY
160 GOSUB 850          'TIME DELAY SETTING - put behind a REM when not needed
170 CLS
180 GOSUB 290                                       'INPUT SCREEN
190 SCREEN 1           'LARGE DISPLAY - change to SCREEN 2 for small display
200 GOSUB 1440                                      'PLAY THE GAME
210 WIDTH 80 :SCREEN 0
220 IF BANK < MIN THEN PRINT "GONE BROKE !! ";BANK;"in the kitty." :PRINT
230 PRINT "END BLACKJACK"
240 PRINT :PRINT "Do you want to play again?" :PRINT
250 CH$ = INKEY$ :IF CH$ = "" THEN 250
260 IF CH$ = "Y" THEN 100 ELSE SYSTEM
270 END
280 ' ----------------------------------------------
290 '                                   INPUT SCREEN
300 ' ----------------------------------------------
310 WHILE (CH$ <> "5")
320   LOCATE 1,31 :PRINT "AUSTRALIAN BLACKJACK"
330   PRINT TAB(31);"--------------------"
340   LOCATE 6,26 :PRINT "< 1 >  How to play Blackjack"
350   PRINT TAB(26);"< 2 >  To see the User Guide"
360   PRINT TAB(26);"< 3 >  To see BASIC Strategy"
370   PRINT TAB(26);"< 4 >  To see HI-LO Strategy"
380   PRINT TAB(26);"< 5 >  Play Blackjack"
390   CH$=INKEY$
400   ON VAL(CH$) GOSUB 4190,4630,5090,5550
410 WEND
420 CLS
430 PRINT TAB(31);"AUSTRALIAN BLACKJACK"
440 PRINT TAB(31);"--------------------"
450 LOCATE 6,27 :INPUT "Preferred MINIMUM bet..";MIN
460 MIN = INT(MIN/10)*10 :IF MIN < 10 THEN LET MIN = 10
470 PRINT TAB(27);"TABLE MINIMUM BET IS....";MIN
480 MAX = 50*MIN
490 PRINT :PRINT TAB(27);"TABLE MAXIMUM BET IS....";MAX
500 PRINT :PRINT TAB(27);"HOW MUCH IS YOUR BANK..";:INPUT BANK
510 WHILE BANK < MIN*5
520   PRINT :PRINT TAB(27);"SPLITS, DOUBLES & INSURANCE"
530   PRINT TAB(27);"NEED A BANK OF AT LEAST......";MIN*5
540   PRINT :PRINT TAB(27);"HOW MUCH IS YOUR BANK..";:INPUT BANK
550 WEND
560 PRINT :PRINT TAB(21);"You can play every hand or only the hands"
570 PRINT TAB(21);"where the HI-LO count is TRUE 2 or better."
580 PRINT :PRINT TAB(21);"Do you want to play on the count? Y/N  ";
590 WHILE ONCOUNT$="" :ONCOUNT$=INKEY$ :WEND
600 PRINT ONCOUNT$
610 IF ONCOUNT$="Y" THEN LET TRUTOBET= 2 ELSE TRUTOBET= -50
620 GOSUB 1020                                      'CREATE PACK
630 PRINT TAB(21);"Do you want to inspect the cards? Y/N  ";
640 WHILE INSPECT$="" :INSPECT$=INKEY$ :WEND
650 PRINT INSPECT$
660 SNEAK$="" :GOSUB 1160                           'SHOW PACK
670 RANDOMIZE TIMER
680 GOSUB 1270                                      'SHUFFLE CARDS
690 SNEAK$="SNEAK PREVIEW" :GOSUB 1160              'SHOW SHUFFLED PACK
700 SHU=1                                           'FIRST SHOE
710 RETURN
720 ' ----------------------------------------------
730 '                                  PRESS ANY KEY
740 ' ----------------------------------------------
750 LOCATE 25,1 :PRINT ,,,"Press any key to continue";
760 WHILE INKEY$ = "" :WEND
770 CLS
780 RETURN
790 ' ----------------------------------------------
800 '                                     TIME DELAY
810 ' ----------------------------------------------
820 FOR K=1 TO TD :FOR L=1 TO TD :NEXT L :NEXT K
830 RETURN
840 ' ----------------------------------------------
850 '                              ADJUST TIME DELAY
860 ' ----------------------------------------------
870 PRINT :PRINT "Do you want to change the display time? Y/N  ";
880 CHOICE$ ="" :WHILE CHOICE$="" :CHOICE$=INKEY$ :WEND
890 PRINT CHOICE$
900 IF CHOICE$<>"Y" THEN 1000
910 PRINT :PRINT "Increase time delay? Y/N  ";
920 CHOICE$ ="" :WHILE CHOICE$="" :CHOICE$=INKEY$ :WEND
930 PRINT CHOICE$
940 IF CHOICE$="Y" THEN LET TD= TD+10 ELSE TD=TD-10
950 PRINT :PRINT "Time delay now ";TD
960 PRINT :PRINT "More change? Y/N  ";
970 CHOICE$ ="" :WHILE CHOICE$="" :CHOICE$=INKEY$ :WEND
980 PRINT CHOICE$
990 IF CHOICE$="Y" THEN 910
1000 RETURN
1010 ' ----------------------------------------------
1020 '                                    CREATE PACK
1030 ' ----------------------------------------------
1040 PRINT :PRINT TAB(27);"HOW MANY DECKS.........";:INPUT DECKS
1050 PRINT
1060 IF DECKS < 1 OR DECKS > 8 THEN LET DECKS = 8 :PRINT TAB(32);"8 DECK SHOE"
1070 PACK = DECKS * 52                               'NUM OF CARDS
1080 DIM CARD(PACK)
1090 '                                               'GIVE GAME VALUES TO CARDS
1100 FOR K = 1 TO PACK
1110   CARD(K) = K MOD 13 + 2
1120   IF CARD(K) > 11 THEN LET CARD(K) = 10
1130 NEXT K
1140 RETURN
1150 ' ----------------------------------------------
1160 '                                     SHOW CARDS
1170 ' ----------------------------------------------
1180 IF INSPECT$ <> "Y" THEN 1250                    'DON'T SHOW PACK
1190 PRINT SNEAK$
1200 FOR K = PACK TO 1 STEP -1
1210   IF CARD(K) < 11 THEN PRINT USING "####";CARD(K); ELSE PRINT "   A";
1220 NEXT K
1230 PRINT :PRINT
1240 GOSUB 730                                       'PRESS ANY KEY
1250 RETURN                                          'END DISPLAY
1260 ' ----------------------------------------------
1270 LOCATE 25,1 :                PRINT "[SHUFFLE] ";
1280 ' ----------------------------------------------
1290 FOR K = PACK TO 2 STEP -1
1300   X = INT(RND(1)*K)+1
1310   SWAP CARD(K),CARD(X)
1320 NEXT K
1330 SHOE = PACK                                     'PUT CARDS IN SHOE
1340 RETURN
1350 ' ----------------------------------------------
1360 '                                      RESHUFFLE
1370 ' ----------------------------------------------
1380 CLS
1390 DEALT=0 :COUNT=0 :TRU=0 :TEN=0                  'INITIALISE COUNTS
1400 SHU = SHU+1
1410 GOSUB 1270                                      'SHUFFLE
1420 RETURN
1430 ' ----------------------------------------------
1440 '                                  PLAY THE GAME
1450 ' ----------------------------------------------
1460 WHILE  (BET$ <> "Q") AND (BANK >= MIN)          'CONTINUE PLAY
1470   GOSUB 1520                                    'PLAY ONE HAND
1480   IF (SHOE < 6*DECKS+5) OR (BET$="R") THEN GOSUB 1360  'RESHUFFLE POINT
1490 WEND
1500 RETURN
1510 ' ----------------------------------------------
1520 '                                  PLAY ONE HAND
1530 ' ----------------------------------------------
1540 P=0 :D=0 :ROW=0 :COL=0 :BET$="0" :INSBET=0      'INITIALISE
1550 DLHAND=0 :DLSOFT=0 :PLBLACK=0 :DLBLACK=0
1560 FOR K = 1 TO 15
1570   PLCARD(K)=0 :DLCARD(K)=0
1580 NEXT K
1590 FOR K = 1 TO 2
1600   PLHAND(K)=0 :PLSOFT(K)=0 :BET(K)=0
1610 NEXT K
1620 CHIPS = BANK
1630 GOSUB 2110                                      'COUNT DISPLAYS
1640 IF TRU < TRUTOBET THEN 1740
1650 CLS
1660 GOSUB 2110                                      'COUNT DISPLAYS
1670 LOCATE 25,15 :PRINT "BET Q to Quit ";
1680 LOCATE 25, 1 :INPUT;"MAKE BET $",BET$
1690 IF (BET$="Q") OR (BET$="R") THEN 1850           'QUIT OR RE-SHUFFLE
1700 IF (BET$="T") THEN GOSUB 850                    'ADJUST TIME DELAY
1710 BET(1)= INT(ABS(VAL(BET$))/5)*5                 'BET IN UNITS OF 5
1720 IF BET(1) > BANK THEN LET BET(1)=INT(BANK/5)*5  'BET THE LOT
1730 IF BET(1) > MAX THEN LET BET(1)=MAX             'MAX LIMIT BET
1740 IF BET$="0" THEN LET BET(1)=0 ELSE IF BET(1) < MIN THEN LET BET(1)=MIN
1750 INITBET = BET(1)                                'INITIAL BET
1760 CLS
1770 GOSUB 1950                                      'CALC BANK
1780 GOSUB 2210                                      'PLAYER'S FIRST CARD
1790 GOSUB 3350                                      'DEALER'S FIRST CARD
1800 GOSUB 2210                                      'PLAYER'S SECOND CARD
1810 IF BET$="0" THEN GOSUB 6740 ELSE GOSUB 2340     'PLAYER OPTIONS
1820 GOSUB 3510                                      'COMPLETE DEALER'S HAND
1830   GOSUB 800                                     'TIME DELAY
1840 GOSUB 3620                                      'SETTLE BETS
1850 RETURN                                          'END DEALING
1860 ' ----------------------------------------------
1870 '                                    DEAL A CARD
1880 ' ----------------------------------------------
1890 CARD = CARD(SHOE)                               'THE TOP CARD
1900 SHOE = SHOE - 1                                 'REMOVE CARD FROM PACK
1910 DEALT = PACK - SHOE                             'NUM CARDS DEALT
1920 GOSUB 2020                                      'SHOW COUNTS
1930 RETURN                                          'DEAL CARD
1940 ' ----------------------------------------------
1950 '                                      CALC BANK
1960 ' ----------------------------------------------
1970 CHIPS=CHIPS-BET(1)
1980 LOCATE 24, 1 :PRINT "BANK";CHIPS;
1990 LOCATE 25,15 :PRINT "B=";BET(1);
2000 RETURN
2010 ' ----------------------------------------------
2020 '                  HI-LO & INSURANCE COUNT CALCS
2030 ' ----------------------------------------------
2040 IF CARD >= 10 THEN LET COUNT=COUNT-1            'NEGATIVE CARD
2050 IF CARD <=  6 THEN LET COUNT=COUNT+1            'POSITIVE CARD
2060 TRU = INT(COUNT/SHOE*52)                        'TRUE COUNT
2070 IF CARD = 10 THEN LET TEN=TEN-2 ELSE TEN=TEN+1  'TEN COUNT
2080 GOSUB 2110                                      'COUNT DISPLAYS
2090 RETURN
2100 ' ----------------------------------------------
2110 '                HI-LO & INSURANCE COUNT DISPLAY
2120 ' ----------------------------------------------
2130 LOCATE 24,1 :PRINT "BANK";CHIPS;
2140 LOCATE 24,15 :PRINT "C=";:PRINT USING "###";COUNT;   'RUNNING COUNT
2150 LOCATE 24,24 :PRINT "T=";:PRINT USING "###";TRU;     'TRUE COUNT
2160 LOCATE 24,33 :PRINT "I=";:PRINT USING "###";TEN;     'INSURANCE COUNT
2170 LOCATE 25,24 :PRINT "S=";:PRINT USING "###";SHU;     'SHOE NUMBER
2180 LOCATE 25,33 :PRINT "D=";:PRINT USING "###";DEALT;   'CARDS DEALT
2190 RETURN
2200 ' ----------------------------------------------
2210 '                         PLAYER'S FIRST 2 CARDS
2220 ' ----------------------------------------------
2230 H=1                                             'PLAYER'S FIRST HAND
2240 GOSUB 1870                                      'DEAL A CARD
2250 P=P+1                                           'COUNT PLAYER'S CARDS
2260 PLCARD(P) = CARD
2270 PLHAND(H) = PLHAND(H) + PLCARD(P)
2280 PLSOFT(H) = PLSOFT(H) + PLCARD(P)
2290 IF CARD=11 THEN LET PLSOFT(H)=PLSOFT(H)-10
2300 IF PLHAND(H) > 21 AND PLSOFT(H) < PLHAND(H) THEN LET PLHAND(H)=PLHAND(H)-10
2310 ROW = 80 :COL = P*32 - 32 :GOSUB 3770           'SHOW CARDS IN BOX
2320 RETURN
2330 ' ----------------------------------------------
2340 '                               PLAYER'S OPTIONS
2350 ' ----------------------------------------------
2360 LEGAL=1 :COL = 32                               'INITIALISE DRAW CARDS
2370 IF DLCARD(1) = 11 THEN GOSUB 2440               'INSURANCE
2380 IF PLCARD(1) + PLCARD(2) = 21 THEN GOSUB 2540   'BLACKJACK
2390 IF PLCARD(1) = PLCARD(2) THEN GOSUB 2600        'SPLIT PAIR
2400 IF LEGAL AND ((PLHAND(1) < 12) OR (PLSOFT(1) < 11)) THEN GOSUB 2920 'DOUBLE
2410 IF LEGAL THEN GOSUB 3080                        'DRAW CARDS
2420 RETURN
2430 ' ----------------------------------------------
2440 LOCATE 25,1:                 PRINT "INS  Y/N  ";
2450 ' ----------------------------------------------
2460 CH$ = "" :WHILE CH$="" :CH$=INKEY$ :WEND
2470 IF CH$ <> "Y" THEN 2520
2480 LOCATE 25,1 :INPUT;"INS= $ ";INSBET
2490 IF (INSBET < 1) OR (INSBET > BET(1)/2) THEN LET INSBET=BET(1)/2
2500 IF INSBET > CHIPS THEN LET INSBET=CHIPS
2510 CHIPS=CHIPS-INSBET :LOCATE 24,1 :PRINT "BANK";CHIPS;
2520 RETURN
2530 ' ----------------------------------------------
2540 LOCATE 13,31:                  PRINT "BLACKJACK"
2550 ' ----------------------------------------------
2560 PLBLACK=1
2570 LEGAL=0                                         'INHIBIT DRAW CARDS
2580 RETURN
2590 ' ----------------------------------------------
2600 LOCATE 25,1 :                PRINT "SPLIT  Y/N";
2610 ' ----------------------------------------------
2620 CH$ = "" :WHILE CH$="" :CH$=INKEY$ :WEND
2630 IF CH$ <> "Y" OR CHIPS < BET(1) THEN 2830
2640 PLHAND(1) = PLCARD(1) :PLSOFT(1) = PLCARD(1)
2650 PLHAND(2) = PLCARD(2) :PLSOFT(2) = PLCARD(2)
2660 GOSUB 4090                                      'MOVE SPLIT CARD IN BOX
2670 BET(2) = BET(1)                                 'BET ON EACH SPLIT CARD
2680 GOSUB 1950                                      'CALC BANK
2690 FOR H = 1 TO 2
2700   LEGAL=1                                       'ALLOW TO DRAW CARDS
2710   P=P+1
2720   GOSUB 1870                                    'DEAL A CARD
2730   PLCARD(P) = CARD
2740   PLHAND(H) = PLHAND(H) + PLCARD(P)
2750   PLSOFT(H) = PLSOFT(H) + PLCARD(P)
2760   IF CARD = 11 THEN LET PLSOFT(H) = PLSOFT(H)-10
2770   ROW = H*48+32 :COL = 32 :GOSUB 3770           'SHOW SPLIT PAIR DRAW
2780   IF PLCARD(1) = 11 THEN GOSUB 2850             'SPLIT ACES
2790   IF LEGAL AND ((PLHAND(H) <12) OR (PLSOFT(H) <11)) THEN GOSUB 2920 'DOUBLE
2800   IF LEGAL THEN GOSUB 3080                      'DRAW CARDS
2810 NEXT H
2820 LEGAL=0                                         'INHIBIT DRAW CARDS
2830 RETURN
2840 ' ----------------------------------------------
2850 '                                     SPLIT ACES
2860 ' ----------------------------------------------
2870 IF PLHAND(H) > 21 THEN LET PLHAND(H) = PLHAND(H) - 10     'DRAW ANOTHER ACE
2880 LOCATE H*6+7,30 :PRINT USING "###";PLHAND(H)    'SHOW HAND TOTAL
2890 LEGAL=0                                         'INHIBIT DRAW CARDS
2900 RETURN
2910 ' ----------------------------------------------
2920 LOCATE 25,1 :                PRINT "DOUBLE Y/N";
2930 ' ----------------------------------------------
2940 CH$ = "" :WHILE CH$="" :CH$=INKEY$ :WEND
2950 IF CH$ <> "Y" OR CHIPS < BET(1) THEN 3060
2960 GOSUB 1950                                      'CALC BANK
2970 BET(H) = 2*BET(H)                               'DOUBLE THE BET
2980 GOSUB 1870                                      'DEAL A CARD
2990 P=P+1
3000 PLCARD(P) = CARD
3010 PLHAND(H) = PLHAND(H) + PLCARD(P)
3020 ROW = H*48+32 :COL = 64 :GOSUB 3770             'SHOW CARD
3030 IF PLHAND(H) > 21 THEN LET PLHAND(H) = PLHAND(H) - 10
3040 LOCATE H*6+7,30 :PRINT PLHAND(H)                'SHOW HAND TOTAL
3050 LEGAL=0                                         'INHIBIT DRAW CARDS
3060 RETURN
3070 ' ----------------------------------------------
3080 '                                     DRAW CARDS
3090 ' ----------------------------------------------
3100 WHILE PLHAND(H) < 12
3110   GOSUB 3230                                    'COMPULSORY DRAW
3120 WEND
3130 CH$="Y"                                         'INITIALISE WHILE
3140 WHILE (PLHAND(H) < 21) AND (CH$ = "Y")
3150   LOCATE 25,1 :PRINT "A CARD Y/N";
3160   CH$ = "" :WHILE CH$="" :CH$=INKEY$ :WEND
3170   IF CH$ = "Y" THEN GOSUB 3230                  'DRAW ANOTHER CARD
3180 WEND
3190 LOCATE H*6+7,30 :PRINT PLHAND(H);               'SHOW HAND TOTAL
3200 IF PLHAND(H) > 21 THEN PRINT "BUST"
3210 RETURN
3220 ' ----------------------------------------------
3230 '                                CARDS AS NEEDED
3240 ' ----------------------------------------------
3250 GOSUB 1870                                      'DEAL A CARD
3260 P=P+1
3270 PLCARD(P) = CARD
3280 PLHAND(H) = PLHAND(H) + PLCARD(P)
3290 PLSOFT(H) = PLSOFT(H) + PLCARD(P)
3300 IF CARD=11 THEN LET PLSOFT(H)=PLSOFT(H)-10
3310 IF PLHAND(H) > 21 AND PLSOFT(H) < PLHAND(H) THEN LET PLHAND(H)=PLHAND(H)-10
3320 ROW = H*48+32 :COL = COL+32 :GOSUB 3770         'SHOW CARD IN BOX
3330 RETURN
3340 ' ----------------------------------------------
3350 '                                  DEALER'S HAND
3360 ' ----------------------------------------------
3370 GOSUB 1870                                      'DEAL A CARD
3380 D=D+1
3390 DLCARD(D) = CARD
3400 IF DLCARD(1) + DLCARD(2) = 21 THEN LET DLBLACK = 1
3410 DLHAND = DLHAND + CARD
3420 DLSOFT = DLSOFT + CARD
3430 IF CARD=11 THEN LET DLSOFT=DLSOFT-10
3440 IF DLHAND > 21 AND DLSOFT < DLHAND THEN LET DLHAND = DLHAND-10
3450 ROW = 16 :COL = D*32-32 :GOSUB 3830             'SHOW CARD
3460 IF DLHAND > 16 THEN LOCATE 5,30 :PRINT DLHAND;  'SHOW HAND TOTAL
3470 IF DLHAND > 21 THEN PRINT "BUST"
3480 IF DLBLACK THEN LOCATE 5,31 :PRINT "BLACKJACK"
3490 RETURN
3500 ' ----------------------------------------------
3510 '                         COMPLETE DEALER'S HAND
3520 ' ----------------------------------------------
3530 IF (PLBLACK AND DLCARD(1) >= 10) OR (INSBET >= 1
       AND DLCARD(2) = 0) THEN GOSUB 3350            'TO DEALER'S HAND
3540 IF PLBLACK THEN 3600
3550 IF PLHAND(1) > 21 AND (PLHAND(2) =  0 OR PLHAND(2) > 21) THEN 3600
3560 WHILE DLHAND < 17
3570   GOSUB 3350                                    'GO FOR COMPULSORY DRAW
3580   GOSUB 800                                     'TIME DELAY
3590 WEND
3600 RETURN
3610 ' ----------------------------------------------
3620 '                             SETTLEMENT OF BETS
3630 ' ----------------------------------------------
3640 IF DLBLACK THEN LET BANK = BANK + 2*INSBET ELSE BANK = BANK - INSBET
3650 IF PLHAND(1) > 21 THEN LET PLHAND(1) = 0
3660 IF H > 1 AND PLHAND(2) > 21 THEN LET PLHAND(2) = 0
3670 IF H=1 THEN LET PLHAND(2) = DLHAND
3680 IF PLBLACK THEN LET PLHAND(1) = 22
3690 IF DLHAND > 21 THEN LET DLHAND = 1
3700 IF DLBLACK THEN LET DLHAND = 22 :BET(1) = INITBET :BET(2) = 0
3710 IF PLHAND(1) > DLHAND THEN LET BANK = BANK + BET(1):
       IF PLBLACK THEN LET BANK = BANK + .5*BET(1)
3720 IF PLHAND(2) > DLHAND THEN LET BANK = BANK + BET(2)
3730 IF PLHAND(1) < DLHAND THEN LET BANK = BANK - BET(1)
3740 IF PLHAND(2) < DLHAND THEN LET BANK = BANK - BET(2)
3750 RETURN
3760 ' ----------------------------------------------
3770 '                         PICTURE PLAYER'S CARDS
3780 ' ----------------------------------------------
3790 PICTURE = PLCARD(P)
3800 GOSUB 3890                                      'DRAW PICTURE
3810 RETURN
3820 ' ----------------------------------------------
3830 '                         PICTURE DEALER'S CARDS
3840 ' ----------------------------------------------
3850 PICTURE = DLCARD(D)
3860 GOSUB 3890                                      'DRAW PICTURE
3870 RETURN
3880 ' ----------------------------------------------
3890 '                            DRAW CARD AND VALUE
3900 ' ----------------------------------------------
3910 LINE (COL+4,ROW+4)-(COL+30,ROW+44),,B           'DRAW CARD BORDER
3920 IF PICTURE = 11 THEN LET PIP$ = "A "
3930 IF PICTURE = 10 THEN GOSUB 4000                 '1O, J, Q OR K
3940 IF PICTURE < 10 THEN LET PIP$ = RIGHT$(STR$(PICTURE),1)+" "
3950 SUIT$ = CHR$(INT(RND*4+3))                      'CARD SUIT
3960 LOCATE ROW/8+2,COL/8+2 :PRINT PIP$;             'DRAW PIPS
3970 LOCATE ROW/8+4,COL/8+3 :PRINT SUIT$;            'DRAW SUIT
3980 RETURN
3990 ' ----------------------------------------------
4000 '                                 10 VALUE CARDS
4010 ' ----------------------------------------------
4020 X = INT (RND(1)*4)
4030 IF X = 0 THEN LET PIP$ = "1O"
4040 IF X = 1 THEN LET PIP$ = "J "
4050 IF X = 2 THEN LET PIP$ = "Q "
4060 IF X = 3 THEN LET PIP$ = "K "
4070 RETURN
4080 ' ----------------------------------------------
4090 '                BLANK OUT AND REDRAW SPLIT CARD
4100 ' ----------------------------------------------
4110 LINE (COL+4,ROW+4)-(COL+30,ROW+44),0,B          'BLANK OUT CARD BORDER
4120 LOCATE ROW/8+2,COL/8+2 :PRINT"  ";              'BLANK OUT PIPS
4130 LOCATE ROW/8+4,COL/8+3 :PRINT" ";               'BLANK OUT SUIT
4140 LINE (COL-28,ROW+52)-(COL-2 ,ROW+92),,B         'REDRAW CARD BORDER
4150 LOCATE ROW/8+8, COL/8-2 :PRINT PIP$;            'REDRAW PIPS
4160 LOCATE ROW/8+10,COL/8-1 :PRINT SUIT$;           'REDRAW SUIT
4170 RETURN
4180 ' ----------------------------------------------
4190 CLS :      PRINT ,,"HOW TO PLAY BLACKJACK" :PRINT
4200 ' ----------------------------------------------
4210 PRINT ,"A hand is the total of the values of two or more cards."
4220 PRINT ,"Numeric cards count their pip values. Face cards count 10."
4230 PRINT ,"Aces count 11 or 1. If any hand totals more than 21 when"
4240 PRINT ,"an Ace is counted as 11, its value changes to 1. Suits"
4250 PRINT ,"have no meaning.  Several decks are shuffled together."
4260 PRINT ,"Players must place their bets before any cards are dealt."
4270 PRINT ,"One card is dealt to each player and one to the dealer."
4280 PRINT ,"A second card is then dealt to each player." :PRINT
4290 PRINT ,"The players, in turn, are then offered options."
4300 PRINT ,"   If a player's first 2 cards are an Ace and a 10 value"
4310 PRINT ,"     card then that hand is a Blackjack."
4320 PRINT ,"   If a hand total is less than 21 the player can draw"
4330 PRINT ,"     additional cards or can stay any time (minimum 12)."
4340 PRINT ,"   If the first 2 cards are a pair they may be split into"
4350 PRINT ,"     2 hands, each with a bet and played as normal except"
4360 PRINT ,"     that split Aces are dealt only one card each."
4370 PRINT ,"   A player on his first 2 cards (but not blackjack) may"
4380 PRINT ,"     double his bet and be dealt one card only to the hand."
4390 PRINT ,"     Split pair hands (but not Aces) have this same option."
4400 PRINT ,"If a player's hand exceeds 21 the hand has 'busted'."
4410 GOSUB 730                                       'PRESS ANY KEY
4420 CLS :PRINT ,,"HOW TO PLAY BLACKJACK page 2" :PRINT
4430 PRINT ,"Insurance wager. If the dealer has an Ace, the player may"
4440 PRINT ,"place a separate bet of up to half of his original bet. If"
4450 PRINT ,"the dealer blackjacks the bet wins 2/1. If not, it is lost.":PRINT
4460 PRINT ,"Dealer's hand:"
4470 PRINT ,"When all players' hands are completed, the dealer takes"
4480 PRINT ,"cards to her hand but stops once 17 or greater is reached."
4490 PRINT ,"If the dealer's hand exceeds 21 the hand has 'busted'." :PRINT
4500 PRINT ,"Player wins:"
4510 PRINT ,"       1. The player has not busted but the dealer has."
4520 PRINT ,"       2. The player's hand is more the dealer's hand." :PRINT
4530 PRINT ,"Player loses:"
4540 PRINT ,"       1. The player has busted his hand."
4550 PRINT ,"       2. The dealer's hand is more the player's hand." :PRINT
4560 PRINT ,"Winning hands win 'evens'. Player blackjacks win 1"; CHR$(171);"."
4570 PRINT ,"Losing hands lose the bets they carry, excepting that"
4580 PRINT ,"the original bet only loses to a dealer's blackjack."
4590 PRINT ,"ALL tied hands are a Standoff. No money is won or lost."
4600 GOSUB 730                                       'PRESS ANY KEY
4610 RETURN
4620 ' ----------------------------------------------
4630 CLS :                 PRINT ,,"USER GUIDE":PRINT
4640 ' ----------------------------------------------
4650 PRINT  "LOCAL RULES"
4660 PRINT ,"8 Deck shoe (some 6 Deck). No hole card."
4670 PRINT ,"Double down on any first 2 cards (including after splitting)."
4680 PRINT ,"No re-splitting of pairs."
4690 PRINT ,"Original bet only is lost to a Dealer's Blackjack." :PRINT
4700 PRINT  "BET OPTIONS"
4710 PRINT ,"(a) Make a bet of your choice and press [Enter]."
4720 PRINT ,"(b) Press [Enter] to make a minimum bet (units of 5)."
4730 PRINT ,"(c) Bet 0 and [Enter] to make no bet. Hand plays automatically."
4740 PRINT ,"(d) Bet R and [Enter] to Re-shuffle any time."
4750 PRINT ,"(d) Bet T and [Enter] to adjust time delay."
4760 PRINT ,"(e) Bet Q and [Enter] to Quit Blackjack session."
4770 PRINT  "INSURANCE"
4780 PRINT ,"(a) Make Insurance bet of your choice and press [Enter]."
4790 PRINT ,"(b) Press [Enter] to make a maximum Insurance bet." :PRINT
4800 PRINT  "OPERATING KEYS
4810 PRINT ,"(a) Press Y for a 'YES' response."
4820 PRINT ,"(b) Press N for a 'NO ' response."
4830 PRINT ,"(c) Press [Enter] for an alternative 'NO' response."
4840 GOSUB 730                                       'PRESS ANY KEY
4850 CLS :PRINT ,,"USER GUIDE page 2" :PRINT
4860 PRINT  "STATUS LINES"
4870 PRINT ,"The screen's 2 bottom lines are the Status lines"
4880 PRINT ,"and remain active while the program is running."
4890 PRINT  "LINE 1"
4900 PRINT ,"BANK status."
4910 PRINT ,"C= HI-LO running count."
4920 PRINT ,"T= HI-LO true count."
4930 PRINT ,"I= Insurance 10 count."
4940 PRINT  "LINE 2"
4950 PRINT ,"Left entry (a)   The Bet question.
4960 PRINT ,"Left entry (b)   The current playing option which"
4970 PRINT ,"                 requires a 'Yes' or 'No' response."
4980 PRINT ,"B= Bet units."
4990 PRINT ,"S= Number of the shoe being dealt."
5000 PRINT ,"D= Number of cards dealt so far." :PRINT
5010 PRINT  "2 KEY OPERATION"
5020 PRINT ,"IT IS POSSIBLE TO PLAY THE GAME USING 2 KEYS ONLY"
5030 PRINT ,"(1)   The 'Y' key for a 'Yes' response."
5040 PRINT ,"(2)   The [Enter] key for a 'No' response"
5050 PRINT ,"      and also for making minimum bets."
5060 GOSUB 730                                       'PRESS ANY KEY
5070 RETURN
5080 ' ----------------------------------------------
5090 CLS :     PRINT ,,"  BASIC STRATEGY":PRINT:PRINT
5100 ' ----------------------------------------------
5110 PRINT ,"SOFT HANDS             * = STAND otherwise DRAW"
5120 GOSUB 6690                                      'HEADER
5130 PRINT ,"19   *   *   *   *   *   *   *   *   *   *   19 & OVER"
5140 PRINT ,"18   *   *   *   *   *   *   *               18"
5150 PRINT ,"17                                           17 & UNDER" :PRINT
5160 PRINT ,"HARD HANDS             * = STAND otherwise DRAW"
5170 GOSUB 6690                                      'HEADER
5180 PRINT ,"17   *   *   *   *   *   *   *   *   *   *   17 & OVER"
5190 PRINT ,"16   *   *   *   *   *                       16"
5200 PRINT ,"15   *   *   *   *   *                       15"
5210 PRINT ,"14   *   *   *   *   *                       14"
5220 PRINT ,"13   *   *   *   *   *                       13"
5230 PRINT ,"12           *   *   *                       12"
5240 PRINT :PRINT ,"DON'T TAKE INSURANCE"
5250 GOSUB 730                                       'PRESS ANY KEY
5260 PRINT ,"SOFT DOUBLE          * = DOUBLE otherwise STAND"
5270 GOSUB 6690                                      'HEADER
5280 PRINT ,"A7       *   *   *   *                       A7"
5290 PRINT ,"A6       *   *   *   *                       A6"
5300 PRINT ,"A5           *   *   *                       A5"
5310 PRINT ,"A4           *   *   *                       A4"
5320 PRINT ,"A3               *   *                       A3"
5330 PRINT ,"A2                   *                       A2" :PRINT
5340 PRINT ,"HARD DOUBLE          * = DOUBLE otherwise STAND"
5350 GOSUB 6690                                      'HEADER
5360 PRINT ,"11   *   *   *   *   *   *   *   *   *       11"
5370 PRINT ,"10   *   *   *   *   *   *   *   *           10"
5380 PRINT ,"09       *   *   *   *                       09"
5390 GOSUB 730                                       'PRESS ANY KEY
5400 PRINT ,"SPLIT PAIR           * = SPLIT otherwise Alternative Play"
5410 GOSUB 6690                                      'HEADER
5420 PRINT ,"AA   *   *   *   *   *   *   *   *   *   *   AA"
5430 PRINT ,"TT                                           TT"
5440 PRINT ,"99   *   *   *   *   *       *   *           99"
5450 PRINT ,"88   *   *   *   *   *   *   *   *   *   *   88"
5460 PRINT ,"77   *   *   *   *   *   *                   77"
5470 PRINT ,"66   *   *   *   *   *                       66"
5480 PRINT ,"55                                           55"
5490 PRINT ,"44               *   *                       44"
5500 PRINT ,"33   *   *   *   *   *   *                   33"
5510 PRINT ,"22   *   *   *   *   *   *                   22"
5520 GOSUB 730                                       'PRESS ANY KEY
5530 RETURN
5540 ' ----------------------------------------------
5550 CLS :     PRINT ,,"  HI-LO STRATEGY  (WONG A4)":PRINT:PRINT
5560 ' ----------------------------------------------
5570 PRINT ,"SOFT HANDS       TRUE STAND (inc. *) otherwise DRAW"
5580 GOSUB 6690                                      'HEADER
5590 PRINT ,"19   *   *   *   *   *   *   *   *   *   *   19 & OVER"
5600 PRINT ," *   *   *   *   *   *   *   *          ";
5610 COLOR 0,7 :PRINT " 1 ";
5620 COLOR 7,0 :PRINT "  18"
5630 PRINT ,"17                                           17 & UNDER" :PRINT
5640 PRINT ,"HARD HANDS       TRUE STAND (inc. *) otherwise DRAW"
5650 GOSUB 6690                                      'HEADER
5660 PRINT ,"18   *   *   *   *   *   *   *   *   *   *   18 & OVER"
5670 PRINT ,"17   *   *   *   *   *   *   *   *   *   *   17"
5680 PRINT ,"16   *   *   *   *   *          ";
5690 COLOR 0,7 :PRINT " 5   0 ";
5700 COLOR 7,0 :PRINT "      16"
5710 PRINT ,"15   *   *   *   *   *              ";
5720 COLOR 0,7 :PRINT " 4 ";
5730 COLOR 7,0 :PRINT "      15"
5740 PRINT ,"14   *   *   *   *   * ";
5750 COLOR 7,0 :PRINT "                    ";
5760 COLOR 7,0 :PRINT "  14"
5770 PRINT ,"13  -0  -1   *   *   *                     ";
5780 COLOR 7,0 :PRINT "  13"
5790 PRINT ,"12  ";
5800 COLOR 0,7 :PRINT " 3   2 ";
5810 COLOR 7,0 :PRINT " -0  -1  -0                       12"
5820 GOSUB 730                                       'PRESS ANY KEY
5830 PRINT ,"SOFT DOUBLE             TRUE DOUBLE  otherwise DRAW"
5840 GOSUB 6690                                      'HEADER
5850 PRINT ,"A9          ";
5860 COLOR 0,7 :PRINT " 6   5   4 ";
5870 COLOR 7,0 :PRINT "                    ";
5880 COLOR 7,0 :PRINT "  A9"
5890 PRINT ,"A8      ";
5900 COLOR 0,7 :PRINT " 5   3   1   1 ";
5910 COLOR 7,0 :PRINT "                    ";
5920 COLOR 7,0 :PRINT "  A8"
5930 PRINT ,"A7  ";
5940 COLOR 0,7 :PRINT " 0 ";
5950 COLOR 7,0 :PRINT "  *   *   *   * ";
5960 COLOR 7,0 :PRINT "                    ";
5970 COLOR 7,0 :PRINT "  A7"
5980 PRINT ,"A6  ";
5990 COLOR 0,7 :PRINT " 1 ";
6000 COLOR 7,0 :PRINT "  *   *   *   * ";
6010 COLOR 7,0 :PRINT "                    ";
6020 COLOR 7,0 :PRINT "  A6"
6030 PRINT ,"A5      ";
6040 COLOR 0,7 :PRINT " 4 ";
6050 COLOR 7,0 :PRINT "  *   *   * ";
6060 COLOR 7,0 :PRINT "                    ";
6070 COLOR 7,0 :PRINT "  A5"
6080 PRINT ,"A4         ";
6090 COLOR 7,0 :PRINT " -0   *   * ";
6100 COLOR 7,0 :PRINT "                    ";
6110 COLOR 7,0 :PRINT "  A4"
6120 PRINT ,"A3          ";
6130 COLOR 0,7 :PRINT " 1 ";
6140 COLOR 7,0 :PRINT " -1   * ";
6150 COLOR 7,0 :PRINT "                    ";
6160 COLOR 7,0 :PRINT "  A3"
6170 PRINT ,"A2          ";
6180 COLOR 0,7 :PRINT " 3   0 ";
6190 COLOR 7,0 :PRINT " -1 ";
6200 COLOR 7,0 :PRINT "                    ";
6210 COLOR 7,0 :PRINT "  A2" :PRINT
6220 PRINT ,"HARD DOUBLE             TRUE DOUBLE  otherwise DRAW"
6230 GOSUB 6690                                      'HEADER
6240 PRINT ,"11   *   *   *   *   *   *   *   *   *  ";
6250 COLOR 0,7 :PRINT " 1 ";
6260 COLOR 7,0 :PRINT "  11"
6270 PRINT ,"10   *   *   *   *   *   *   *  -1  ";
6280 COLOR 0,7 :PRINT " 4   4 ";
6290 COLOR 7,0 :PRINT "  10"
6300 PRINT ,"09  ";
6310 COLOR 0,7 :PRINT " 1 ";
6320 COLOR 7,0 :PRINT " -0   *   *   *  ";
6330 COLOR 0,7 :PRINT " 3 ";
6340 COLOR 7,0 :PRINT "                  09"
6350 PRINT ,"08          ";
6360 COLOR 0,7 :PRINT " 5   3   1 ";
6370 COLOR 7,0 :PRINT "                    ";
6380 COLOR 7,0 :PRINT "  08"
6390 GOSUB 730                                       'PRESS ANY KEY
6400 PRINT ,"SPLIT PAIR    TRUE SPLIT (inc. *) otherwise Alternative Play"
6410 GOSUB 6690                                      'HEADER
6420 PRINT ,"AA   *   *   *   *   *   *   *   *   *   *   AA"
6430 PRINT ,"TT          ";
6440 COLOR 0,7 :PRINT " 6   5   4 ";
6450 COLOR 7,0 :PRINT "                      TT"
6460 PRINT ,"99   *   *   *   *   *  ";
6470 COLOR 0,7 :PRINT " 3 ";
6480 COLOR 7,0 :PRINT "  *   *      ";
6490 COLOR 0,7 :PRINT " 3 ";
6500 COLOR 7,0 :PRINT "  99"
6510 PRINT ,"88   *   *   *   *   *   *   *   *   *   *   88"
6520 PRINT ,"88   *   *   *   *   *   *   *   *           88"
6530 PRINT ,"77   *   *   *   *   *   *  ";
6540 COLOR 0,7 :PRINT " 5 ";
6550 COLOR 7,0 :PRINT "              77"
6560 PRINT ,"66  -1   *   *   *   *                       66"
6570 PRINT ,"55                                           55"
6580 PRINT ,"44      ";
6590 COLOR 0,7 :PRINT " 6   1 ";
6600 COLOR 7,0 :PRINT " -1   *                       44"
6610 PRINT ,"33  -0   *   *   *   *   *  ";
6620 COLOR 0,7 :PRINT " 4 ";
6630 COLOR 7,0 :PRINT "              33"
6640 PRINT ,"22   *   *   *   *   *   *  ";
6650 COLOR 0,7 :PRINT " 5 ";
6660 COLOR 7,0 :PRINT "              22"
6670 GOSUB 730                                       'PRESS ANY KEY
6680 RETURN
6690 PRINT ,"-----------------------------------------------" 'HEADER
6700 PRINT ,"     2   3   4   5   6   7   8   9   T   A"
6710 PRINT ,"-----------------------------------------------"
6720 RETURN
6730 ' ----------------------------------------------
6740 '                                 AUTOMATIC HAND
6750 ' ----------------------------------------------
6760 WHILE PLHAND(1) < 17
6770   GOSUB 3230                                    'CARDS AS NEEDED
6780 WEND
6790 LOCATE H*6+7,30 :PRINT PLHAND(H);               'SHOW HAND TOTAL
6800 IF PLHAND(H) > 21 THEN PRINT "BUST"
6810 RETURN

Previous | Top | Home | Next