Acey Deucey

Highlight the following code and save it as a text file called ACEY.BAS
Put it in the same folder as your GW-BASIC program. Load it and run it.

10 ' ----------------------------------------------
20 '                 ACEY DUECEY
30 ' ----------------------------------------------
40 '
50 '           Program by G.C.L.  27/12/90
60 '
70 CLEAR :KEY OFF :CLS :SCREEN 0 :WIDTH 80
80 DEF SEG = 0 :POKE &H417,(PEEK(&H417) OR &H40)   'UPPER CASE
90 DEFINT A-Z
100 GOSUB 230                                      'INPUT SCREEN
110 GOSUB 520                                      'CREATE PACK
120 GOSUB 760                                      'SHUFFLE CARDS
130 SCREEN 1                                       'LARGE DISPLAY
140 TD = 1500                                      'TIME DELAY
150 GOSUB 940                                      'PLAY THE GAME
160 WIDTH 80 :SCREEN 0
170 PRINT "END ACEY DUECEY"
180 PRINT :PRINT "Do you want to play again?  Y/N" :PRINT
190 CH$ = INKEY$ :IF CH$ = "" THEN 190
200 IF CH$ = "Y" THEN 70 ELSE SYSTEM
210 END
220 ' ----------------------------------------------
230 '                                   INPUT SCREEN
240 ' ----------------------------------------------
250 PRINT TAB(33);"ACEY DUECEY"
260 PRINT TAB(33);"-----------"
270 PRINT :PRINT
280 PRINT TAB(24);"You and the computer play the game."
290 PRINT TAB(24);"You both start with 1000 units."
300 PRINT TAB(24);"Bets are from 1 to 200 units."
310 PRINT
320 PRINT TAB(24);"Can you send the computer broke?"
330 PRINT :PRINT
340 PRINT TAB(24);"< 1 >  To see the User Guide"
350 PRINT TAB(24);"< 2 >  Play Acey Duecey"
360 CH$ = INKEY$ :IF CH$ = "" THEN 360
370 IF CH$ = "1" THEN GOSUB 2160
380 MIN = 1
390 LIMIT = 200
400 HUMANBANK = 900
410 COMPBANK = 900
420 KITTY = 200
430 RETURN
440 ' ----------------------------------------------
450 '                                  PRESS ANY KEY
460 ' ----------------------------------------------
470 LOCATE 25,1 :PRINT ,,,"Press any key to continue";
480 WHILE INKEY$ = "" :WEND
490 CLS
500 RETURN
510 ' ----------------------------------------------
520 '                                    CREATE PACK
530 ' ----------------------------------------------
540 DIM CARD(52)
550 'GIVE GAME VALUES TO CARDS
560 FOR J = 0 TO 3
570   FOR K = 1 TO 13
580     CARD(J*13+K) = K+1
590   NEXT K
600 NEXT J
610 RETURN
620 ' ----------------------------------------------
630 '                                     SHOW CARDS
640 ' ----------------------------------------------
650 LOCATE 1,1
660 FOR K = 52 TO 1 STEP-1
670   IF CARD(K) < 11 THEN PRINT USING "####";CARD(K);
680   IF CARD(K) = 11 THEN PRINT "   J";
690   IF CARD(K) = 12 THEN PRINT "   Q";
700   IF CARD(K) = 13 THEN PRINT "   K";
710   IF CARD(K) = 14 THEN PRINT "   A";
720 NEXT K
730 PRINT :PRINT
740 RETURN                                          'END DISPLAY
750 ' ----------------------------------------------
760 LOCATE 24,1 :           PRINT "[SHUFFLE]       ";
770 ' ----------------------------------------------
780 RANDOMIZE TIMER
790 FOR K = 52 TO 2 STEP -1
800   X = INT(RND(1)*K)+1
810   SWAP CARD(K),CARD(X)
820 NEXT K
830 SHOE = 52                                       'PUT CARDS IN SHOE
840 RETURN
850 ' ----------------------------------------------
860 '                                     TIME DELAY
870 ' ----------------------------------------------
880 FOR K = 1 TO TD
890   FOR L = 1 TO TD
900   NEXT L
910 NEXT K
920 RETURN
930 ' ----------------------------------------------
940 '                                  PLAY THE GAME
950 ' ----------------------------------------------
960 WHILE (BET$ <> "Q") AND (HUMANBANK > MIN) AND (COMPBANK > MIN) 'CONTINUE
970   P = 0 :BET$ = ""                              'INITIALISE
980   PLHAND = 0
990   FOR K = 1 TO 3
1000     PLCARD(K) = 0
1010   NEXT K
1020   BADCARDS = 0
1030   IF BET$ = "Q" THEN 1110                       'QUIT THE GAME
1040   IF (SHOE < 5) THEN GOSUB 760                  'RESHUFFLE POINT
1050   GOSUB 860                                     'TIME DELAY
1060   CLS
1070   GOSUB 1190                                    'HUMAN PLAYER
1080   IF (SHOE < 5) THEN GOSUB 760                  'RESHUFFLE POINT
1090   GOSUB 1550                                    'COMPUTER PLAYER
1100 WEND
1110 RETURN                                          'END DEALING
1120 ' ----------------------------------------------
1130 '                                    DEAL A CARD
1140 ' ----------------------------------------------
1150 CARD = CARD(SHOE)                               'THE TOP CARD
1160 SHOE = SHOE - 1                                 'REMOVE CARD FROM PACK
1170 RETURN                                          'DEAL CARD
1180 ' ----------------------------------------------
1190 '                                   HUMAN PLAYER
1200 ' ----------------------------------------------
1210 LOCATE 24, 1 :PRINT "HUMAN BANK";HUMANBANK;
1220 LOCATE 24,21 :PRINT "COMPUTER BANK";COMPBANK;
1230 GOSUB 1920
1240 HUMANBET = 0
1250 GOSUB 1130                                      'DEAL A CARD
1260 PLCARD(1) = CARD
1270 GOSUB 1130                                      'DEAL A CARD
1280 PLCARD(2) = CARD
1290 IF PLCARD(1) < PLCARD(2) THEN SWAP PLCARD(1),PLCARD(2)  'CARD(1) IS HIGH
1300 P = 1
1310 R = 80 :C = P*32 - 32 :GOSUB 2010               'SHOW CARD IN BOX
1320 P = 2
1330 R = 80 :C = P*32      :GOSUB 2010               'SHOW CARD IN BOX
1340 IF PLCARD(2)+1 >= PLCARD(1) THEN 1510           'NO SPACE BETWEEN CARDS
1350 LOCATE 25, 1 :INPUT;"MAKE A BET ",BET$
1360 IF BET$ = "Q" THEN 1530                         'QUIT THE GAME
1370 HUMANBET = INT(ABS(VAL(BET$)))                  'BET UNITS
1380 IF HUMANBET = 0 THEN 1510                       'REJECT HAND
1390 IF HUMANBET > KITTY THEN LET HUMANBET = KITTY   'LIMIT BET
1400 IF HUMANBET > LIMIT THEN LET HUMANBET = LIMIT   'MAXIMUM BET
1410 IF HUMANBET > HUMANBANK THEN LET HUMANBET = HUMANBANK   'BET THE LOT
1420 GOSUB 1130                                      'DEAL A CARD
1430 P = 3
1440 PLCARD(P) = CARD
1450 R = 16 :C = P*32 - 64 :GOSUB 2010               'SHOW CARD IN BOX
1460 HUMANBANK = HUMANBANK-HUMANBET
1470 KITTY = KITTY + HUMANBET
1480 IF (PLCARD(3) >= PLCARD(1)) OR (PLCARD(3) <= PLCARD(2)) THEN 1510
1490 HUMANBANK = HUMANBANK+2*HUMANBET
1500 KITTY = KITTY - 2*HUMANBET
1510 FOR K = 1 TO 1000 :NEXT K
1520 GOSUB 1920                                      'KITTY
1530 RETURN
1540 ' ----------------------------------------------
1550 '                                COMPUTER PLAYER
1560 ' ----------------------------------------------
1570 LOCATE 24,21 :PRINT "COMPUTER BANK";COMPBANK;
1580 COMPBET = 0
1590 GOSUB 1130                                      'DEAL A CARD
1600 PLCARD(1) = CARD
1610 GOSUB 1130                                      'DEAL A CARD
1620 PLCARD(2) = CARD
1630 IF PLCARD(1) < PLCARD(2) THEN SWAP PLCARD(1),PLCARD(2)  'CARD(1) IS HIGH
1640 P = 1
1650 R = 80 :C = P*32 + 160 :GOSUB 2010              'SHOW CARD IN BOX
1660 P = 2
1670 R = 80 :C = P*32 + 192 :GOSUB 2010              'SHOW CARD IN BOX
1680 IF PLCARD(2)+1 >= PLCARD(1) THEN 1880           'NO SPACE BETWEEN CARDS
1690 FOR K = 1 TO SHOE
1700   IF CARD(K) >= PLCARD(1) OR CARD(K) <= PLCARD(2) THEN LET BADCARDS = BADCARDS+1
1710   IF BADCARDS >= SHOE/2 THEN LET K = SHOE
1720 NEXT K
1730 COMPBET = INT((SHOE-2*BADCARDS)/SHOE*COMPBANK)
1740 IF COMPBET < 1 THEN LET COMPBET = 0 :GOTO 1880
1750 IF COMPBET > KITTY THEN LET COMPBET = KITTY     'LIMIT BET
1760 IF COMPBET > LIMIT THEN LET COMPBET = LIMIT     'MAXIMUM BET
1770 IF COMPBET > COMPBANK THEN LET COMPBET = COMPBANK       'BET THE LOT
1780 LOCATE 25,21 :PRINT "COMPUTER  BET";COMPBET;
1790 GOSUB 1130                                      'DEAL A CARD
1800 P = 3
1810 PLCARD(P) = CARD
1820 R = 16 :C = P*32 + 128 :GOSUB 2010              'SHOW CARD IN BOX
1830 COMPBANK = COMPBANK-COMPBET
1840 KITTY = KITTY + COMPBET
1850 IF (PLCARD(3) >= PLCARD(1)) OR (PLCARD(3) <= PLCARD(2)) THEN 1880
1860 COMPBANK = COMPBANK+ 2*COMPBET
1870 KITTY = KITTY - 2*COMPBET
1880 FOR K = 1 TO 2000 :NEXT K
1890 GOSUB 1920                                      'KITTY
1900 RETURN
1910 ' ----------------------------------------------
1920 '                                          KITTY
1930 ' ----------------------------------------------
1940 IF KITTY <> 0 THEN 1980
1950 HUMANBANK = HUMANBANK-100
1960 COMPBANK = COMPBANK-100
1970 KITTY = 200
1980 LOCATE 25,21 :PRINT "        KITTY";KITTY;
1990 RETURN
2000 ' ----------------------------------------------
2010 '                         PICTURE PLAYERS' CARDS
2020 ' ----------------------------------------------
2030 PICTURE = PLCARD(P)
2040 LINE (C+4,R+4)-(C+30,R+44),,B                   'DRAW CARD BORDER
2050 IF PICTURE = 10 THEN LET PIP$ = "1O"
2060 IF PICTURE = 11 THEN LET PIP$ = "J "
2070 IF PICTURE = 12 THEN LET PIP$ = "Q "
2080 IF PICTURE = 13 THEN LET PIP$ = "K "
2090 IF PICTURE = 14 THEN LET PIP$ = "A "
2100 IF PICTURE < 10 THEN LET PIP$ = RIGHT$(STR$(PICTURE),1)+" "
2110 LOCATE R/8+2,C/8+2 :PRINT PIP$;                 'DRAW PIPS
2120 SUIT$ = CHR$(INT (RND(1)*4)+3)                  'CARD SUIT
2130 LOCATE R/8+4,C/8+3 :PRINT SUIT$;                'DRAW SUIT
2140 RETURN
2150 ' ----------------------------------------------
2160 CLS :              PRINT ,,"      ACEY  DUECEY" :PRINT
2170 ' ----------------------------------------------
2180 PRINT ,"This is a gambling card game. A player is dealt a"
2190 PRINT ,"two card hand face up. The player now has the choice"
2200 PRINT ,"of folding the hand or betting on the hand."
2210 PRINT ,"If he folds, the next player is dealt a hand."
2220 PRINT ,"If he bets, he is dealt a third card."
2230 PRINT ,"If this card is between the other two cards he wins."
2240 PRINT ,"If this card is equal to either card or is more than"
2250 PRINT ,"the big card or less than the small card he loses."
2260 PRINT ,"Cards are as normal with Ace a high card. No suits."
2270 PRINT
2280 PRINT ,"TO FOLD: Bet 0. Alternatively press  key."
2290 PRINT ,"TO QUIT: Enter Q as a bet."
2300 PRINT
2310 PRINT ,"BETTING: All bets are in units of 1."
2320 PRINT ,"Each player contributes 100 units to a kitty."
2330 PRINT ,"Bet Limits:  Minimum 1 unit.  Maximum 200 units."
2340 PRINT ,"A bet must not exceeding what remains in the kitty."
2350 PRINT ,"A player bets to win 'EVENS'. Winnings are taken"
2360 PRINT ,"from the kitty, losing bets are added to the kitty."
2370 PRINT
2380 PRINT ,"When the kitty is empty, the players again contribute"
2390 PRINT ,"100 units each.";
2400 GOSUB 450                                       'PRESS ANY KEY
2410 RETURN

Previous | Top | Home | Next