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"