10 REM 20 REM HAWKEYE GRAFIX DRAW POKER 30 REM COPYRIGHT (c) 1981 40 REM HAWKEYE GRAFIX 50 REM 23914 MOBILE 60 REM CANOGA PARK,CA.91307 70 REM (213) 348-7909 80 REM 90 CLEAR 1000 100 DIM C(9,1),P(9),WV(12) 110 VA=PEEK(&105)+256*PEEK(&106) 120 POKE VA+&7FF,12 130 PM=500:CM=500:PT=0 140 FILL 32 150 LL=80:WT=0:RG=0 160 FOR I=0 TO 22 170 READ I$ 180 VPRINT I*LL+8,I$ 190 NEXT I 200 GOSUB 12000 210 FOR I=0 TO 9:READ P(I):NEXT I 220 FOR I=0 TO 9:READ H$(I):NEXT I 230 VINPUT 23*LL+11,"Now, press 'RETURN' to start the game.";, LINE AA$ 240 FILL 32 250 BS=PEEK(&103)+256*PEEK(&104) 260 POKE BS+9,255 270 SCROLL 2*LL+34,9,44 280 DRAW 65,66,159,66,1 290 DRAW 159,65,159,38,1 300 DRAW 158,38,65,38,1 310 DRAW 65,39,65,65,1 320 FOR I=0 TO 51:DK(I)=0:NEXT I 330 FOR I2=0 TO 4 340 J=I2+5:A=P(J):GOSUB 13000:GOSUB 16000 350 J=I2:A=P(J):GOSUB 13000:GOSUB 16000 360 NEXT I2 370 FOR I2=5 TO 9 380 A=P(I2):GOSUB 14000:S=C(I2,0):D=C(I2,1):GOSUB 15000 390 NEXT I2 400 FOR I=0 TO 8:VPRINT -1,"":NEXT 410 J=0:GOSUB 11000:REM SCORE COMPUTER HAND 420 IF SH<>13 THEN 450 430 IF SR<>1 AND SR<>5 THEN 450 440 IF WV(1)=1 THEN SH=4 450 CC=INT(((10-SR)*13+SH)/13):IF CC>9 THEN CC=9 460 VPRINT -1,"The ante is five dollars." 470 IF PM>5 THEN 480 ELSE GOSUB 9000:GOTO 470 480 IF CM>5 THEN 490 ELSE GOSUB 9500:GOTO 480 490 PT=PT+10:PM=PM-5:CM=CM-5 500 GOSUB 8000 510 VPRINT -1,"It's your draw." 520 GOSUB 5000 530 GOSUB 4000 540 J=0:GOSUB 11000 550 IF SH<>13 THEN 580 560 IF SR<>1 AND SR<>5 THEN 580 570 IF WV(1)=1 THEN SH=4 580 CC=INT(((10-SR)*13+SH)/13):IF CC>9 THEN CC=9 590 GOSUB 8000 600 FOR J=0 TO 4:S=C(J,0):D=C(J,1):A=P(J):GOSUB 14000:GOSUB 15000:NEXT J 610 CR=SR:CH=SH:J=5:GOSUB 11000 620 IF CRSH THEN 3500 ELSE IF SH>CH THEN 3000 640 VPRINT -1,"Seems to be a drawn hand." 650 VPRINT -1,"The pot will ride for next hand." 660 GOTO 3040 3000 FOR I=0 TO 8:VPRINT -1,"":NEXT I 3010 VPRINT -1,"It would seem that your ";H$(SR) 3020 VPRINT -1,"beats my ";H$(CR)+"." 3030 PM=PM+PT:PT=0 3040 VINPUT -1,"Press 'RETURN' to start another game.";, LINE AA$ 3050 GOTO 6510 3500 FOR I=0 TO 8:VPRINT -1,"":NEXT I 3510 VPRINT -1,"AHA! My ";H$(CR);" kills your" 3520 VPRINT -1,H$(SR);". Better luck next time." 3530 CM=CM+PT:PT=0 3540 GOTO 3040 4000 EX=0 4010 ON SR+1 GOTO 4020,4020,4030,4020,4020,4020,4030,4030,4030,4100 4020 VPRINT -1,"I'll keep what I have, thank you.":RETURN 4030 FOR I2=0 TO 4 4040 IF WV(C(I2,1))>1 THEN 4070 4050 J=I2:GOSUB 16000 4060 EX=EX+1 4070 NEXT I2 4080 VPRINT -1,"Dealer takes";EX 4090 FOR I2=5-EX TO 4:A=P(I2):GOSUB 14000:GOSUB 13000:NEXT I2:RETURN 4100 IF RND(1)<.15 THEN 4020 4110 FOR I2=0 TO 3:IF WS(I2)>2 THEN 4130 ELSE NEXT I2 4120 GOTO 4150 4130 DS=I2:FOR I2=0 TO 4 4140 IF WS(C(I2,0))>2 THEN 4070 ELSE 4050 4150 FOR I2=0 TO 12 4160 IF WV(I2)=1 THEN EX=EX+1 ELSE EX=EX-1 4170 IF EX<0 THEN EX=0 4180 IF EX=4 THEN 4200 ELSE NEXT I2 4190 GOTO 4280 4200 FOR I2=I2+1 TO 12 4210 IF WV(I2)=1 THEN 4250 4220 NEXT I2 4230 FOR I2=0 TO 12 4240 IF WV(I2)=0 THEN NEXT I2 4250 FOR J=0 TO 4 4260 IF C(J,1)<>I2 THEN NEXT J 4270 GOSUB 16000:EX=1:GOTO 4080 4280 EX=0:FOR I2=1 TO 12 4290 IF WV(I2)=0 THEN NEXT I2 4300 FOR J=0 TO 4:IF C(J,1)<>I2 THEN NEXT J 4310 GOSUB 16000:EX=EX+1:IF EX<3 THEN NEXT I2 ELSE GOTO 4080 5000 VPRINT 23*LL,SPC(LL):FOR I=1 TO 5:VPRINT 23*LL+(I-1)*16+6,I:NEXT 5010 FOR I=1 TO 5:EX(I)=0:NEXT I:EX(0)=0 5020 A=CINP(3):IF A=13 THEN 5110 5030 A=A-&30:IF A<1 OR A>5 THEN 5020 5040 IF EX(A)=0 THEN 5080 5050 EX(A)=0:EX(0)=EX(0)-1 5060 VPRINT 23*LL+(A-1)*16+4," ";CHR$(A+&30);" " 5070 GOTO 5020 5080 EX(0)=EX(0)+1:EX(A)=1 5090 VPRINT 23*LL+(A-1)*16+4,"HELD" 5100 GOTO 5020 5110 IF EX(0)<2 THEN 5000 5120 FOR J=5 TO 9 5130 IF EX(J-4)=1 THEN 5150 5140 A=P(J):GOSUB 16000:GOSUB 14000:S=C(J,0):D=C(J,1):GOSUB 15000 5150 NEXT J 5160 VPRINT LL*23,SPC(LL) 5170 RETURN 6000 PM=PM+PT:PT=0:GOTO 6510 6500 CM=CM+PT:PT=0 6510 FOR I=0 TO 11:VPRINT LL*I,SPC(32):NEXT I 6520 FOR I=12 TO 22:VPRINT LL*I,SPC(LL):NEXT I 6530 GOTO 320 7000 GOTO 7020 7010 VPRINT -1,"The minimum bet is";MB 7020 VPRINT -1,"The pot is now at";PT 7030 VPRINT -1,"You have";PM 7040 VINPUT -1,"Enter your wager: ";,PW 7050 VPRINT -1,"" 7060 PW=INT(ABS(PW)) 7070 IF PW>PT THEN VPRINT -1,"Your wager must never exceed the pot.":GOTO 7010 7080 IF PW>PM THEN GOSUB 9000:GOTO 7010 7090 IF PW=0 THEN RETURN 7100 IF PW=MB THEN RETURN 7510 GOSUB 9500:GOTO 7500 8000 CL=0:CT=INT(CC/1.25+.5) 8010 IF CC<2 AND RND(1)>.8 THEN CC=INT(RND(1)*9):CT=4 8020 MB=0:GOSUB 7000 8030 PT=PT+PW:PM=PM-PW 8040 CL=CL+1:WG=INT(PT*CC/10+RND(1)*8):IF WG<3 THEN WG=0 8045 IF WG>PT THEN WG=PT 8050 IF PW2 THEN 8060 8054 IF PW<(PT/3) THEN 8060 8056 IF RND(1)>.8 THEN 6000 8060 MB=PW:GOSUB 7500 8070 PT=PT+PW:CM=CM-PW 8080 IF PW<>0 THEN VPRINT -1,"I'll see your";PW 8090 RETURN 8100 IF WG>CM THEN 8060 8110 IF CL>=CT THEN 8060 8120 IF PW<>0 THEN VPRINT -1,"I'll see your";PW;"and" 8130 VPRINT -1,"I'll raise you";WG-PW 8140 PT=PT+WG:CM=CM-WG 8150 MB=WG-PW:WG=WG-PW:GOSUB 7000 8160 PT=PT+PW:PM=PM-PW 8170 IF PW=WG THEN RETURN 8180 IF PW=0 THEN 6500 8190 PW=PW-WG:GOTO 8040 9000 VPRINT -1,"You can't bet what you haven't got." 9010 IF RND(1)<.2 THEN 9120 9020 IF WT<>0 THEN 9070 9030 VINPUT -1,"Will you take $75 for your watch"; LINE AA$ 9040 VPRINT -1,"" 9050 IF LEFT$(AA$,1)<>"Y" THEN 10000 9060 WT=75:PM=PM+75:CM=CM-75:RETURN 9070 IF RG<>0 THEN 10000 9080 VINPUT -1,"Will you take $100 for that ring"; LINE AA$ 9090 VPRINT -1,"" 9100 IF LEFT$(AA$,1)<>"Y" THEN 10000 9110 RG=100:PM=PM+100:CM=CM-100:RETURN 9120 IF WT<>0 THEN 9180 9130 VPRINT -1,"That's a pretty crummy watch." 9140 VINPUT -1,"Do you want to take $20 for it"; LINE AA$ 9150 VPRINT -1,"" 9160 IF LEFT$(AA$,1)<>"Y" THEN 10000 9170 WT=25:PM=PM+25:CM=CM-25:RETURN 9180 IF RG<>0 THEN 10000 9190 VPRINT -1,"I think that ring is stolen, but" 9200 VINPUT -1,"will you take $25 for it"; LINE AA$ 9210 IF LEFT$(AA$,1)<>"Y" THEN 10000 9220 RG=25:PM=PM+25:CM=CM-25:RETURN 9500 VPRINT -1,"I seem to be a little short." 9510 IF WT=0 THEN 9570 9520 VPRINT -1,"Would you like to buy back this" 9530 VINPUT -1,"fine watch for a mere $100"; LINE AA$ 9540 VPRINT -1,"" 9550 IF LEFT$(AA$,1)<>"Y" THEN 10500 9560 WT=0:CM=CM+100:PM=PM-100:RETURN 9570 IF RG=0 THEN 10500 9580 VPRINT -1,"Would you like to buy back this" 9590 VINPUT -1,"beautiful ring for $150"; LINE AA$ 9600 VPRINT -1,"" 9610 IF LEFT$(AA$,1)<>"Y" THEN 10500 9620 RG=0:CM=CM+150:PM=PM-150:RETURN 10000 FOR I=1 TO 8:VPRINT -1,"":NEXT 10010 VPRINT -1,"I cleaned you for";500-PM;"dollars," 10020 IF WT>0 THEN VPRINT -1,"I got your watch," 10030 IF RG>0 THEN VPRINT -1,"I got your wedding ring," 10040 VPRINT -1,"and it wasn't even difficult." 10050 VPRINT -1,"Don't let the door hit you on the way out." 10060 END 10500 FOR I=1 TO 8:VPRINT -1,"":NEXT 10510 VPRINT -1,"Well, OK. You won one, this time." 10520 IF WT<>0 THEN VPRINT -1,"But I have your watch." 10530 IF RG<>0 THEN VPRINT -1,"And good luck getting home without" 10540 IF RG<>0 THEN VPRINT -1,"your wedding ring, turkey!" 10550 END 11000 REM COMPUTE SCORE OF HAND (SR) 11010 FOR I=0 TO 3 11020 WS(I)=0 11030 NEXT 11040 FOR I=0 TO 12 11050 WV(I)=0 11060 NEXT 11070 SR=9:REM START WITH NOTHING 11080 FL=0 11090 ST=0 11100 FOR I=J TO J+4 11110 WS(C(I,0))=WS(C(I,0))+1 11120 WV(C(I,1))=WV(C(I,1))+1 11130 NEXT 11140 REM SET FLAG IF FLUSH IS PRESENT 11150 FOR I=0 TO 3 11160 IF WS(I)=5 THEN FL=1 11170 NEXT 11180 REM SET FLAG IF STRAIGHT IS PRESENT 11190 FOR I=0 TO 12 11200 IF WV(I)=1 THEN ST=ST+1 11210 IF ST=5 THEN 11250 11220 IF WV(I)=0 THEN ST=0 11230 NEXT 11240 IF ST=4 AND WV(0)=1 THEN ST=5 ELSE IF ST<>5 THEN ST=0 11250 SC=0 11260 FOR I=0 TO 12 11270 IF WV(I)>=SC THEN SC=WV(I):SH=I 11280 NEXT I 11290 IF WV(SH)=WV(0) THEN SH=13 11300 IF ST=5 AND FL=1 AND WV(0)=1 AND WV(1)=0 THEN SR=0:RETURN :REM ROYAL FLUSH 11310 IF ST=5 AND FL=1 THEN SR=1:RETURN :REM STRAIGHT FLUSH 11320 G3=0 11330 G2=0 11340 FOR I=0 TO 12 11350 IF WV(I)=4 THEN SR=2:RETURN :REM FOUR OF A KIND 11360 IF WV(I)=3 THEN G3=1 11370 IF WV(I)=2 THEN G2=G2+1 11380 NEXT I 11390 IF G3=1 AND G2=1 THEN SR=3:RETURN :REM FULL HOUSE 11400 IF FL=1 THEN SR=4:RETURN :REM FLUSH 11410 IF ST=5 THEN SR=5:RETURN :REM STRAIGHT 11420 IF G3=1 THEN SR=6:RETURN :REM THREE OF A KIND 11430 IF G2=2 THEN SR=7:RETURN :REM TWO PAIRS 11440 IF G2=1 THEN SR=8:RETURN :REM ONE PAIR 11450 SR=9:RETURN :REM NOTHING 12000 REM BUILD ARRAYS TO DISPLAY CARDS 12010 GOTO 12120 12020 REM LL IS VIDEO LINE LENGTH 12030 REM P$ IS PICTURE OF SUIT 12040 REM V$ IS ASCII VALUE 12050 REM DK IS CARD USED ARRAY 12060 REM PS IS PIP POSITION ARRAY 12070 REM SP IS SPOT REQUIRED ARRAY 12080 REM PC$ IS PICTURE CARD DATA 12090 REM TL$ IS TOP LINE OF CARD OUTLINE 12100 REM M1$, M2$ AND M3$ ARE MIDDLE LINE OF CARD OUTLINE 12110 REM BL$ IS BOTTOM LINE OF CARD OUTLINE 12120 DIM P$(3),V$(12),DK(51),PS(15),SP(12,9),PC$(2,6) 12130 FOR I=0 TO 3:READ P:P$(I)=CHR$(P):READ P:P$(I)=P$(I)+CHR$(P):NEXT I 12140 TL$=CHR$(&F3):M1$=CHR$(&F5):M2$=CHR$(&F5):M3$=CHR$(&F5):BL$=CHR$(&F6) 12150 FOR I=1 TO 12:TL$=TL$+CHR$(&FA):M1$=M1$+CHR$(&95) 12160 M2$=M2$+CHR$(&AA):M3$=M3$+CHR$(&20):BL$=BL$+CHR$(&FA):NEXT I 12170 TL$=TL$+CHR$(&F9):M1$=M1$+CHR$(&F5):M2$=M2$+CHR$(&F5) 12180 M3$=M3$+CHR$(&F5):BL$=BL$+CHR$(&FC) 12190 FOR I=0 TO 12:READ V$(I):NEXT I 12200 FOR I=1 TO 15:READ L,S:PS(I)=LL*L+S:NEXT I 12210 FOR I=0 TO 9:FOR J=0 TO I:READ SP(I,J):NEXT J,I 12220 FOR I=0 TO 2:FOR J=0 TO 6:FOR K=0 TO 7:READ D 12230 PC$(I,J)=PC$(I,J)+CHR$(D):NEXT K,J,I 12240 RETURN 13000 VPRINT A,TL$:REM DRAW CARD (BACK SIDE) 13010 FOR I=1 TO 8 STEP 2:VPRINT A+LL*I,M1$:VPRINT A+LL*I+LL,M2$:NEXT I 13020 VPRINT A+9*LL,M1$:VPRINT A+10*LL,BL$:RETURN 14000 VPRINT A,TL$:REM DRAW BLANK CARD 14010 FOR I=1 TO 9:VPRINT A+LL*I,M3$:NEXT I 14020 VPRINT A+10*LL,BL$:RETURN 15000 VPRINT A+LL+1,V$(D):REM DRAW CARD 15010 VPRINT A+9*LL+11,V$(D) 15020 IF D>9 THEN 15050 15030 FOR II=0 TO D:IF SP(D,II)=0 THEN RETURN 15040 VPRINT A+2*LL+1+PS(SP(D,II)),P$(S):NEXT II:RETURN 15050 VPRINT A+2*LL+1,P$(S):VPRINT A+8*LL+11,P$(S) 15060 FOR II=0 TO 6:VPRINT A+(II+2)*LL+3,PC$(D-10,II):NEXT II:RETURN 16000 C(J,0)=INT(RND(1)*4):REM DEAL A CARD 16010 C(J,1)=INT(RND(1)*13):KY=C(J,0)*13+C(J,1) 16020 IF DK(KY)<>0 THEN 16000 ELSE DK(KY)=1 16030 RETURN 17000 DATA " Welcome to HAWKEYE GRAFIX Crafty Computer Casino (c) 1981." 17010 DATA " This is a straight poker game, with a three card draw and" 17020 DATA "table stakes, with no wild cards." 17030 DATA " Three card draw poker means you may exchange up to three" 17040 DATA "cards, but no more than three. Of course, you may elect to" 17050 DATA "keep all five of your original cards if you like them (or" 17060 DATA "you believe in running a good bluff)." 17070 DATA " Table stakes means you may never raise more than the current" 17080 DATA "value of the pot. The minimum bet is one dollar, and you must" 17090 DATA "always bet in increments of one dollar. To fold your hand, you" 17100 DATA "just bet zero in response to my bet. To check, bet zero. If I" 17110 DATA "want to bet, I'll let you know. To see my bet, just match it" 17120 DATA "by betting the same amount. When it is time for you to place" 17130 DATA "a bet, the cursor will appear in the window." 17140 DATA " When it is time for you to draw cards, the numbers will appear" 17150 DATA "below the cards. Press the number keys of the cards you wish to" 17160 DATA "hold. If you press more than three, they will all reset, and you" 17170 DATA "can try again. When you press 'RETURN', the cards will be" 17180 DATA "exchanged, and you will see my cards change." 17190 DATA " If something happens that I don't understand, I'll send a" 17200 DATA "message to you in the window on the screen, and the cursor will" 17210 DATA "appear at the end of it. Just press 'RETURN' to continue the" 17220 DATA "game." 17240 REM LEFT AND RIGHT HALVES OF PIPS 17250 DATA &E4,&E5,&E6,&E7,&E8,&E9,&EA,&EB 17260 REM ASCII CARD INDEXES 17270 DATA "A","2","3","4","5","6","7","8","9","10","J","Q","K" 17280 REM ADDRESSES OF PIPS, LINE AND CHARACTER POSITION 17290 DATA 0,2,0,5,0,8,1,5,2,2,2,8,3,2,3,5,3,8,4,2,4,8,5,5,6,2,6,5,6,8 17300 REM INDEX OF PIPS TO PRINT FOR EACH CARD 17310 DATA 8 17320 DATA 4,12 17330 DATA 2,8,14 17340 DATA 1,3,13,15 17350 DATA 1,3,8,13,15 17360 DATA 1,3,7,9,13,15 17370 DATA 1,3,4,7,9,13,15 17380 DATA 1,3,4,7,9,12,13,15 17390 DATA 1,3,5,6,8,10,11,13,15 17400 DATA 1,3,4,5,6,10,11,12,13,15 17410 REM PICTURE CARD DATA FIELDS 17420 DATA 181,164,167,164,164,188,164,174 17430 DATA 128,188,164,164,164,183,191,136 17440 DATA 128,184,166,145,150,160,167,191 17450 DATA 128,177,129,132,129,128,143,191 17460 DATA 128,132,153,172,161,139,168,166 17470 DATA 172,154,137,132,160,137,147,165 17480 DATA 132,177,137,189,175,137,142,160 17490 DATA 128,128,139,191,191,191,191,153 17500 DATA 128,128,188,161,136,129,172,191 17510 DATA 128,128,135,128,130,128,128,167 17520 DATA 128,128,128,177,164,161,148,128 17530 DATA 128,133,145,137,173,169,137,149 17540 DATA 128,130,170,170,170,170,170,170 17550 DATA 128,132,149,157,157,157,157,148 17560 DATA 162,159,153,159,187,139,187,148 17570 DATA 128,156,137,136,129,137,163,128 17580 DATA 134,187,128,130,144,128,159,176 17590 DATA 128,191,157,173,173,171,191,128 17600 DATA 153,183,191,191,191,191,190,139 17610 DATA 174,187,174,183,190,181,159,181 17620 DATA 157,149,183,153,139,190,170,171 17630 REM VIDEO ADDRESSES OF CARDS 17640 DATA 80,84,88,92,96,960,976,992,1008,1024 17650 REM ASCII HAND NAMES 17660 DATA "royal flush","straight flush","four of a kind","full house" 17670 DATA "flush","straight","three of a kind","two pairs","pair","nothing" 65500 GOTO 3000,3500,4000,5000,6000,6500,7000,7500,8000,9000,9500,10000,10500,11000,12000,13000,14000,15000,16000,17000