Card Games



Pontoon


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")