This file is part of Miscellaneous Programs
. Download the collection to get this file.
Play draw poker against the computer.
Content
Source Code
1 CLS : BORDER 6: PAPER 6: INK 0:
3 GO SUB 11
4 GO SUB 2040
6 GO TO 29
10 REM Shuffle Cards
11 FOR a=USR "a" TO USR "k"+7
12 READ user: POKE a,user
13 NEXT a: RETURN
14 DATA 24,60,126,255,255,126,60,24
15 DATA 24,60,90,255,255,90,24,60
16 DATA 16,56,124,254,254,124,16,56
17 DATA 68,238,254,254,254,124,56,16
18 DATA 204,204,51,51,204,204,51,51
19 DATA 0,NOT PI,NOT PI,7,15,12,24,24
20 DATA 0,NOT PI,NOT PI,192,240,48,24,24
21 DATA 24,24,12,15,7,NOT PI,NOT PI,0
22 DATA 24,24,48,240,192,NOT PI,NOT PI,0
23 DATA 0,NOT PI,NOT PI,255,255,NOT PI,NOT PI,0
24 DATA 24,24,24,24,24,24,24,24
27 REM a b c d e f g h i j k
28 REM \a \b \c \d \e \f \g \h \i \j \k
29 LET c$=""
30 PRINT AT 20,NOT PI,,"Stand by please",,
40 GO SUB 2020
50 RANDOMIZE
60 LET c$=""
70 LET r=INT (RND*52)*2+1
80 LET x$=a$(r TO )+a$( TO r-1)
90 FOR l=1 TO 18
100 LET r=INT (RND*(LEN x$/2))*2+1
110 LET c$=c$+x$(r TO r+1)
120 LET x$=x$( TO r-1)+x$(r+2 TO )
130 NEXT l
140 PRINT AT 21,NOT PI;"Ready Press Enter",
150 INPUT r$
160 CLS
170 LET a=0
180 GO SUB 430
190 RETURN
200 REM Sort Hi-Lo
210 LET r=1
220 FOR l=1 TO 7 STEP 2
230 IF CODE k$(l)<CODE k$(l+2) THEN GO SUB 270
240 NEXT l
250 IF NOT r THEN GO TO 200
260 RETURN
270 LET e$=k$(l TO l+1)
280 LET k$(l TO l+1)=k$(l+2 TO l+3)
290 LET k$(l+2 TO l+3)=e$
300 LET r=0
310 RETURN
320 REM Change Card Values
330 FOR l=1 TO 9 STEP 2
340 IF k$(l)="a" THEN LET k$(l)="T"
350 IF k$(l)="b" THEN LET k$(l)="J"
360 IF k$(l)="c" THEN LET k$(l)="Q"
370 IF k$(l)="d" THEN LET k$(l)="K"
380 IF k$(l)="e" THEN LET k$(l)="A"
390 IF k$(l+1)="e" THEN LET k$(l+1)="\d"
400 IF k$(l+1)="f" THEN LET k$(l+1)="\c"
410 NEXT l
420 RETURN
430 REM Card outline
440 FOR b=1 TO 25 STEP 6
450 PRINT AT a,b;"\f\j\j\j\g";AT a+1,b;"\k \k";AT a+2,b;"\k \k";AT a+3,b;"\k \k";AT a+4,b;"\k \k";AT a+5,b;"\k \k";AT a+6,b;"\h\j\j\j\i"
460 NEXT b
470 RETURN
480 REM Card Values
490 FOR a=2 TO 26 STEP 6
500 PRINT AT b,a;k$(SGN PI);AT b+2,a+1;k$(2);AT b+4,a+2;k$(SGN PI)
510 LET k$=k$(PI TO )
520 NEXT a
530 RETURN
540 REM Determine Hand Values
550 LET v=CODE k$
560 IF k$(SGN PI)=k$(PI) AND k$(SGN PI)=k$(5) AND k$(7)=k$(9) OR k$(SGN PI)=k$(PI) AND k$(5)=k$(7) AND k$(5)=k$(9) THEN GO TO 810
570 IF k$(SGN PI)=k$(PI) AND k$(SGN PI)=k$(5) AND k$(SGN PI)=k$(7) OR k$(PI)=k$(5) AND k$(PI)=k$(7) AND k$(PI)=k$(9) THEN GO TO 860
580 IF k$(SGN PI)=k$(PI) AND k$(SGN PI)=k$(5) OR k$(PI)=k$(5) AND k$(PI)=k$(7) OR k$(5)=k$(7) AND k$(5)=k$(9) THEN GO TO 760
590 IF k$(SGN PI)=k$(PI) AND k$(5)=k$(7) OR k$(SGN PI)=k$(PI) AND k$(7)=k$(9) OR k$(PI)=k$(5) AND k$(7)=k$(9) THEN GO TO 710
600 IF k$(SGN PI)=k$(PI) OR k$(PI)=k$(5) OR k$(5)=k$(7) OR k$(7)=k$(9) THEN GO TO 660
610 IF CODE k$(SGN PI)=CODE k$(PI)+1 AND CODE k$(PI)=CODE k$(5)+1 AND CODE k$(5)=CODE k$(7)+1 AND CODE k$(7)=CODE k$(9)+1 THEN LET v=200+CODE k$
620 IF CODE k$(2)=CODE k$(4) AND CODE k$(4)=CODE k$(6) AND CODE k$(6)=CODE k$(8) AND CODE k$(8)=CODE k$(10) THEN LET v=250+CODE k$
630 IF k$(2)=k$(4) AND k$(4)=k$(6) AND k$(6)=k$(8) AND k$(8)=k$(10) AND CODE k$(SGN PI)=CODE k$(PI)+1 AND CODE k$(PI)=CODE k$(5)+1 AND CODE k$(5)=CODE k$(7)+1 AND CODE k$(7)=CODE k$(9)+1 THEN LET v=400+CODE k$
640 IF k$(2)=k$(4) AND k$(4)=k$(6) AND k$(6)=k$(8) AND k$(8)=k$(10) AND CODE k$=CODE k$(PI)+1 AND CODE k$(PI)=CODE k$(5)+1 AND CODE k$(5)=CODE k$(7)+1 AND CODE k$(7)=CODE k$(9)+1 AND CODE k$=42 THEN LET v=450+CODE k$
650 RETURN
660 FOR l=1 TO 7 STEP 2
670 IF k$(l)=k$(l+2) THEN GO TO 690
680 NEXT l
690 LET v=50+CODE k$(l)
700 RETURN
710 FOR l=1 TO 3 STEP 2
720 IF k$(l)=k$(l+2) THEN GO TO 740
730 NEXT l
740 LET v=100+CODE k$(l)
750 RETURN
760 FOR l=1 TO 5 STEP 2
770 IF k$(l)=k$(l+2) THEN GO TO 790
780 NEXT l
790 LET v=150+CODE k$(l)
800 RETURN
810 FOR l=1 TO 5 STEP 4
820 IF k$(l)=k$(l+2) AND k$(l)=k$(l+4) THEN GO TO 840
830 NEXT l
840 LET v=300+CODE k$(l)
850 RETURN
860 FOR l=1 TO 3 STEP 2
870 IF k$(l)=k$(l+2) THEN LET v=350+CODE k$(l)
880 NEXT l
890 RETURN
900 REM Timex/Sinclair Decides on How many cards to draw
910 LET o$=k$
920 LET t=0
930 IF v>200 THEN RETURN
940 IF v>100 THEN GO TO 1190
950 IF v>50 THEN GO TO 1330
960 IF k$(2)=k$(4) AND k$(2)=k$(6) AND k$(2)=k$(8) OR k$(2)=k$(4) AND k$(2)=k$(6) AND k$(2)=k$(10) OR k$(2)=k$(4) AND k$(2)=k$(8) AND k$(2)=k$(10) OR k$(4)=k$(6) AND k$(4)=k$(8) AND k$(4)=k$(10) THEN GO TO 1420
970 IF k$(2)=k$(4) AND k$(2)=k$(6) OR k$(2)=k$(4) AND k$(2)=k$(8) OR k$(2)=k$(4) AND k$(2)=k$(10) OR k$(2)=k$(6) AND k$(2)=k$(8) OR k$(2)=k$(4) AND k$(2)=k$(10) OR k$(2)=k$(6) AND k$(2)=k$(10) OR k$(4)=k$(6) AND k$(4)=k$(8) OR k$(4)=k$(8) AND k$(4)=k$(10) OR k$(6)=k$(8) AND k$(6)=k$(10) OR k$(6)=k$(4) AND k$(6)=k$(10) THEN GO TO 1020
980 IF CODE k$(SGN PI)=CODE k$(PI)+1 AND CODE k$(PI)=CODE k$(5)+1 OR CODE k$(PI)=CODE k$(5)+1 AND CODE k$(5)=CODE k$(7)+1 OR CODE k$(5)=CODE k$(7)+1 AND CODE k$(7)=CODE k$(9)+1 THEN GO TO 1110
990 LET k$(PI TO )=c$( TO 8)
1000 LET t=4
1010 RETURN
1020 IF k$(2)=k$(4) AND k$(2)=k$(6) OR k$(2)=k$(4) AND k$(2)=k$(8) OR k$(2)=k$(4) AND k$(2)=k$(10) OR k$(2)=k$(6) AND k$(2)=k$(10) OR k$(2)=k$(6) AND k$(2)=k$(8) OR k$(2)=k$(10) THEN LET g$=k$(2)
1030 IF k$(4)=k$(6) AND k$(4)=k$(8) OR k$(4)=k$(6) AND k$(4)=k$(10) OR k$(4)=k$(8) AND k$(4)=k$(10) THEN LET g$=k$(4)
1040 IF k$(6)=k$(8) AND k$(6)=k$(10) OR k$(6)=k$(8) AND k$(6)=k$(10) THEN LET g$=k$(6)
1050 FOR l=2 TO 10 STEP 2
1060 IF k$(l)<>g$ THEN LET k$(l-1 TO l)=c$( TO 2)
1070 LET c$=c$(PI TO )
1080 NEXT l
1090 LET t=2
1100 RETURN
1110 IF CODE k$(SGN PI)=CODE k$(PI)+1 AND CODE k$(PI)=CODE k$(5)+1 AND CODE k$(5)=CODE k$(7)+1 OR CODE k$(PI)=CODE k$(5)+1 AND CODE k$(5)=CODE k$(7)+1 AND CODE k$(7)=CODE k$(9)+1 THEN GO TO 1500
1120 IF CODE k$(SGN PI)=CODE k$(PI)+1 THEN LET o$(7 TO 10)=c$( TO 4)
1130 IF CODE k$(PI)=CODE k$(5)+1 AND CODE k$(5)=CODE k$(7)+1 THEN LET o$(9 TO 10)=c$(PI TO 4)
1140 IF CODE k$(PI)=CODE k$(5)+1 AND CODE k$(5)=CODE k$(7)+1 THEN LET o$( TO 2)=c$( TO 2)
1150 IF CODE k$(7)=CODE k$(9)+1 THEN LET o$( TO 4)=c$( TO 4)
1160 LET t=2
1170 LET k$=o$
1180 RETURN
1190 IF v>150 THEN GO TO 1260
1200 IF k$(SGN PI)=k$(PI) AND k$(5)=k$(7) THEN LET o$(9 TO )=c$( TO 2)
1210 IF k$(SGN PI)=k$(PI) AND k$(7)=k$(9) THEN LET o$(5 TO 6)=c$( TO 2)
1220 IF k$(PI)=k$(5) AND k$(7)=k$(9) THEN LET o$( TO 2)=c$( TO 2)
1230 LET t=1
1240 LET k$=o$
1250 RETURN
1260 IF k$(SGN PI)=k$(PI) AND k$(SGN PI)=k$(5) THEN LET o$(7 TO )=c$( TO 4)
1270 IF k$(PI)=k$(5) AND k$(PI)=k$(7) THEN LET o$( TO 2)=c$( TO 2)
1280 IF k$(PI)=k$(5) AND k$(PI)=k$(7) THEN LET o$(9 TO )=c$(PI TO 4)
1290 IF k$(5)=k$(7) AND k$(5)=k$(9) THEN LET o$( TO 4)=c$( TO 4)
1300 LET t=2
1310 LET k$=o$
1320 RETURN
1330 IF k$(SGN PI)=k$(PI) THEN LET o$(5 TO )=c$( TO 6)
1340 IF k$(PI)=k$(5) THEN LET o$( TO 2)=c$( TO 2)
1350 IF k$(PI)=k$(5) THEN LET o$(7 TO 10)=c$(PI TO 6)
1360 IF k$(5)=k$(7) THEN LET o$( TO 4)=c$( TO 4)
1370 IF k$(5)=k$(7) THEN LET o$(9 TO )=c$(5 TO 6)
1380 IF k$(7)=k$(9) THEN LET o$( TO 6)=c$( TO 6)
1390 LET t=3
1400 LET k$=o$
1410 RETURN
1420 IF k$(2)=k$(4) OR k$(2)=k$(6) THEN LET v$=k$(2)
1430 IF k$(2)<>k$(4) AND k$(4)=k$(6) THEN LET v$=k$(4)
1440 FOR l=2 TO 10 STEP 2
1450 IF k$(l)<>v$ THEN LET k$(l-1 TO l)=c$( TO 2)
1460 LET c$=c$(PI TO )
1470 NEXT l
1480 LET t=1
1490 RETURN
1500 IF CODE k$(SGN PI)=CODE k$(PI)+1 AND CODE k$(PI)=CODE k$(5)+1 AND CODE k$(5)=CODE k$(7)+1 THEN LET o$(9 TO )=c$( TO 2)
1510 IF CODE k$(PI)=CODE k$(5)+1 AND CODE k$(5)=CODE k$(7)+1 AND CODE k$(7)=CODE k$(9)+1 THEN LET o$( TO 2)=c$( TO 2)
1520 LET k$=o$
1530 LET t=1
1540 RETURN
1550 REM Betting Routine
1560 LET c=0
1570 IF mv>200 THEN LET c=mv/50
1580 IF mv>200 THEN GO TO 1680
1590 LET x=RND
1600 IF x>.9 THEN LET c=8
1610 IF c=8 THEN GO TO 1680
1620 IF x>.45 OR btg<3 THEN LET c=2
1630 IF c=2 THEN GO TO 1680
1640 LET y=y+btg
1650 LET wl=5
1660 GO SUB 1940
1670 GO TO 3190
1680 FOR l=1 TO c
1690 PRINT AT 19,NOT PI;"I See you and raise you $";btg,
1700 PRINT AT 21,NOT PI;"Enter your bet",,
1710 GO SUB 2020
1720 INPUT i
1730 IF y<2*btg OR i=0 OR i=btg OR i=2*btg THEN GO TO 1760
1750 GO TO 1720
1760 LET wl=wl+i
1770 LET y=y-i
1780 IF y<btg THEN GO TO 1980
1790 IF NOT i THEN GO TO 3150
1800 IF i=btg THEN GO TO 1880
1810 PRINT AT 19,NOT PI;"So you see me and raise me...",
1820 GO SUB 1940
1830 IF mv<100 AND l>3 AND RND>=.6 THEN GO TO 3170
1840 NEXT l
1850 GO SUB 1940
1860 PRINT AT 19,NOT PI;"I see you....",,
1870 RETURN
1880 PRINT AT 19,NOT PI;"So you see me....",
1930 RETURN
1940 REM Delay Loop
1950 FOR p=1 TO 20
1960 NEXT p
1970 RETURN
1980 GO SUB 1940
1990 PRINT AT 19,NOT PI;"You will have to see me....",
2000 GO SUB 1940
2010 RETURN
2020 PRINT AT 21,18;"You have $";y
2030 RETURN
2040 REM Start of Program
2050 LET a$="2\b3\b4\b5\b6\b7\b8\b9\ba\bb\bc\bd\be\b2\a3\a4\a5\a6\a7\a8\a9\aa\ab\ac\ad\ae\a2e3e4e5e6e7e8e9eaebecedeee2f3f4f5f6f7f8f9fafbfcfdfef"
2070 DIM m$(2,10)
2080 DIM y$(2,10)
2090 LET bt=0
2100 LET y=250
2110 PRINT AT 9,4;" Timex/Sinclair poker "
2120 REM Instructions ?
2130 PRINT AT 20,NOT PI;"Do you require details ?(y OR n)"
2140 IF INKEY$<>"" THEN GO TO 2140
2150 IF INKEY$="" THEN GO TO 2150
2160 LET s$=INKEY$
2170 IF s$="y" THEN GO SUB 3300
2180 GO SUB 29
2190 REM Deal hands
2200 FOR l=1 TO 9 STEP 2
2210 LET m$(1,l TO l+1)=c$( TO 2)
2220 LET y$(1,l TO l+1)=c$(PI TO 4)
2230 LET c$=c$(5 TO )
2240 NEXT l
2250 LET k$=y$(SGN PI)
2260 GO SUB 200
2270 LET y$(SGN PI)=k$
2280 GO SUB 320
2290 LET y$(2)=k$
2300 REM Initial Stake
2310 LET y=y-5
2320 LET b=1
2330 GO SUB 480
2340 LET k$=m$(SGN PI)
2350 REM Numbers under cards
2360 PRINT AT 7,PI;"1 2 3 4 5"
2370 GO SUB 200
2380 REM Discard which cards ?
2390 PRINT AT 19,NOT PI;"Swap which card?(ie. Press 2 ForNo. 2 Etc. and/or P to Pass )",
2400 FOR l=1 TO 4
2410 IF INKEY$<>"" THEN GO TO 2410
2420 IF INKEY$="" THEN GO TO 2420
2430 LET t$=INKEY$
2440 IF t$="p" THEN GO TO 2510
2450 IF t$<"1" OR t$>"5" THEN GO TO 2410
2460 PRINT AT 7,VAL t$*6-3;"*"
2470 LET t=VAL t$*2-1
2480 LET y$(1,t TO t+1)=c$( TO 2)
2490 LET c$=c$(PI TO )
2500 NEXT l
2510 PRINT AT 19,NOT PI,,,,TAB 10;" Dealing ",
2520 LET k$=y$(SGN PI)
2530 GO SUB 200
2540 LET y$(SGN PI)=k$
2550 GO SUB 320
2560 LET y$(2)=k$
2570 LET b=1
2580 GO SUB 480
2590 PRINT AT 7,NOT PI,,
2600 PRINT AT 21,NOT PI;"Bet till now $5",,
2610 GO SUB 2020
2620 LET k$=y$(SGN PI)
2630 GO SUB 540
2640 LET yv=v
2650 LET k$=m$(SGN PI)
2660 GO SUB 540
2670 GO SUB 900
2680 PRINT AT 19,NOT PI,,,,AT 19,NOT PI;"Dealer Takes ";t;" card"+("s" AND t<>1)
2690 LET m$(SGN PI)=k$
2700 GO SUB 200
2710 LET m$(SGN PI)=k$
2720 GO SUB 320
2730 LET m$(2)=k$
2740 LET a=10
2750 GO SUB 430
2760 LET k$=m$(SGN PI)
2770 GO SUB 540
2780 LET mv=v
2790 REM Betting Begins
2800 REM PRINT AT 21,0;"Your Bet ?",,
2810 GO SUB 2020
2820 INPUT btg
2830 LET btg=INT btg
2840 IF NOT btg THEN GO TO 3150
2850 IF btg>y OR btg>25 THEN PRINT AT 21,NOT PI,,
2860 PRINT AT 21,NOT PI;("You do not have that much..." AND btg>y)+("Limit is $25" AND btg>25)
2870 IF btg>y OR btg>25 THEN GO SUB 2020
2880 IF btg>y OR btg>25 THEN GO TO 2820
2890 IF btg=y OR y-btg<btg THEN LET s=1
2900 LET y=y-btg
2910 LET wl=btg+5
2920 GO SUB 1550
2930 LET k$=m$(2)
2940 LET b=11
2950 GO SUB 480
2960 LET j=yv
2970 GO SUB 1900
2990 LET j=mv
3000 GO SUB 1900
3020 GO SUB 1940
3030 REM Who Wins
3040 PRINT AT 21,NOT PI,,AT 21,NOT PI;("Ok...,You Win" AND yv>mv)+("Tough Luck, I Win" AND mv>yv)+("It is a Draw..." AND mv=yv)
3050 REM adjust money
3060 IF yv>mv THEN LET y=y+wl*2
3070 IF yv=mv THEN LET y=y+wl
3080 GO SUB 2020
3090 GO SUB 1940
3100 GO SUB 1940
3110 IF y>2000 THEN GO TO 3220
3120 IF y<6 THEN GO TO 3270
3130 GO TO 2180
3140 REM various remarks
3150 PRINT AT 19,NOT PI;"So Your Chicken..... ?",
3160 GO TO 3080
3170 LET wl=wl-i
3180 LET y=y+i
3190 PRINT AT 19,NOT PI;"I am out............",
3200 LET y=y+wl*2
3210 GO TO 3080
3220 GO SUB 1940
3230 GO SUB 1940
3240 CLS
3250 PRINT AT 10,NOT PI;"Well That beats me. I am going home. Bye-bye for now."
3260 STOP
3270 CLS
3280 PRINT AT 10,NOT PI;"It appears you have no more cash thanks and bye-bye."
3290 STOP
3300 CLS
3310 PRINT '" This is a game of draw poker played by you against the Timex/sinclair."
3320 PRINT '" You will be dealt with five cards, and then be asked which ones you wish to discard. You may discard a maximum of 4 cards"
3330 PRINT '" On each deal your total will automatically be debited with $5. This is your starting stake."
3340 PRINT '" The maximum initial bet is $25. There after you must all- ways double or see. To throw in your cards enter a 0."
3350 PRINT AT 20,2;"Good luck....."
3355 PAUSE 300
3360 RETURN
4000 SAVE "poker" LINE 1
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.
