Time now to play against your BBC Micro in this implementation of Pontoon. The computer is the banker, and your opponent. Be warned, it plays a very good game.
Once the cards are shuffled, the Beeb deals both players (itself and you) two cards, turning your two over to begin with. Based on what you think are your chances of success from the first two cards, you are asked to place a bet. You can then 'stick' (stand with the cards you have) or 'twist' (request extra cards, one by one).
The aim of the game is to get cards which add up to 21, or as close as possible to 21, without exceeding it (which is known as 'busting'). Note that an Ace can count as eleven or as one when totalling your points. All picture cards (Jack, Queen and King) are worth ten points.
10 REM PONTOON 20 30 MODE 1 40 PROC_SETUP 50 REPEAT 60 PROC_INTRO 70 REPEAT 80 PROC_PLAY_GAME 90 PROC_SHOW_OUTCOME 100 UNTIL MONEY<1 OR QUIT 110 UNTIL NOT FN_ANOTHER 120 MODE 7 130 END 140 DEF PROC_SHUFFLE 150 COLOUR 0 160 PRINT TAB(15,13);"SHUFFLING" 170 PACK$="H9C5CJD3DKS7HAS2D7C6C[fs4]S QH8D4S[fs4]SAH6DQCKHJC3S5C8D9H3S9DAHKH7S 4D[fs4]H5SKS6D2H[fs4]C2S8D6C9HQH2CAS3D5S JC4DJC7H4D8CQ" 180 FOR posn=1 TO 52 190 card=RND(53-posn) 200 DECK$(posn)=MID$(PACK$,(2*card)- 1,2) 210 PACK$=LEFT$(PACK$,2*(card-1))+MI D$(PACK$,(2*card)+1) 220 NEXT 230 NUM=52 240 PRINT TAB(15,13);SPC(9) 250 ENDPROC 260 DEF PROC_PLAY_GAME 270 PROC_INIT_GAME 280 PROC_PLACE_1st_HANDS 290 IF HANDH=21 THEN 400 300 IF QUIT THEN ENDPROC 310 IF OPTION$="S" OR HANDH>=21 THEN 3 60 320 REPEAT 330 IF NUM=0 THEN PROC_SHUFFLE 340 PROC_HUMAN_MOVE 350 UNTIL HANDH=21 OR OPTION$="S" OR HANDH>21 OR OPTION$="Q" OR HCARDS=5 360 IF HANDL=21 OR HANDH=21 THEN PROC_ PL("H","21's") 370 IF HANDL>21 THEN PROC_PL("H","BUST !") 380 IF OPTION$="S" THEN PROC_PL("H","S TICK") 390 IF HCARDS=5 AND HANDL<22 THEN PRIN T TAB(34,7);"A FIVE";TAB(34,8);" CARD "; TAB(34,9);"TRICK!" 400 PROC_DRCD(200,396,FNSUIT(NUM+HCARD S+1),FNVALUE(NUM+HCARDS+1)) 410 PROC_WAIT 420 PROC_DRCD(400,396,FNSUIT(NUM+HCARD S-1),FNVALUE(NUM+HCARDS-1)) 430 PRINT TAB(2,15);"MY HAND - ";CHAN DH;" " 440 IF CHANDH>=HANDH OR HANDH>21 OR (H ANDH=21 AND HCARDS=2 AND CHANDH<21) THEN 540 450 REPEAT 460 IF NUM=0 THEN PROC_SHUFFLE 470 PROC_WAIT 480 PROC_TWIST("C") 490 UNTIL CHANDH>=HANDH OR CCARDS=5 500 IF CHANDH>21 THEN PROC_PL("C","BUS T!") 510 IF CHANDH=21 AND CCARDS<>5 THEN PR OC_PL("C","21's") 520 IF CHANDH<21 AND CCARDS<>5 THEN PR OC_PL("C","STICK") 530 IF CHANDH<22 AND CCARDS=5 THEN PRI NT TAB(34,18);"A FIVE";TAB(34,19);" CARD ";TAB(34,20);"TRICK!" 540 IF CHANDH=21 AND CCARDS=2 THEN PRO C_PL("C","A PONTOON!") 550 ENDPROC 560 DEF PROC_INIT_GAME 570 CASH=MONEY 580 VDU 26,12,17,0 590 PRINT TAB(0,4);"YOUR HAND - 0" 600 PRINT TAB(2,15);"MY HAND - 0" 610 PRINT TAB(20,4);"You Have `";CASH 620 ENDPROC 630 DEF PROC_PLACE_1st_HANDS 640 IF NUM<11 THEN PROC_SHUFFLE 650 PROC_DRCD(200,750,0,0) 660 PROC_DRCD(200,396,0,0) 670 PROC_DRCD(400,750,0,0) 680 PROC_DRCD(400,396,0,0) 690 NUM=NUM-4:HCARDS=2:CCARDS=2 700 PROC_DRCD(200,750,FNSUIT(NUM+4),FN VALUE(NUM+4)) 710 HANDH=FNCARD(NUM+4,11) 720 HANDL=FNCARD(NUM+4,1) 730 CHANDH=FNCARD(NUM+3,11)+FNCARD(NUM +1,11) 740 CHANDL=FNCARD(NUM+3,1)+FNCARD(NUM+ 1,1) 750 PRINT TAB(0,4);"YOUR HAND - ";HAN DH 760 BUY_OK=TRUE 770 PROC_BET 780 IF QUIT THEN ENDPROC 790 PROC_DRCD(400,750,FNSUIT(NUM+2),FN VALUE(NUM+2)) 800 HANDH=HANDH+FNCARD(NUM+2,11) 810 HANDL=HANDL+FNCARD(NUM+2,1) 820 PRINT TAB(0,4);"YOUR HAND - ";HAN DH 830 IF HANDH=21 THEN PRINT TAB(15,7);" A PONTOON!":OPTION$="":ENDPROC 840 OPTION$=FN_COMMAND(BUY_OK) 850 IF OPTION$="Q" THEN QUIT=TRUE:ENDP ROC 860 BUY_OK=FALSE 870 IF OPTION$="B" THEN PROC_BET:PROC_ TWIST("H"):BUY_OK=TRUE 880 IF OPTION$="T" THEN PROC_TWIST("H" ) 890 ENDPROC 900 DEF PROC_HUMAN_MOVE 910 OPTION$=FN_COMMAND(BUY_OK) 920 IF OPTION$="B" THEN PROC_BET:PROC_ TWIST("H") 930 IF OPTION$="T" THEN PROC_TWIST("P" ):BUY_OK=FALSE 940 ENDPROC 950 DEF PROC_SHOW_OUTCOME 960 WIN$="I" 970 IF HANDH>CHANDH AND HANDH<22 THEN WIN$="YOU" 980 IF HCARDS=5 AND HANDH<22 THEN WIN$ ="YOU" 990 IF CHANDH>21 AND HANDH<22 THEN WIN $="YOU" 1000 IF CCARDS=5 AND CHANDH<22 THEN WIN $="I" 1010 BET=MONEY-CASH 1020 IF WIN$="YOU" THEN MONEY=MONEY+BET ELSE MONEY=CASH 1030 PRINT TAB(0,25);WIN$;" WIN!" 1040 PRINT'"You have `";MONEY 1050 IF MONEY<=0 THEN QUIT=TRUE 1060 IF QUIT THEN ENDPROC 1070 PRINT'"Another game (Y/N) ?"; 1080 REPEAT KEY$=GET$ 1090 UNTIL KEY$="Y" OR KEY$="N" 1100 IF KEY$="N" THEN QUIT=TRUE 1110 ENDPROC 1120 DEF PROC_SETUP 1130 VDU 23,128,&18,&3C,&7E,&FF,&FF,&7E ,&3C,&18 1140 VDU 23,129,&66,&FF,&FF,&FF,&FF,&7E ,&3C,&18 1150 VDU 23,130,&18,&3C,&18,&7E,&FF,&7E ,&18,&3C 1160 VDU 23,131,&18,&3C,&7E,&FF,&FF,&5A ,&18,&3C 1170 VDU 23,132,&4C,&52,&52,&52,&52,&52 ,&4C,&00 1180 VDU 23,133,&AA,&55,&AA,&55,&AA,&55 ,&AA,&55 1190 VDU 23,0,10,32,0;0;0; 1200 DIM DECK$(52) 1210 ENDPROC 1220 DEF PROC_INTRO 1230 VDU 26,20,12 1240 VDU 19,2,2,0,0,0 1250 COLOUR 130 1260 CLS 1270 QUIT=FALSE 1280 MONEY=100 1290 PROC_SHUFFLE 1300 ENDPROC 1310 DEF PROC_DRCD(X%,Y%,S%,C%) 1320 GCOL 0,131 1330 GCOL 0,0 1340 VDU 5 1350 VDU 24,X%-64;Y%-96;X%+64;Y%+96;16 1360 MOVE X%-64,Y%-96:PLOT 1,0,192:PLOT 1,128,0:PLOT 1,0,-192:PLOT 1,-128,0 1370 IF S%=0 THEN 1460 1380 IF S%<3 GCOL 0,1 ELSE GCOL 0,0 1390 MOVE X%-48,Y%+16:PRINT CHR$(127+S% ) 1400 MOVE X%+16,Y%+16:PRINT CHR$(127+S% ) 1410 MOVE X%-48,Y%-48:PRINT CHR$(127+S% ) 1420 MOVE X%+16,Y%-48:PRINT CHR$(127+S% ) 1430 MOVE X%+16,Y%+80:PRINT FNNUM(C%) 1440 VDU 4,26 1450 ENDPROC 1460 GCOL 0,1:MOVE X%-48,Y%+80 1470 FOR R%=1 TO 5 1480 VDU 133,133,133,10,8,8,8 1490 NEXT 1500 VDU 4,26 1510 ENDPROC 1520 DEF FNNUM(NUM) 1530 IF NUM=1 THEN ="A" 1540 IF NUM<10 THEN =CHR$(48+NUM) 1550 IF NUM=10 THEN ="[fs4]" 1560 IF NUM=11 THEN ="J" 1570 IF NUM=12 THEN ="Q" 1580 ="K" 1590 DEF FNVALUE(card) 1600 LOCAL NUM$ 1610 NUM$=RIGHT$(DECK$(card),1) 1620 IF NUM$="A" THEN =1 1630 IF NUM$>"1" AND NUM$<="9" THEN =VA L(NUM$) 1640 IF NUM$="[fs4]" THEN =10 1650 IF NUM$="J" THEN =11 1660 IF NUM$="Q" THEN =12 ELSE =13 1670 DEF FNCARD(card,ace) 1680 card$=RIGHT$(DECK$(card),1) 1690 IF card$="A" THEN =ace 1700 IF card$>"1" AND card$<="9" THEN = VAL(card$) ELSE =10 1710 DEF FNSUIT(card) 1720 SUIT$=LEFT$(DECK$(card),1) 1730 IF SUIT$="D" THEN =1 1740 IF SUIT$="H" THEN =2 1750 IF SUIT$="C" THEN =3 ELSE =4 1760 DEF PROC_BET 1770 PRINT TAB(5,25);"Place your bet `1-` ";CASH 1780 *FX 15 1 1790 INPUT TAB(15,27);"BET=`"bet$ 1800 bet%=VAL(bet$) 1810 PRINT TAB(5,25);STRING$(34," ");TA B(15,27);STRING$(24," "); 1820 IF LEFT$(bet$,1)="Q" OR LEFT$(bet$ ,1)="q" THEN QUIT=TRUE:ENDPROC 1830 IF bet%=0 THEN VDU 7:GOTO 1770 1840 IF bet%<1 THEN VDU 7:GOTO 1770 1850 IF bet%>CASH THEN VDU 7:GOTO 1770 1860 CASH=CASH-bet% 1870 PRINT TAB(20,4);"You Have £";CASH; "[spc4]" 1880 IF CASH<1 THEN BUY_OK=FALSE 1890 ENDPROC 1900 DEF FN_COMMAND(BUY) 1910 LOCAL L%,O$,KEY$ 1920 VDU 4,28,34,11,38,6,12 1930 O$="T/S" 1940 PRINT "TwistStick"; 1950 IF BUY THEN PRINT" or Buy":O$=O$+ "/B" 1960 PRINT O$; 1970 *FX 15 1 1980 KEY$=GET$ 1990 IF KEY$="T" OR KEY$="S" OR KEY$="O " OR (KEY$="B" AND BUY) THEN VDU 12,26:= KEY$ ELSE 1980 2000 DEF PROC_TWIST(P$) 2010 NUM=NUM-1 2020 IF NUM=0 THEN PRINT TAB(13,13);"RE ";:PROC_SHUFFLE:PRINTTAB(13,13);" "; 2030 IF P$="C" THEN 2100 2040 HCARDS=HCARDS+1 2050 PROC_DRCD(200*HCARDS,750,FNSUIT(NU M),FNVALUE(NUM)) 2060 HANDH=HANDH+FNCARD(NUM,11):HANDL=H ANDL+FNCARD(NUM,1) 2070 IF HANDH>21 AND HANDL<22 THEN HAND H=HANDL 2080 PRINT TAB(0,4);"YOUR HAND - ";HAN DH 2090 ENDPROC 2100 CCARDS=CCARDS+1 2110 PROC_DRCD(200*CCARDS,396,FNSUIT(NU M),FNVALUE(NUM)) 2120 CHANDH=CHANDH+FNCARD(NUM,11):CHAND L=CHANDL+FNCARD(NUM,1) 2130 IF CHANDH>21 AND CHANDL<22 THEN CH ANDH=CHANDL 2140 PRINT TAB(2,15);"MY HAND - ";CHAN DH 2150 ENDPROC 2160 DEF PROC_WAIT 2170 TIME=0:REPEAT UNTIL TIME>=100 2180 ENDPROC 2190 DEF FN_ANOTHER 2200 IF MONEY<=0 THEN PRINT"You do not have enough money to play." 2210 PRINT'"Would you like to PAY again (Y/N) ?"; 2220 REPEAT KEY$=GET$ 2230 UNTIL KEY$="Y" OR KEY$="N" 2240 IF KEY$="Y" THEN =TRUE ELSE =FALSE 2250 DEF PROC_PL(CH$,S$) 2260 COLOUR 1 2270 IF CH$="H" THEN PX%=5+6*HCARDS:PY% =8 ELSE PX%=5+6*CCARDS:PY%=19 2280 PRINT TAB(PX%,PY%);S$; 2290 COLOUR 0 2300 ENDPROC
Play Your Cards Right
You and the clever computer have a row of cards in this game, where the aim is to reach the end of the row by guessing if the next card to be turned over will be higher or lower than the previous one.
Your turn lasts as long as you guess correctly. If you make a mistake and guess wrongly, you lose all the cards which come after your 'freeze marker'. You can end your turn early and move your marker to the current card by pressing 'F' for freeze.
You start the play by using your option of changing the current card (using 'Y' for yes or 'N' for no) if you think the card is not a good one to proceed with.
You'll find the BBC Micro plays very well in this highly effective program, based on one written by Paul Toland, although it tends to err a little on the safe side. The cards are drawn randomly from a proper pack. You'll be most impressed with the appearance of the cards.
10 REM P.Y.C.R 20 30 MODE 1 40 PROC_SETUP 50 REPEAT 60 PROC_INTRO 70 FOR GAME=1 TO 3 80 PROC_DISPLAY 90 PROC_PLAY 100 NEXT 110 UNTIL NOT FN_ANOTHER 120 END 130 140 DEF PROC_SHUFFLE 150 COLOUR 0 160 PRINT TAB(15,13);"SHUFFLING" 170 PACK$="H9C5CJD3DKS7HAS2D7C6C[fs4]S QH8D4S[fs4]SAH6DQCKHJC3S5C8D9H3S9DAHKH7S 4D[fs4]H5SKS6D2H[fs4]C2S8D6C9HQH2CAS3D5S JC4DJC7H4D8CQ" 180 FOR posn=1 TO 52 190 card=RND(53-posn) 200 DECK$(posn)=MID$(PACK$,(2*card)-1, 2) 210 PACK$=LEFT$(PACK$,2*(card-1))+MID$ (PACK$,(2*card)+1) 220 NEXT 230 BASE%=1 240 PRINT TAB(16,3);SPC(9) 250 ENDPROC 260 270 DEF PROC_SETUP 280 VDU 23,128,&18,&3C,&7E,&FF,&FF,&7E ,&3C,&18 290 VDU 23,129,&66,&FF,&FF,&FF,&FF,&7E ,&3C,&18 300 VDU 23,130,&18,&3C,&18,&7E,&FF,&7E ,&18,&3C 310 VDU 23,131,&18,&3C,&7E,&FF,&FF,&5A ,&18,&3C 320 VDU 23,132,&4C,&52,&52,&52,&52,&52 ,&4C,&00 330 VDU 23,133,&AA,&55,&AA,&55,&AA,&55 ,&AA,&55 340 VDU 23,134,0,0,0,0,0,-1,-1,-1 350 VDU 23,135,8,28,62,28,28,252,252,2 52 360 VDU 23,0,10,32,0;0;0; 370 DIM DECK$(52),Card$(5,1) 380 ENDPROC 390 400 DEF PROC_INTRO 410 VDU 26,20,12 420 VDU 19,2,2,0,0,0 430 COLOUR 130 440 CLS 450 PROC_SHUFFLE 460 PWIN=0:CWIN=0 470 ENDPROC 480 490 DEF PROC_DRCD(card%,play%,S%,C%) 500 LOCAL X%,Y% 510 X%=176+193*card%:Y%=770-354*play% 520 GCOL 0,131 530 GCOL 0,0 540 SOUND &12,-2-2*card%,53+4*card%,2 550 VDU 5 560 VDU 24,X%-64;Y%-96;X%+64;Y%+96;16 570 MOVE X%-64,Y%-96:PLOT 1,0,192:PLOT 1,128,0:PLOT 1,0,-192:PLOT 1,-128,0 580 IF S%=0 THEN 670 590 IF S%<3 GCOL 0,1 ELSE GCOL 0,0 600 MOVE X%-48,Y%+16:VDU 127+S% 610 MOVE X%+16,Y%+16:VDU 127+S% 620 MOVE X%-48,Y%-48:VDU 127+S% 630 MOVE X%+16,Y%-48:VDU 127+S% 640 MOVE X%+16,Y%+80:PRINT FNNUM(C%) 650 VDU 4,26 660 ENDPROC 670 GCOL 0,1:MOVE X%-48,Y%+80 680 FOR R%=1 TO 5 690 VDU 133,133,133,10,8,8,8 700 NEXT 710 VDU 4,26 720 ENDPROC 730 740 DEF FNNUM(NUM) 750 IF NUM=14 THEN ="A" 760 IF NUM<10 THEN =CHR$(48+NUM) 770 IF NUM=10 THEN ="[fs4]" 780 IF NUM=11 THEN ="J" 790 IF NUM=12 THEN ="Q" 800 ="K" 810 820 DEF FNVALUE(card,play) 830 LOCAL NUM$ 840 NUM$=RIGHT$(Card$(card,play),1) 850 IF NUM$="A" THEN =14 860 IF NUM$>"1" AND NUM$<="9" THEN =VA L(NUM$) 870 IF NUM$="[fs4]" THEN =10 880 IF NUM$="J" THEN =11 890 IF NUM$="Q" THEN =12 ELSE =13 900 910 DEF FNSUIT(card,play) 920 SUIT$=LEFT$(Card$(card,play),1) 930 IF SUIT$="D" THEN =1 940 IF SUIT$="H" THEN =2 950 IF SUIT$="C" THEN =3 ELSE =4 960 970 DEF PROC_SIG_TUNE 980 RESTORE 1080 990 LOCAL D%,I%,N% 1000 FOR I%=1 TO 9 1010 READ N%,D% 1020 SOUND 1,-10,53+4*N%,D% 1030 NEXT 1040 SOUND 1,0,0,0 1050 REPEAT UNTIL ADVAL(-6)=15 1060 ENDPROC 1070 1080 DATA 0,5,12,2,7,7,5,5,7,1,9,4,7,2, 5,5,0,8 1090 1100 DEF PROC_DISPLAY 1110 LOCAL C%,P% 1120 IF BASE%>39 THEN PROC_SHUFFLE 1130 COLOUR 1 1140 PRINT TAB(10,13);"PLAY YOUR CARDS RIGHT" 1150 COLOUR 0 1160 PRINT TAB(15,14);"GAME NO. ";GAME 1170 FOR P%=0 TO 1 1180 FOR C%=0 TO 5 1190 Card$(C%,P%)=DECK$(BASE%+(P%*6)+C% ) 1200 IF C%>0 THEN PROC_DRCD(C%,P%,0,0) ELSE PROC_DRCD(C%,P%,FNSUIT(C%,P%),FNVAL UE(C%,P%)) 1210 NEXT 1220 NEXT 1230 BASE%=BASE%+12 1240 COLOUR 0 1250 PRINT TAB(3,11);"[fs6][fs6][fs6][f s6][fs6][fs7]";SPC(39-POS); 1260 PRINT TAB(3,22);"[fs6][fs6][fs6][f s6][fs6][fs7]";SPC(39-POS); 1270 PRINT TAB(0,5);"YOU" 1280 PRINT TAB(0,7);PWIN 1290 PRINT TAB(0,16);"ME " 1300 PRINT TAB(0,18);CWIN 1310 ENDPROC 1320 1330 DEF PROC_PLAY 1340 PROC_SIG_TUNE 1350 PC=0:CC=0:PS=0:CS=0:count=0 1360 IF RND(10)<6 THEN PROC_COMP 1370 REPEAT 1380 PROC_HUMAN 1390 PROC_COMP 1400 UNTIL CC=6 OR PC=6 1410 IF CC=6 THEN CWIN=CWIN+1:PRINT TAB (18,26);"I WIN" ELSE PWIN=PWIN+1:PRINT T AB(17,26);"YOU WIN" 1420 ENDPROC 1430 1440 DEF PROC_HUMAN 1450 IF CC=6 THEN ENDPROC 1460 PC=PS 1470 PRINT TAB(17,24);"Your go" 1480 PRINT TAB(3,26);"Do you want to ch ange this card ?"; 1490 REPEAT KEY$=FNKEY 1500 UNTIL KEY$="Y" OR KEY$="N" 1510 PRINT TAB(3,26);SPC(36); 1520 IF KEY$="Y" THEN Card$(PC,0)=DECK$ (BASE%):BASE%=BASE%+1:PROC_DRCD(PC,0,FNS UIT(PC,0),FNVALUE(PC,0)) 1530 REPEAT 1540 C=PC:PC=PC+1 1550 IF PC=6 THEN QUIT=TRUE:PC=5:GOTO 1 640 1560 IF PC<>PS+1 THEN PRINT TAB(0,26);" Higher, Lower or Freeze (H,L or F) ?"; E LSE PRINT TAB(8,26);"Higher or Lower (H or L) ?"; 1570 REPEAT KEY$=FNKEY 1580 UNTIL KEY$="H" OR KEY$="L" OR (KEY $="F" AND PC<>PS+1) 1590 PRINT TAB(0,26);SPC(39); 1600 IF KEY$="F" THEN PS=PC-1:PRINT TAB (3,11);STRING$(PS,"[fs6][fs6][fs6][fs6][ fs6][fs6]");"[fs6][fs6][fs6][fs6][fs6][f s7]";:QUIT=TRUE:GOTO 1640 1610 PROC_DRCD(PC,0,FNSUIT(PC,0),FNVALU E(PC,0)) 1620 IF FNVALUE(PC,0)=FNVALUE(C,0) THEN PRINT TAB(3,2);"You don't get anything for a pair";TAB(10,3);"Not in this game !":D=INKEY(300):PRINT TAB(0,2);SPC(80); 1630 IF (FNVALUE(PC,0)<FNVALUE(C,0) AND KEY$="H") OR (FNVALUE(PC,0)>FNVALUE(C,0 ) AND KEY$="L") THEN QUIT=TRUE ELSE QUIT =FALSE 1640 UNTIL QUIT OR PC=5 1650 IF KEY$="F" THEN PC=C:ENDPROC 1660 IF PC=5 AND NOT QUIT THEN PC=6:END PROC 1670 FOR C=PS+1 TO PC 1680 Card$(C,0)=DECK$(BASE%) 1690 BASE%=BASE%+1 1700 IF BASE%>50 THEN PROC_SHUFFLE 1710 PROC_DRCD(C,0,0,0) 1720 NEXT 1730 ENDPROC 1740 1750 DEF PROC_COMP 1760 IF PC=6 OR CC=6 THEN ENDPROC 1770 CC=CS 1780 QUIT=FALSE:C=CC 1790 count=(count+FNVALUE(CC,1))/(CC+1) 1800 PRINT TAB(17,24);" My go "; 1810 IF FNVALUE(CC,1)<6 OR FNVALUE(CC,1 )>9 THEN 1840 1820 PRINT TAB(3,26);"I'll change that card.":Card$(CC,1)=DECK$(BASE%):BASE%=BA SE%+1:PROC_DRCD(CC,1,FNSUIT(CC,1),FNVALU E(CC,1)) 1830 D=INKEY(200):PRINT TAB(3,26);SPC(3 6); 1840 REPEAT 1850 N=FNVALUE(CC,1) 1860 C=CC:CC=CC+1 1870 K$="F" 1880 REPEAT 1890 IF N>9 THEN K$="L" 1900 IF N<5 THEN K$="H" 1910 IF count<10 AND RND(13)<10 AND K$= "F" THEN K$="L" 1920 IF count>5 AND RND(13)>5 AND K$="F " THEN K$="H" 1930 UNTIL CC<>CS+1 OR K$<>"P" 1940 IF K$="F" THEN PRINT TAB(10,26);"I Freeze";:CS=CC-1:PRINT TAB(3,22);STRING $(CS,"[fs6][fs6][fs6][fs6][fs6][fs6]");" [fs6][fs6][fs6][fs6][fs6][fs7]";:GOTO 20 10 1950 PRINT TAB(15,26);" I say "; 1960 IF K$="H" THEN PRINT"higher" ELSE PRINT"lower" 1970 D=INKEY(100) 1980 PROC_DRCD(CC,1,FNSUIT(CC,1),FNVALU E(CC,1)) 1990 IF (FNVALUE(CC,1)<FNVALUE(C,1) AND K$="H") OR (FNVALUE(CC,1)>FNVALUE(C,1) AND K$="L") THEN QUIT=TRUE ELSE QUIT=FAL SE 2000 PRINT TAB(0,26);SPC(39); 2010 *FX 15 1 2020 D=INKEY(200) 2030 PRINT TAB(0,26);SPC(39); 2040 UNTIL QUIT OR K$="F" OR CC=5 2050 IF K$="F" THEN CC=C:ENDPROC 2060 IF CC=5 AND NOT QUIT THEN CC=6:END PROC 2070 FOR C=CS+1 TO CC 2080 Card$(C,1)=DECK$(BASE%) 2090 BASE%=BASE%+1 2100 IF BASE%>50 THEN PROC_SHUFFLE 2110 PROC_DRCD(C,1,0,0) 2120 NEXT 2130 ENDPROC 2140 2150 DEF FNKEY 2160 LOCAL KEY 2170 *FX 15 1 2180 KEY=GET 2190 IF KEY>90 THEN KEY=KEY-32 2200 =CHR$(KEY) 2210 2220 DEF FN_ANOTHER 2230 CLS 2240 PRINT TAB(17,5);"SCORE" 2250 PRINT TAB(10,7);"YOU ";PWIN;TAB(25 ,7);"ME ";CWIN 2260 IF CWIN>PWIN THEN PRINT TAB(17,10) ;"I WIN" ELSE PRINT TAB(16,10);"YOU WIN" 2270 IF CWIN=3 OR PWIN=3 THEN PRINT TAB (12,12);"A CLEAN SWEEP!" 2280 PRINT''"Another game ?"; 2290 REPEAT KEY$=FNKEY 2300 UNTIL KEY$="Y" OR KEY$="N" 2310 CLS 2320 =(KEY$="Y")