image of READY prompt

Wang2200.org

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"