Listing of file='BLAKJACK' on disk='vmedia/more_games.wvd.zip'
# Sector 158, program filename = 'BLAKJACK'
0005 PRINT HEX(0306)
: SELECT P
0010 DIM C(52),S(52),D$(13)5,S$(4)8,C$17,D$17,M$(3)30,M1$(3)32,K$1,P(5),D(5)
0020 D$()="Two ThreeFour Five Six SevenEightNine Ten Jack QueenKing Ace"
0030 S$()="Hearts DiamondsClubs Spades"
0100 REM *********************************************************************
0105 REM * VARIABLE USAGE TABLE - *
0110 REM * *
0115 REM * C() = LIST OF NO.'S 1-52 IN RANDOM ORDER (PACK OF CARDS) *
0120 REM * S() = FLAG ARRAY USED FOR SHUFFLING *
0125 REM * M$() = MESSAGE ARRAY R = RESPONSE TO INPUT *
0130 REM * R$ = KEYIN BUFFER M1$() = ALTERNATE MESSAGE *
0135 REM * R1 = RANDOM NUMBER K,L = FOR-NEXT LOOPS *
0140 REM * T = TOTAL OF PLAYER'S MONEY B = BET ON THIS HAND *
0145 REM * S = PLAYER'S STARTING BANKROLL (USED FOR CALCULATING LOSSES) *
0150 REM * D() = LIST OF DEALER'S CARDS P() = LIST OF PLAYER'S CARDS *
0155 REM * D = DEALER'S TOTAL P = PLAYER'S TOTAL *
0160 REM * D1 = NUMBER OF DEALER'S CARDS P1 = NUMBER OF PLAYER'S CARDS *
0165 REM * C = POINTER INTO C() THAT DENOTES WHICH CARD IS NEXT *
0170 REM * D$() = DESCRIPTIONS OF CARDS S$() = DESCRIPTIONS OF SUITS *
0175 REM * C$ = COMPOSITE STRING OF A CARD C9 = VALUE OF THAT CARD *
0180 REM * D$ = DEALER'S FACE DOWN CARD D9 = VALUE OF THAT CARD *
0185 REM *********************************************************************
0999 GOTO 5000
1000 DEFFN'100
: REM - SHUFFLE -
1010 GOSUB '108
: PRINT AT(13,35);HEX(020404000E);"Shuffling";HEX(020402000F)
1015 K1=D1+P1+1
1020 FOR K=K1TO 52
1030 R1=INT(RND(1)*52)
1035 PRINT AT(14,38);R1
1040 IF S(R1+1)=0THEN 1030
: S(R1+1)=0
: C(K)=R1
1050 NEXT K
: C=K1
: GOSUB '108
: RETURN
1100 DEFFN'101
: REM - GET NEXT CARD AND RETURN IN C$ & C9 -
1105 FOR K=1TO 2000
: NEXT K
: IF C>52THEN GOSUB '100
1110 C9=C(C)
: S(C9+1)=0
: C$=STR(D$(MOD(C9,13)+1),,5)&" of "&S$(INT(C9/13)+1)
1120 C=C+1
1130 C9=MOD(C9,13)+2
: IF C9=14THEN C9=11
: ELSE IF C9>=10THEN C9=10
: RETURN
1200 DEFFN'102
: REM - ERASE PLAYING AREA -
1210 FOR K=1TO 7
: PRINT AT(3+K,22,50)
: NEXT K
1220 D,P,D1,P1=0
: MAT D=ZER
: MAT P=ZER
: GOSUB '103
: MAT S=CON
: RETURN
1300 DEFFN'103
: REM - PRINT TOTALS OF BOTH HANDS -
1310 PRINT AT(11,23);
: PRINTUSING 1320,D,P
: RETURN
1320 %Total - ## Total - ##
1400 DEFFN'104
: REM - DEAL CARD TO PLAYER -
1410 GOSUB '101
: P1=P1+1
: P=P+C9
: P(P1)=C9
: PRINT AT(4+P1,42);C$
: IF P<22THEN 1440
1420 FOR K=1TO 5
: IF P(K)=11THEN 1430
: NEXT K
: GOTO 1440
1430 P(K)=1
: P=P-10
: K=5
: NEXT K
1440 GOSUB '103
: RETURN
1500 DEFFN'105
: REM - DEAL CARD TO DEALER -
1510 GOSUB '101
: D1=D1+1
: D=D+C9
: D(D1)=C9
: IF D1=1THEN GOSUB 1550
: PRINT AT(4+D1,22);C$
: IF D<22THEN 1540
1520 FOR K=1TO 5
: IF D(K)=11THEN 1530
: NEXT K
: GOTO 1540
1530 D(K)=1
: D=D-10
: K=5
: NEXT K
1540 GOSUB '103
: RETURN
1550 D=D-C9
: D9=C9
: D$=C$
: C$="#################"
: RETURN
1600 DEFFN'106(M$())
: REM - DISPLAY MESSAGE -
1610 FOR K=1TO 3
: PRINT AT(12+K,26,30);M$(K)
: NEXT K
: RETURN
1700 DEFFN'107
: REM - INPUT -
1710 R=0
: PRINT AT(15,26,30);
: INPUT R
: ERRORGOTO 1710
1720 R=INT(R)
: PRINT HEX(06)
: RETURN
1800 DEFFN'108
: REM - ERASE MESSAGE AREA -
1810 FOR K=1TO 3
: PRINT AT(12+K,26,30)
: NEXT K
: RETURN
1900 DEFFN'109
: REM - TURN OVER DEALER'S DOWN CARD -
1910 D=D+D9
: PRINT AT(5,22,17);D$
: IF D<22THEN 1940
1920 FOR K=1TO 5
: IF D(K)=11THEN 1930
: NEXT K
: GOTO 1940
1930 D(K)=1
: D=D-10
: K=5
: NEXT K
1940 GOSUB '103
: RETURN
2000 DEFFN'200
: REM - PRINT PLAYER'S BANKROLL -
2010 PRINT AT(18,29);
: PRINTUSING "Your bankroll = $#####",T
: RETURN
2100 DEFFN'201
: REM - KEYIN STATEMENT -
2110 KEYIN K$
: IF K$=HEX(0D)THEN RETURN
2120 PRINT HEX(07)
: GOTO 2110
2200 DEFFN'202
: REM - PRINT BET ON THIS HAND -
2210 PRINT AT(19,29);
: PRINTUSING "Bet this hand = $#####",B
: RETURN
5000 PRINT TAB(35);HEX(0E);"Black Jack"
: PRINT AT(3,21);BOX(9,18);" Dealer's hand";AT(3,41);BOX(9,18);" Player
's hand";AT(13,25);BOX(3,30);AT(18,28);BOX(2,23);BOX(1,23)
5010 GOSUB '106("How much money do you have to part with?")
5020 GOSUB '107
: GOSUB '108
: IF R<=0THEN 9100
: IF R>99999THEN 5010
: GOSUB '108
: S,T=R
5050 REM - GET BET -
5060 GOSUB '102
: PRINT AT(19,29,30)
: IF T<1THEN 5900
: IF T>99999THEN 6000
: GOSUB '106("How much is your bet (0 = Shuffle -1 = Quit)")
: GOSUB '200
5070 GOSUB '107
: GOSUB '108
: B=R
: IF B<=TTHEN 5080
: GOSUB '106("You don't have that much! What do you wish to bet?")
: PRINT HEX(07)
: GOTO 5070
5080 IF B<0THEN 5800
: IF B=0OR C=0THEN GOSUB '100
: IF B=0THEN 5060
5090 GOSUB '202
5100 REM - DEAL OUT THE FIRST FOUR CARDS -
5110 GOSUB '104
: GOSUB '105
: GOSUB '104
: GOSUB '105
: IF D+D9=21THEN 5700
5111 GOTO 5130
: REM === MAY BE IMPLEMENTED AT A LATER DATE ===
5115 REM - IF UNDER 11, GIVE MORE CARDS TO PLAYER -
5120 IF P>9THEN 5130
: GOSUB '104
: GOTO 5120
5130 IF P>21THEN 5500
: IF P<=21AND P1=5THEN 5600
: IF P=21THEN 5180
5140 GOSUB '106("Options: 0=Stand 1=Hit 2=Double down")
: GOSUB '107
: GOSUB '108
: ON R+1GOTO 5200,5150,5160
: GOTO 5140
5150 GOSUB '104
: GOTO 5130
5160 IF P1=2THEN 5170
: GOSUB '106("Sorry, you can't double down with more than 2 cards. P
ress (-RETURN-)")
: GOSUB '201
: GOTO 5130
5170 IF B*2>TTHEN 5175
: GOSUB '104
: B=B*2
: GOSUB '202
: IF P>21THEN 5500
: GOTO 5200
5175 GOSUB '106("Sorry, you don't have enough money to double down. P
ress (-RETURN-)")
: GOSUB '201
: GOTO 5130
5180 IF P1>2THEN 5140
: GOSUB '109
: IF D=PTHEN 5310
: M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Player wins $##### with a Black Jack!
Press (-RETURN-)",B*2
: GOSUB '106(STR(M1$(),3))
: T=T+B*2
: GOSUB '200
: FOR K=1TO 6
: PRINT HEX(07);
: FOR L=1TO 500
: NEXT L,K
: GOSUB '201
: GOTO 5060
5200 REM - PLAY DEALER'S HAND -
5210 GOSUB '109
5220 IF D>21THEN 5400
: IF D1=5AND D<22THEN 6100
: IF D>16THEN 5300
: GOSUB '105
: GOTO 5220
5300 REM - END OF HAND, FIGURE OUT WHO WON -
5310 IF D>PTHEN 5320
: IF D<PTHEN 5330
: GOSUB '106("Hand is even, no winner. Press (-RETURN-)")
: GOSUB '201
: GOTO 5060
5320 M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Dealer wins with ##. Press (-RETURN-)",D
: GOSUB '106(STR(M1$(),3))
: T=T-B
: GOSUB '200
: GOSUB '201
: GOTO 5060
5330 M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Player wins with ##. Press (-RETURN-)",P
: GOSUB '106(STR(M1$(),3))
: T=T+B
: GOSUB '200
: GOSUB '201
: GOTO 5060
5400 REM - DEALER BUSTS -
5410 M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Dealer busts with ##. Press (-RETURN-)",D
: GOSUB '106(STR(M1$(),3))
: T=T+B
: GOSUB '200
: GOSUB '201
: GOTO 5060
5500 REM - PLAYER BUSTS -
5510 GOSUB '109
: M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Player busts with ##. Press (-RETURN-)",P
: GOSUB '106(STR(M1$(),3))
: T=T-B
: GOSUB '200
: GOSUB '201
: GOTO 5060
5600 REM - PLAYER GETS "FIVE CARD CHARLIE" -
5610 M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Player wins $##### with a Five Card Charl
ie! Press (-RETURN-)",B*2
: GOSUB '106(STR(M1$(),3))
: T=T+B*2
: GOSUB '109
: GOSUB '200
: FOR K=1TO 6
: PRINT HEX(07);
: FOR L=1TO 500
: NEXT L,K
: GOSUB '201
: GOTO 5060
5700 REM - DEALER GETS BLACKJACK -
5710 IF P=21AND P1=2THEN 5720
: M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Dealer wins with a Black Jack!
Press (-RETURN-)"
: GOSUB '106(STR(M1$(),3))
: T=T-B
: GOSUB '109
: GOSUB '200
: FOR K=1TO 6
: PRINT HEX(07);
: FOR L=1TO 500
: NEXT L,K
: GOSUB '201
: GOTO 5060
5720 GOSUB '109
: GOTO 5300
5800 REM - PLAYER QUIT, CALCULATE WINNINGS/LOSSES -
5810 IF T<STHEN 5820
: IF T>STHEN 5830
: GOTO 5840
5820 M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Sorry, you lost $#####, better luck next time.
Press (-RETURN-)",S-T
: GOSUB '106(STR(M1$(),3))
: GOSUB '201
: GOTO 9100
5830 M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Congratulations, you won $#####!!
Press (-RETURN-)",T-S
: GOSUB '106(STR(M1$(),3))
: GOSUB '201
: GOTO 9100
5840 M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Congratulations, you broke even!
Press (-RETURN-)"
: GOSUB '106(STR(M1$(),3))
: GOSUB '201
: GOTO 9100
5900 REM - PLAYER LOST ALL HIS MONEY -
5910 M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Sorry, you lost all your money, better luck nex
t time. Press (-RETURN-)"
: GOSUB '106(STR(M1$(),3))
: GOSUB '201
: GOTO 9100
6000 REM - PLAYER BROKE THE BANK -
6010 M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Congratulations, you've broken the bank
!!! Press (-RETURN-)"
: GOSUB '106(STR(M1$(),3))
: GOSUB '201
: GOTO 9100
6100 REM - DEALER GETS "FIVE CARD CHARLIE" -
6110 M1$()=HEX(0000)
: PRINTUSING TO M1$(),"Dealer wins with a Five Card Charl
ie! Press (-RETURN-)"
: GOSUB '106(STR(M1$(),3))
: T=T-B
: GOSUB '200
: FOR K=1TO 6
: PRINT HEX(07);
: FOR L=1TO 500
: NEXT L,K
: GOSUB '201
: GOTO 5060
9000 END
9100 GOTO 5
9999 DEFFN'31
: A$="BLAKJACK"
: SCRATCH TA$
: SAVE T()A$
: STOP "- PROGRAM UPDATED"