home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
UpTime Volume 1 #4
/
utv1n4s1.d64
/
blackjack
(
.txt
)
next >
Wrap
Commodore BASIC
|
2022-08-28
|
12KB
|
347 lines
5 if a=1 then 2550
10 print"[147]":poke 53281,0
110 rem ****dimensions****
120 dimdu%(52),d%(52),d1$(13),d2$(13),s$(4),sc$(2),h%(12,8),s1(12),s2(12)
130 dimb(3,6),br(6),ai(6),r(12),rl(3),cl(8),pn$(6),pc$(6),k(3),cn(12)
140 rem ***pre-initialize***
150 bo=53280:ba=53281:pt=646:lb$="[154]":lg$="[153]":wh$="":yw$="[158]":cy$="[159]"
160 sk=2:pokesk,0:ro=251:co=252:p2=679:pd=681:pr=683
170 fori=0to12:readq:pokep2+i,q:next
180 ak$=" press spacebar to continue"
190 bl$=" "
195 cs$="[147]":rv$="":of$="[146]"
200 goto2450
210 rem *******subroutines********
220 rem ***deal deck***
230 printcs$:pokebo,11:pokeba,11:pokept,10:r=11:c=7:gosub430
240 print"the deck is being shuffled"
250 n=1:fori=1to4:forj=1to13:du%(n)=100*i+j:n=n+1:nextj,i
260 n=1:fori=1to52:x=int(rnd(1)*52)+1
270 ifdu%(x)<>0then300
280 x=x+1:ifx>52thenx=1
290 goto270
300 d%(i)=du%(x):du%(x)=0
310 nexti:nc=52:printcs$:pokebo,k(1):pokeba,k(2):pokept,k(3):return
320 rem ***time loop***
330 t=150+ti
340 get a$:if a$="[140]" then 3000
345 ift>tithen340
350 return
360 rem ***get delay***
370 getz$:ifz$=""then370
375 if z$="[140]" then 3000
380 return
390 rem ***two-way get***
400 getz$:if z$="" or z$<>i$ and z$<>j$ then400
405 if z$="[140]" then 3000
410 return
420 rem ***move cursor***
430 pokero,r:pokeco,c:sys683:return
440 rem ***decode card***
450 su=int(cd/100):de=cd-100*su:return
460 rem ***develop card string***
470 gosub450:cd$=c1$+sc$(fnc(su))+d1$(de)+c2$+sc$(fnc(su))+s$(su)+c3$
480 cd$=cd$+sc$(fnc(su))+d2$(de)+c4$:return
490 rem ***update score***
500 gosub450:s1(p)=s1(p)+fnv(de):s2(p)=s2(p)+fnv(de)
510 if de=1 and (s1(p)=s2(p))then s1(p)=s1(p)+10
520 return
530 rem ***print card***
540 gosub470
550 r=rl(fnh(p)):c=cl(cn(p)):gosub430:printcd$;:return
560 rem ***erase all cards***
570 r=13:c=0:gosub430:x$=left$(bl$,39)
580 forz=1to12:printx$;:nextz:return
590 rem ***print color strip***
600 printhm$pc$(p+6*(p>6));:forz=1to6:printrv$bl$of$;:nextz
601 print"[144][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183]";
602 r=23: c=13: gosub 430:print"[144]f8 for uptime"pc$(p+6*(p>6))
605 return
610 rem ***bankroll overdrawn***
620 y=p:ify>6theny=y-6
630 gosub600:printhm$bk$" you are busted "
640 print"have some money on me!"
645 br(y)=br(y)*-2:ai(y)=ai(y)+br(y)+(br(y)/2)
660 gosub 330:return
670 rem ***print score***
680 printtab(24-len(x$));x$;:return
690 rem ***print win score***
700 x$="won"+str$(w):printtab(38-len(x$));x$:return
710 rem ***print tie score***
720 x$="broke even":printtab(38-len(x$));x$:return
730 rem ***print lost score***
740 x$="lost"+str$(w):printtab(38-len(x$));x$:return
750 rem ****main game routines****
760 gosub230
770 pokebo,11:pokeba,15:forp=1tonp
780 rem ***take bets***
790 gosub600:printhm$""bk$spc(20-((len(pn$(p))+7)/2));
795 printpn$(p)tn$
800 print""eb$": ";:lm=4:gosub4000:x=val(gf$)
810 ifx<2thengosub600:printhm$bk$"minimum bet=$2":goto800
820 ifx>500thengosub600:printhm$bk$"maximum bet=$500":goto800
830 b(1,p)=int(x):br(p)=br(p)-b(1,p):ifbr(p)<0thengosub620
840 nextp
850 rem ***print dealer's hand***
860 p=0:r=7:c=1:gosub430:printbu$tab(13)"dealer's hand"
870 cn(p)=cn(p)+1:h%(p,cn(p))=d%(nc):cd=d%(nc):nc=nc-1:cd$=bc$:gosub550
880 gosub500
890 cn(p)=cn(p)+1:h%(p,cn(p))=d%(nc):cd=d%(nc):nc=nc-1:gosub540:gosub500
900 ifde<>1then970
910 rem ***take insurance bets***
920 forp=1tonp:gosub600:printhm$""bk$spc(20-((len(pn$(p))+7)/2)) pn$(p)tn$
930 print:print"insurance bet? (y/n)":i$="y":j$="n":gosub400
940 ifz$=j$then960
950 b(2,p)=b(1,p)/2:br(p)=br(p)-b(1,p)/2:ifbr(p)<0thengosub620
960 nextp:p=0
970 ifs1(p)<>21then1100
980 rem ***dealer blackjack***
990 gosub600:printhm$""bk$spc(10)"dealer has blackjack":t=8:gosub330:r(0)=100
1000 cd=h%(0,1):cn(0)=1:gosub540
1010 forp=1tonp:gosub600:printhm$bk$ tab(20-((len(pn$(p))+7)/2)) pn$(p)tn$:cn(p)=0
1020 r=13:c=1:gosub430:printbu$ tab(20-((len(pn$(p))+7)/2))pn$(p)"'s hand"
1030 fori=1to2:cn(p)=cn(p)+1:h%(p,cn(p))=d%(nc):cd=d%(nc):nc=nc-1:gosub540
1040 gosub500:nexti
1050 r(p)=s1(p):ifs1(p)=21thenr(p)=100
1060 ifr(p)<>100thengosub600:printhm$""bk$spc(16)"you lose":goto1080
1070 printhm$""bk$spc(5)"blackjack-your bet is returned"
1080 t=8:gosub330:gosub570:nextp:goto1710
1090 rem ***deal player's hands***
1100 forp=1tonp
1110 r=13:c=1:gosub430:printbu$ tab(20-((len(pn$(p))+7)/2))pn$(p)"'s hand"
1120 gosub600:printhm$""bk$spc(20-((len(pn$(p))+7)/2)) pn$(p)tn$:cn(p)=0
1130 fori=1to2:cn(p)=cn(p)+1:h%(p,cn(p))=d%(nc):cd=d%(nc):nc=nc-1:gosub540
1140 gosub500:nexti
1150 rem ***player blackjack***
1155 if s1(p)<>21 then 1180
1160 gosub600:printhm$""bk$bj$:r(p)=100:t=8:gosub330
1165 if np>1 then 1510
1166 goto 1710
1170 rem ***check for pairs***
1180 cd=h%(p,1):gosub450:d1=de:cd=h%(p,2):gosub450:d2=de:ifd1<>d2then1300
1190 gosub600:printhm$""bk$spc(9)"split your pair? (y/n)"
1195 i$="y":j$="n":gosub400
1200 ifz$=j$then1300
1210 rem ***split the pair***
1220 b(3,p)=b(1,p):br(p)=br(p)-b(1,p):ifbr<0thengosub620
1230 pokesk,(peek(sk))or(2^p):h%(p+6,1)=h%(p,2):h%(p,2)=0:cn(p)=1:gosub570
1240 r=13:c=1:gosub430:printbu$pn$(p)"'s hand"
1250 s1(p)=0:s2(p)=0:cd=h%(p,1):gosub540:gosub500:p=p+6:cn(p)=1
1260 r=19:c=1:gosub430:printbu$pn$(p-6)"'s split hand"
1270 cd=h%(p,1):gosub540:gosub500:p=p-6
1280 h%(2,p)=d%(nc):cd=d%(nc):nc=nc-1:cn(p)=cn(p)+1:gosub540:gosub500
1290 rem ***one down for double***
1300 ifs2(p)<9ors2(p)>11then1420
1310 gosub600:printhm$""bk$spc(7)"one down for double? (y/n)"
1315 i$="y":j$="n":gosub400
1320 ifz$=j$then1420
1330 y=p:v=1:ify>6theny=y-6:v=3
1340 br(y)=br(y)-b(v,y):ifbr(y)<0thengosub620
1350 b(v,y)=2*b(v,y)
1360 cn(p)=cn(p)+1:h%(p,cn(p))=d%(nc):cd=d%(nc):nc=nc-1:gosub540:gosub500
1370 ifs1(p)<22thenr(p)=s1(p):goto1390
1380 r(p)=s2(p):ifr(p)>21thenprint:printbs$:t=8:gosub330:goto1400
1390 gosub600:printhm$""bk$ys$;r(p):t=8:gosub330
1400 goto1510
1410 rem ***play regular hand***
1420 gosub600:printhm$bk$ht$:i$="y":j$="n":gosub400:ifz$=j$then1460
1430 cn(p)=cn(p)+1:h%(p,cn(p))=d%(nc):cd=d%(nc):nc=nc-1:gosub540:gosub500
1440 ifs2(p)>21then1470
1450 goto1420
1460 ifs1(p)<22thenr(p)=s1(p):goto1480
1470 r(p)=s2(p)
1480 ifr(p)<22then1490
1481 gosub600:printhm$""bk$bs$:t=8:gosub330:ifnp>1 then 1510
1485 if np=1 then 1710
1490 gosub600:printhm$""bk$ys$;r(p):t=8:gosub330
1500 rem ***check & adjust for split hand***
1510 ifp>6thenp=p-6:goto1560
1520 if(peek(sk)and(2^p))<>2^pthen1560
1530 p=p+6:cn(p)=cn(p)+1:h%(p,cn(p))=d%(nc):cd=d%(nc):nc=nc-1:gosub540:gosub500
1540 ifs1(p)=21then1160
1550 goto1300
1560 gosub570:nextp
1570 rem ***finish dealer hand***
1580 p=0:cn(p)=1:cd=h%(p,1):gosub540:t=6:gosub330
1590 if r(p+6)<>100 or r(0)=100 then 1600
1595 rem w=1.5*b(3,p):br(p)=br(p)+2.5*b(3,p):gosub700:goto 1990
1600 cn(p)=2
1610 ifs1(p)>16then1640
1620 cn(p)=cn(p)+1:h%(p,cn(p))=d%(nc):cd=d%(nc):nc=nc-1:gosub540:gosub500
1630 t=6:gosub330:goto1610
1640 ifs1(p)>16ands1(p)<22thenr(p)=s1(p):goto1690
1650 ifs2(p)<17then1620
1660 ifs2(p)>16ands2(p)<22thenr(p)=s2(p):goto1690
1670 gosub600:printhm$bk$"dealer busts-all remaining players win"
1675 t=8:gosub330
1680 r(p)=s2(p):goto1710
1690 gosub600:printhm$bk$spc(10)"dealer's score is";r(p):t=8:gosub330
1700 rem ***print summary***
1710 printcs$;:pokebo,k(1):pokeba,k(2):pokept,k(3):zy=0
1720 printtab(16)"summary":printtab(16)"[163][163][163][163][163][163][163]"
1730 print"dealer's score=";:ifr(0)=100thenprint" blackjack":goto1750
1740 printr(0);:ifr(0)>21thenprint"bust"
1750 print:print"name-bet"tab(20)"score"tab(31)"result"
1760 print"[163][163][163][163][163][163][163][163]"tab(20)"[163][163][163][163][163]"tab(31)"[163][163][163][163][163][163]":ifzy=1thenzy=0:goto2040
1770 forp=1tonp:printpn$(p)"'s
1780 [153][163]4)"regular bet";
1790 [139]r(p)[178]100[167]x$[178]"bj":[141]680:[137]1810
1800 x$[178][196](r(p)):[141]680
1810 [139]r(p)[178]100[175]r(0)[179][177]100[167]w[178]1.5[172]b(1,p):br(p)[178]br(p)[170]2.5[172]b(1,p):[141]700:[1