d * POKER.BAS ** FIVE CARD DRAW POKER PROGRAM * n * CODEWORKS MAGAZINE 3838 SOUTH WARNER ST. TACOMA WA 98409 2x * PLEASE DO NOT REMOVE THESE CREDIT LINES o * PHONES VOICE (206) 475-2219 DOWNLOAD (206) 475-2356 : Adapted for the Tandy 600 by Dave Thomas I P:SP$SP$" ":DA$DA$"-": M(X)X d: I(X)(Xd): S$(X)(SP$,X): D$(X)(DA$,X) . B(4),M(,),B$(4) T ** MAKE RANDOMIZER IF NEEDED ** t ((,,)(,,)) | A : D$( );" The CodeWorks ";D$(!) );" 5-C A R D D R A W P O K E R P R O G R A M" % );" just watch or sit in" 4 D$(P); : );"You may watch 5 players or be one. Choose 0 to watch, 1 to" );"5 to sit in. The game ends when any player goes broke." " );"There are no wild cards, a 3-card draw limit and any pair" S, );"opens. Chips are $5, $10 and $25. Bet in multiples of $5" 6 );"from $5 to $25. After the draw, if you are the opener, you" @ );"may check by betting 0. Press ENTER after the next three" (J );"questions, after that the keys will respond when pressed." .T u^ )"";:"Which position do you want to play: 0 = none or 1-5";U h U U ^ r:: )"";:"How much money will you start with";DO | );"Choose the speed of the betting/drawing action" J )"";:"on a scale of 1-10, 1 is very fast, 10 is very slow";T1 Y T1T1 v I :M(I, )DO: I :CLEAR CARDS AND ACTION : );"No one opened - ante and deal again" T T1: T :delay loop & I : M(I, ) . I u : );"Shuffle and deal....... " :15 spaces ,,:"Ante $5 " :9 spaces A A I : I, :"PLAYER";I@P : I X I : I, : M(X, ) &XX (0 I _: :MAKE DECK,SHUFFLE,DEAL, INITIALIZE FOLD. tD :ANTE UP N :SORT EACH HAND X : ); S$(() b U SH : SH l :PRINT HANDS vF1 < :FIND VALUE OF HANDS j :FIND OPENER R A1 A1:AA: :IF NO ONE OPENED [FB :ESTABLISH BET FOR OPENER n :1ST ROUND OF BETTING :UPDATE POT AND CLEAR BET BUFFERS :DISCARD AND DRAW :SHOW THE DRAW & :SORT EACH HAND ? :PRINT HANDS HF1 i < :FIND VALUE OF HANDS rFB :ESTABLISH BET OF OPENER n :2ND ROUND OF BETTING BL * :UPDATE POT AND CLEAR BET BUFFERS 4 D :FIND RELATIVE VALUE OF HANDS #>SH MH :SHOW HANDS & ELIMINATE FOLDS fR 2 :SHOW WINNER \ I :M(I,):M(I,):M(I,): I f :CLEAR CARDS AND ACTION pAA: z: ** MAKE 4 DIFFERENT SUITS WITH 13 CARDS EACH ** I 3 1B(I)IfW(I ) 9 I A: ^ ** SHUFFLE THE DECK ** gC4 v I 4 R((()C)) TB(R):B(R)B(C):B(C)T CC I : ** INITIALIZE PLAY OR FOLD FLAG AND FLUSH FLAG IN ARRAY ** ( I :M(I,):M(I,): I 0: a$ ** DEAL HANDS OF 5 CARDS TO EACH PLAYER ** j.DK x8 I B J LM(I,J)B(DK) VDKDK ` J j I t ~: ** EVERYBODY ANTE UP 5 BUCKS ** I :POTPOT:M(I, )M(I, ): I 0 :PRINT THE POT 6 >: x ** SORT EACH HAND INTO ASCENDING NUMERICAL ORDER ** I F J KJ M(M(I,J))M(M(I,K)) TM(I,J):M(I,J)M(I,K):M(I,K)T F J F I ( #2: Y< ** FIND VALUES OF HANDS EXCEPT FOR STRAIGHTS ** jF F1 n xP I Z M(I,) M(I,) M(I,) M(I,) d I n I x J KJ M(M(I,J))M(M(I,K)) VV " I(M(I,J))I(M(I,K)) SS * K 2 J r V M(I,)V : V M(I,) : V M(I,) F1 S M(I,) M(I,) S M(I,):M(I,) S:V I : ** FIND OUT IF THERE ARE STRAIGHTS OR POSSIBLES ** I , J N M(I,) M(I,) bN(J)M(M(I,J)) j" J {, F1 J 6 N()N() M(I,)::POSS STRGT LO MISSING @ N()N() M(I,)::POSS STRGT HI MISSING J N()N() M(I,) ::5 CARD STRAIGHT ^T N()N() N() N() M(I,) :AL::ACE LO STRGT t^ M(I,) hM(I,)::WE HAVE A FLUSH r AL M(I,)::ACE LO STRGT FLUSH | N()N() M(I,)::STRAIGHT FLUSH ) N()N() N() M(I,)::ROYAL FLUSH 2AL : I @ H: ** FIND ODDBALL CARD IN A FOUR-FLUSH AND REPLACE IT ** I IU M(I,) > M(I,) N M(I,) N J SSI(M(I,J)) J S S: 0 5 S S: 0 L S S: 0 T&S b0 J : I(M(I,J))S M(I,J)B(DK):DKDK:M(I,) D J NS X I b: l ** FIND 3 CARDS TO DRAW TO A PAIR AND REPLACE THEM ** )v ** OR FIND THREE TO REPLACE IN A NOTHING HAND ** 7 I G IU \ M(I,) j J M(M(I,J))M(M(I,J)) SSJ J S M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,): L S M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,): S M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,): S M(M(I,)) U (()) M(I,):BL: I S M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,): Y U zR(()): R M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,): M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,) S I *: V4 ** FIND AND REPLACE ODD CARD AT END OF A STRAIGHT ** d> I tH IU p R M(I,) p \ M(I,) M(I,)B(DK):DKDK:M(I,) f M(I,) M(I,)B(DK):DKDK:M(I,) p I z: 7 ** FIND AND REPLACE ONE CARD TO TWO PAIRS OR 4 OF KIND ** E I U IU j M(I,) M(I,) M(I,) J M(M(I,J))M(M(I,J)) SSJ J M(I,) SS ! S M(I,)B(DK):DKDK:M(I,) 5! S M(I,)B(DK):DKDK:M(I,) e! S S M(I,)B(DK):DKDK:M(I,) m!S u! I }! S ! : !$ ** FIND AND REPLACE 2 CARDS TO THREE OF KIND ** !. I !8 IU !B M(I,) "L M(I,) "V J 8"` M(M(I,J))M(M(I,J)) SSJ @"j J "t S M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,) "~ S M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,) " S M(I,)B(DK):DKDK:M(I,)B(DK):DKDK:M(I,) # S # I # # : 5# ** PRINT DISPLAY ** =# X K# I X# X,, f# J # SH : # B$(J);" "; # J # XX # I # #( : #2 ** FIND WHO HAS WHAT AND DISPLAY WINNER ** #< I $F b: : C$ $P I $$Z S:S1 2$d I G$n M(I,) f$x M(I,)S SM(I,):SSI n$ I |$ I $ M(I,)S N(I)I : N(I) $ I $ I $ M(N(I),)S1 S1M(N(I),):SSI $ I % :"PLAYER ";SS;" takes the $";POT;"POT": <% M(SS, )M(SS, )POT:POT j% ,,: S$(()::CLEAR POT HAS LINE |% S:S1:SS % T : T::delay loop % %: % ** DECLARE THE HAND * % M(I,) C$" ": &" M(I,) C$"high card ": F&, M(I,) C$"pair ": p&6 M(I,) C$"Two pair ": &@ M(I,) C$"Three of a kind ": &J M(I,) C$"Straight ": &T M(I,) C$"FLUSH ": '^ M(I,) C$"FULL House ": B'h M(I,) C$"4 OF A KIND ": l'r M(I,) C$"STRAIGHT FLUSH! ": '| M(I,) C$"ROYAL FLUSH !! ": ': ' ** MAKE SUITS AND VALUES RECOGNIZABLE ** ' IU D$" "():B$(J)D$" ": '( M(I,) D$" "(_):B$(J)D$" ": L( M(M(I,J)) D$" A": q( M(M(I,J)) D$" J": ( M(M(I,J)) D$" Q": ( M(M(I,J)) D$" K": ( M(M(I,J)) D$(M(M(I,J))): )D$" "(M(M(I,J))) )SU Q) &: : Remark this line for suit letters instead of symbols. r) I(M(I,J)) SUg: & ) I(M(I,J)) SUq: & ) I(M(I,J)) SUa: & ) I(M(I,J)) SU_ )&B$(J)D$(I(M(I,J))SU) )0 ):: 2*D ** DETERMINE RELATIVE VALUE OF SIMILAR HANDS ** :*N: k*X ** HI CARD AND FLUSH HAND DETERMINATION ** y*b I *l M(I,) *v M(I,) M(I,) * J *M(I,)M(I,)M(M(I,J))J * J +M(I,)M(I,) + I +: 4+ ** HIGH PAIR DETERMINATION ** B+ I W+ M(I,) 4 m+ M(I,) 4 {+ J + M(M(I,J))M(M(I,J)) SSJ + J + S M(I,)M(M(I,))M(M(I,))M(M(I,))M(M(I,)) -, S M(I,)M(M(I,))M(M(I,))M(M(I,))M(M(I,)) o, S M(I,)M(M(I,))M(M(I,))M(M(I,))M(M(I,)) , S M(I,)M(M(I,))M(M(I,))M(M(I,))M(M(I,)) ,* S:M(I,)M(I,) ,4 I ,> : -H ** DETERMINE HIGH HAND IN 3 OF KIND, FULL HOUSE, 4 OF KIND ** .-R I C-\ M(I,) z s-f M(I,) M(I,) M(I,) z -p M(I,)M(M(I,)) -z I - : - ** DETERMINE HIGH HAND IN TWO PAIR ** - I - S - M(I,) . M(I,) . J ;. M(M(I,J))M(M(I,J)) SSJ C. J n. M(I,)(M(M(I,)))(M(M(I,))) . S M(I,)M(I,)M(M(I,)) . S M(I,)M(I,)M(M(I,)) . S M(I,)M(I,)M(M(I,)) . I .: / ** DETERMINE HIGH STRAIGHT HAND ** */$ I ?/. M(I,) L p/8 M(I,) M(I,) M(I,) L /BM(I,)M(M(I,)) /L I /V /`: /j ** FIND DEALER AND OPENER ** /tIA:A1: I I /~ b: X,Y$:"Dealer" 0II: I I Y0 M(I,) M(I,) M(I,) M(I,) b:"Passes": |0 T T1: T::DELAY LOOP 0 M(I,) BOI: b: X,Y$: :"Opener":: 0 T T1: T::DELAY LOOP 0II: I I 1A1A1: A1 1 1: ;1 ** ESTABLISH BET FOR OPENER ** D1IBO Z1BT(()) ~1 BT BT BT 1 M(I,) BTBT 1 FB BTBT 1 IU 1( b: BT FB "Checks " : "Bets ";BT 22 BT M(BO,) P 12<BOBO: BO BO N2F M(BO,) < : c2PM(I,)M(I,)BT i2Z q2d: 2n ** THE BETTING ROUNDS ** 2x FB 2R(()) 2 R R R : 2R(()) 3 R R R R &3: T3 ** BETTING AND RAISING ROUND CONTROL ** l3FL:IBO:B1:R1 3II: I I 3 T T1: T::DELAY LOOP 3 FL 3 M(I,) FLFL: 3: 4 ** 1ST ROUND BETTING STRATEGY** 4 FB r /4HCM(M(I,))M(M(I,)) ?4 IU }4" HC M(I,) BL M(I,) B1:R1R1: 4, M(I,) B1:R1R1:R : 46 M(I,) HC BT B1: 4@ R1 M(I,) B1: -5J M(I,) BT (()) B1: <5TB1: D5^: j5h ** 2ND ROUND BETTING STRATEGY** z5r IU 5|HCM(M(I,))M(M(I,)) 5 HC M(I,) BL M(I,) B1:R1R1: 6 M(I,) (()) B1:R1R1: 76 R1 M(I,) B1:R1R1: u6 R1 M(I,) (()) B1:R1R1: 6 M(I,) B1: 6 M(I,) R1 B1: 6B1: 6: 6 ** MISC. BETTING HOUSEKEEPING CHORES ** X7 R1 R1 R$"RAISES" : R1 R1 R$"raises" : R1 R1 R$"Raise!" p7 R1 B1: 7 B1 b: R$;R:M(I,)M(I,)(BTRM(I,)):BTBTR:FL: 8 B1 b:"CALLS";BTM(I,):M(I,)M(I,)BTM(I,):FLFL: ;8 B1 b:"folds ":M(I,):FLFL: C8: ]8 ** SHOW THE DRAW ** e8&IA 80 M(I,) b:"draws ";M(I,) 8: T T1: T :DELAY LOOP 8DII: I I 8N IA 0 : 8X: 9b ** LOCATE PLAYER ON SCREEN SUBROUTINE ** (9l I X:Y. =9v I X:Y. R9 I X:Y. g9 I X:Y. }9 I X :Y. 9 X,Y,: 9 , ,:::STATUS LINE LOCATION 9 ,,:"POT HAS $";POT: 9 I : I,,: S$(@): I: :: *: ** USER BET IF OPENER ROUTINE ** P: , ,:"How much do you bet"; i:BT$"":BY$"":BX$"" :BY$: BY$"" : BY$"0" FB BT : : BY$"5" BT(BY$): :BX$: BX$"" :BT(BY$BX$): BT ; , ,: S$(() J; BT BT BT BT BT BT P;* X;4: ;> ** USER DISCARD AND DRAW SUBROUTINE ** ;H , ,:"Discard how many (0 to 3)"; ;RHM$: HM$"0" HM$"3" H ;\HM(HM$) ;f HM