Type: Program
Platform(s): TS 2068
Traditional card game.
Content
Source Code
5 CLS : BEEP .15,20: BORDER 6
10 DIM a(50): DIM b(15)
20 DEF FN a(x)=INT (10*RND+(1))
30 DEF FN b(x)=x-100*INT (x/100)
35 GO SUB 9000
38 FOR n=14 TO 1 STEP -1: CLS
39 INK RND*6
40 PRINT AT n,0;" \::\::\::\::\i \j\::\::\::\i \:: \f\h \::\::\::\::\:: \::\::\::\::\i \:: \:: \:: \:: \:: \f\h \:: \:: \:: \:: \:: \:: \:: \::\f\h \:: \:: \:: \::\::\::\::\k \:: \:: \::\m \::\::\::\:: \::\::\::\::\k \:: \:: \:: \::\g\e \:: \::\g\e \:: \:: \:: \:: \g\e \:: \:: \g\e \:: \l\::\::\::\k \:: \g\e \::\::\::\::\:: \:: \g\e"
42 BEEP .01,RND*50: BORDER RND*7: NEXT n
45 LET b=30: LET m=10: GO SUB 80
46 INK 0
48 PRINT : PRINT "Welcome to the casino.We each have $200."
49 GO SUB 80
50 PRINT : PRINT "I will open the betting before the draw.You open after."
55 LET b=20: LET m=20: GO SUB 80
60 PRINT : PRINT "When you fold,bet 0; to check,bet .5 ."
65 LET b=10: LET m=30: GO SUB 80
70 PRINT : PRINT "Enough talk--let's get down to business."
75 GO TO 85
80 FOR n=1 TO b: BORDER RND*7: BEEP .05,RND*60-m: NEXT n: RETURN
85 FOR n=1 TO 300: NEXT n: CLS : BORDER 6
90 LET o=1
95 FOR n=1 TO 100: NEXT n
100 LET c=200: LET s=200
110 LET g=0
120 LET p=0
130 RANDOMIZE
140 PRINT
150 IF c<=5 THEN GO TO 3670
160 PRINT "The ante is $5. I will deal."
164 BEEP .02,50
165 PRINT : PRINT "I am shuffling the deck."
170 PRINT
180 IF s>5 THEN GO TO 200
190 GO SUB 3830
200 LET p=p+10
210 LET s=s-5
220 LET c=c-5
230 FOR z=1 TO 10
240 GO SUB 1740
250 NEXT z
260 CLS
265 PRINT "Your hand:"
270 LET n=1
280 GO SUB 1850
290 LET n=6
300 LET i=2
310 GO SUB 2170
320 PRINT
330 IF i<>6 THEN GO TO 470
340 IF FN a(0)<=7 THEN GO TO 370
350 LET x=11100
360 GO TO 420
370 IF FN a(0)<=7 THEN GO TO 400
380 LET x=11110
390 GO TO 420
400 IF FN a(0)>=1 THEN GO TO 450
410 LET x=11111
420 LET i=7
430 LET z=23
440 GO TO 580
450 LET z=1
460 GO TO 510
470 IF u>=13 THEN GO TO 540
480 IF FN a(0)>=2 THEN GO TO 500
490 GO TO 420
500 LET z=0
510 LET k=0
520 PRINT "I check"
525 BEEP .05,30
530 GO TO 620
540 IF u<=16 THEN GO TO 570
550 LET z=2
560 IF FN a(0)>=1 THEN GO TO 580
570 LET z=35
580 LET v=z+FN a(0)
590 GO SUB 3480
600 PRINT "I'll open with ";v
610 LET k=v
620 GO SUB 3050
630 GO SUB 650
640 GO TO 820
650 IF i<>3 THEN GO TO 760
660 PRINT
670 PRINT "I win"
675 BEEP .05,10: BEEP .05,10
680 LET c=c+p
690 PRINT "I have $";c;" and you have $";s
700 PRINT "Do you wish to continue?"
710 LET h$=INKEY$
720 IF h$="y" THEN CLS : GO TO 120
730 IF h$="n" THEN FOR n=1 TO 30: NEXT n: GO TO 4100
750 GO TO 710
760 IF i<>4 THEN GO TO 810
770 PRINT
780 PRINT "You win"
785 BEEP .05,30: BEEP .05,30
790 LET s=s+p
800 GO TO 690
810 RETURN
820 PRINT
830 PRINT "Now we draw--how many cards do you want?"
840 INPUT t
845 BEEP .05,45
850 IF t=0 THEN GO TO 980
860 LET z=10
870 IF t<4 THEN GO TO 900
880 PRINT "You can't draw more than three cards."
890 GO TO 840
900 PRINT "Enter their numbers one at a time"
910 FOR q=1 TO t
920 INPUT u
925 BEEP .05,30
930 GO SUB 1730
940 NEXT q
950 CLS
955 PRINT "Your new hand:"
960 LET n=1
970 GO SUB 1850
980 LET z=10+t
990 FOR u=6 TO 10
1000 IF INT (x/10^(u-6))<>10*INT (x/10^(u-5)) THEN GO TO 1020
1010 GO SUB 1730
1020 NEXT u
1030 PRINT
1040 PRINT "I am taking ";z-10-t;" card";
1050 IF z=11+t THEN GO TO 1090
1060 PRINT "s"
1070 PRINT
1080 GO TO 1100
1090 PRINT
1100 LET n=6: LET v=i: LET i=1
1130 GO SUB 2170
1140 LET b=u
1150 LET m=d
1160 IF v<>7 THEN GO TO 1190
1170 LET z=28
1180 GO TO 1330
1190 IF i<>6 THEN GO TO 1220
1200 LET z=1
1210 GO TO 1330
1220 IF u>=13 THEN GO TO 1270
1230 LET z=2
1240 IF FN a(0)<>6 THEN GO TO 1260
1250 LET z=19
1260 GO TO 1330
1270 IF u>=16 THEN GO TO 1320
1280 LET z=19
1290 IF FN a(0)<>8 THEN GO TO 1310
1300 LET z=11
1310 GO TO 1330
1320 LET z=2
1330 LET k=0
1340 GO SUB 3050
1350 IF t<>.5 THEN GO TO 1450
1360 IF v=7 THEN GO TO 1400
1370 IF i<>6 THEN GO TO 1400
1380 PRINT "I'll check"
1390 GO TO 1460
1400 LET v=z+FN a(0)
1410 GO SUB 3480
1420 PRINT "I'll bet";v
1430 LET k=v
1440 GO SUB 3060
1450 GO SUB 650
1460 PRINT
1470 PRINT "Now we compare hands"
1480 LET j$=h$
1490 LET k$=i$
1500 PRINT "My hand:"
1510 LET n=6
1520 GO SUB 1850
1530 LET n=1
1540 GO SUB 2170
1550 PRINT
1560 PRINT "You have ";
1570 LET k=d
1580 GO SUB 3690
1590 LET h$=j$
1600 LET i$=k$
1610 LET k=m
1620 PRINT "and I have ";
1630 GO SUB 3690
1640 IF b>u THEN GO TO 670
1650 IF u>b THEN GO TO 780
1655 IF h$=j$ THEN GO TO 1700
1660 IF h$="a flus" THEN GO TO 1700
1670 PRINT "The hand is drawn"
1680 PRINT "All $";p;" remain in the pot"
1690 GO TO 140
1700 IF FN b(m)>FN b(d) THEN GO TO 670
1710 IF FN b(d)>FN b(m) THEN GO TO 780
1720 GO TO 1670
1730 LET z=z+1
1740 LET a(z)=INT (1000*RND+(1))
1750 IF INT (a(z)/100)>3 THEN GO TO 1740
1760 IF a(z)-100*INT (a(z)/100)>12 THEN GO TO 1740
1765 IF z=1 THEN GO TO 1800
1770 FOR k=1 TO z-1
1780 IF a(z)=a(k) THEN GO TO 1740
1790 NEXT k
1800 IF z<=10 THEN GO TO 1840
1810 LET n=a(u)
1820 LET a(u)=a(z)
1830 LET a(z)=n
1840 RETURN
1850 FOR z=n TO n+4
1860 PRINT z;"-- ";
1866 BEEP .05,45
1870 GO SUB 1950
1880 PRINT " of";
1890 GO SUB 2070
1900 IF z/2<>INT (z/2) THEN GO TO 1920
1910 PRINT
1920 NEXT z
1930 PRINT
1940 RETURN
1950 LET k=FN b(a(z))
1960 IF k<>9 THEN GO TO 1980
1970 PRINT "Jack";
1980 IF k<>10 THEN GO TO 2000
1990 PRINT "Queen";
2000 IF k<>11 THEN GO TO 2020
2010 PRINT "King";
2020 IF k<>12 THEN GO TO 2040
2030 PRINT "Ace";
2040 IF k>=9 THEN GO TO 2060
2050 PRINT k+2;
2060 RETURN
2070 LET k=INT (a(z)/100)
2080 IF k<>0 THEN GO TO 2100
2090 PRINT INK 4;" \d ",
2100 IF k<>1 THEN GO TO 2120
2110 PRINT " "; BRIGHT 1; INK 2;"\a"; BRIGHT 0;" ",
2120 IF k<>2 THEN GO TO 2140
2130 PRINT INK 2;" \b ",
2140 IF k<>3 THEN GO TO 2160
2150 PRINT " \c ",
2160 RETURN
2170 LET u=0
2180 FOR z=n TO n+4
2190 LET b(z)=FN b(a(z))
2200 IF z=n+4 THEN GO TO 2230
2210 IF INT (a(z)/100)<>INT (a(z+1)/100) THEN GO TO 2230
2220 LET u=u+1
2230 NEXT z
2240 IF u<>4 THEN GO TO 2310
2250 LET x=11111
2260 LET d=a(n)
2270 LET h$="a flus"
2280 LET i$="h in"
2290 LET u=15
2300 RETURN
2310 FOR z=n TO n+3
2320 FOR k=z+1 TO n+4
2330 IF b(z)<=b(k) THEN GO TO 2390
2340 LET x=a(z)
2350 LET a(z)=a(k)
2360 LET b(z)=b(k)
2370 LET a(k)=x
2380 LET b(k)=a(k)-100*INT (a(k)/100)
2390 NEXT k
2400 NEXT z
2410 LET x=0
2420 FOR z=n TO n+3
2430 IF b(z)<>b(z+1) THEN GO TO 2470
2440 LET x=x+11*10^(z-n)
2450 LET d=a(z)
2460 GO SUB 2760
2470 NEXT z
2480 IF x<>0 THEN GO TO 2620
2490 IF b(n)+3<>b(n+3) THEN GO TO 2520
2500 LET x=1111
2510 LET u=10
2520 IF b(n+1)+3<>b(n+4) THEN GO TO 2620
2530 IF u<>10 THEN GO TO 2600
2540 LET u=14
2550 LET h$="straig"
2560 LET i$="ht"
2570 LET x=11111
2580 LET d=a(n+4)
2590 RETURN
2600 LET u=10
2610 LET x=11110
2620 IF u>=10 THEN GO TO 2690
2630 LET d=a(n+4)
2640 LET h$="schmal"
2650 LET i$="tz, "
2660 LET u=9
2670 LET x=11000
2680 GO TO 2740
2690 IF u<>10 THEN GO TO 2720
2700 IF i=1 THEN GO TO 2740
2710 GO TO 2750
2720 IF u<>12 THEN GO TO 2750
2730 IF FN b(d)>6 THEN GO TO 2750
2740 LET i=6
2750 RETURN
2760 IF u>=11 THEN GO TO 2810
2770 LET u=11
2780 LET h$="a pair"
2790 LET i$=" of "
2800 RETURN
2810 IF u<>11 THEN GO TO 2910
2820 IF b(z)<>b(z-1) THEN GO TO 2870
2830 LET h$="three"
2840 LET i$=" "
2850 LET u=13
2860 RETURN
2870 LET h$="two p"
2880 LET i$="air, "
2890 LET u=12
2900 RETURN
2910 IF u<>12 THEN GO TO 2960
2920 LET u=16
2930 LET h$="full h"
2940 LET i$="ouse, "
2950 RETURN
2960 IF b(z)<>b(z-1) THEN GO TO 3010
2970 LET u=17
2980 LET h$="four"
2990 LET i$=" "
3000 RETURN
3010 LET u=16
3020 LET h$="full h"
3030 LET i$="ouse, "
3040 RETURN
3050 LET g=0
3060 PRINT "What is your bet ?"
3065 PRINT "(You have) ";s-g
3070 INPUT t
3075 BEEP .05,30
3080 IF t-INT (t)=0 THEN GO TO 3140
3090 IF k<>0 THEN GO TO 3120
3100 IF g<>0 THEN GO TO 3120
3110 IF t=.5 THEN GO TO 3410
3120 PRINT "No small change please."
3130 GO TO 3060
3140 IF s-g-t>=0 THEN GO TO 3170
3150 GO SUB 3830
3160 GO TO 3060
3170 IF t<>0 THEN GO TO 3200
3180 LET i=3
3190 GO TO 3380
3200 IF g+t>=k THEN GO TO 3230
3210 PRINT "If you can't see my bet, then fold"
3220 GO TO 3060
3230 LET g=g+t
3240 IF g=k THEN GO TO 3380
3250 IF z<>1 THEN GO TO 3420
3260 IF g>5 THEN GO TO 3300
3270 IF z>=2 THEN GO TO 3350
3280 LET v=5
3290 GO TO 3420
3300 IF z=1 THEN GO TO 3320
3310 IF t<=25 THEN GO TO 3350
3320 LET i=4
3330 PRINT "I fold"
3340 RETURN
3350 IF z=2 THEN GO TO 3430
3360 PRINT "I'll see you"
3370 LET k=g
3380 LET s=s-g
3390 LET c=c-k
3400 LET p=p+g+k
3410 RETURN
3420 IF g>3*z THEN GO TO 3350
3430 LET v=g-k+FN a(0)
3440 GO SUB 3480
3450 PRINT "I'll see you and raise you ";v
3460 LET k=g+v
3470 GO TO 3060
3480 IF c-g-v>=0 THEN GO TO 3660
3490 IF g<>0 THEN GO TO 3520
3500 LET v=c
3510 RETURN
3520 IF c-g>=0 THEN GO TO 3360
3530 IF o/2<>INT (o/2) THEN GO TO 3600
3540 PRINT "Would you like to buy back your watch for $50 ?"
3550 INPUT j$
3560 IF j$="n" THEN GO TO 3600
3570 LET c=c+50
3580 LET o=o/2
3590 RETURN
3600 IF o/3<>INT (o/3) THEN GO TO 3670
3610 PRINT "Would you like to buy back your tie for $50 ?"
3620 INPUT j$
3630 IF j$="n" THEN GO TO 3670
3640 LET c=c+50
3650 LET o=o/3
3660 RETURN
3670 PRINT "I'm busted. Congratulations"
3680 GO TO 4100
3690 PRINT h$;i$;
3700 IF h$<>"a flus" THEN GO TO 3750
3710 LET k=INT (k/100)
3720 GO SUB 2080
3730 PRINT
3740 RETURN
3750 LET k=FN b(k)
3760 GO SUB 1960
3770 IF h$="schmal" THEN GO TO 3790
3780 IF h$<>"straig" THEN GO TO 3810
3790 PRINT " high"
3800 RETURN
3810 PRINT "s"
3820 RETURN
3830 PRINT
3840 PRINT "You can't bet what you haven't got."
3850 IF o/2=INT (o/2) THEN GO TO 3970
3860 PRINT "Would you like to sell your watch ?"
3870 INPUT j$
3880 IF j$="n" THEN GO TO 3970
3890 IF FN a(o)>=7 THEN GO TO 3930
3900 PRINT "I'll give you $75 for it."
3910 LET s=s+75
3920 GO TO 3950
3930 PRINT "That's a pretty crummy watch - I'll give you $25"
3940 LET s=s+25
3950 LET o=o*2
3960 RETURN
3970 IF o/3=INT (o/3) THEN GO TO 4090
3980 PRINT "Will you part with that diamond tie tack ?"
3990 INPUT j$
4000 IF j$="n" THEN GO TO 4080
4010 IF FN a(0)>=6 THEN GO TO 4050
4020 PRINT "You are now $100 richer"
4030 LET s=s+100
4040 GO TO 4070
4050 PRINT "It's paste. $25"
4060 LET s=s+25
4070 LET o=o*3
4080 RETURN
4090 PRINT "Your wad is shot. So long sucker": FOR n=1 TO 100: NEXT n
4100 PRINT ; FLASH 1;" Would you like to play again ? "
4110 IF INKEY$="y" THEN RUN
4120 IF INKEY$="n" THEN STOP
4130 GO TO 4110
9000 FOR n=1 TO 13: READ a$
9010 FOR m=0 TO 7: READ any
9020 POKE USR a$+m,any
9030 NEXT m: NEXT n
9040 DATA "a",24,60,126,255,255,126,60,24
9050 DATA "b",102,255,255,255,255,126,60,24
9060 DATA "c",24,60,126,255,255,255,126,24
9070 DATA "d",60,60,219,255,255,219,24,24
9080 DATA "e",128,192,224,240,248,252,254,255
9090 DATA "f",1,3,7,15,31,63,127,255
9100 DATA "g",255,127,63,31,15,7,3,1
9110 DATA "h",255,254,252,248,240,224,192,128
9120 DATA "i",128,224,248,252,252,254,254,255
9130 DATA "j",1,7,31,63,63,127,127,255
9140 DATA "k",255,254,254,252,252,248,224,128
9150 DATA "l",255,127,127,63,63,31,7,1
9160 DATA "m",255,254,252,248,248,252,254,255
9170 RETURN
9998 CLEAR : SAVE "Poker" LINE 1: BEEP .4,15
9999 VERIFY ""