Poker

GW-Basic, utilisé par PC-Basic

Programme avec Texte Seulement

PC-BASIC

POKER.BAS

Le jeu de cartes moderne du poker a ses racines dans les bateaux fluviaux du Mississippi du XIXe siècle. Mais sa popularité nationale a vraiment décollé dans les années 1970, juste au moment où les World Series of Poker (WSOP) ont commencé.

Au tournant du siècle dernier, les gens jouaient au poker en ligne (à la fois pour de l'argent réel et virtuel), et regardaient des tournois à la télévision mettant en vedette des personnages plus grands que nature comme Chris Moneymaker, qui a remporté les WSOP en 2003, et Doyle Brunson, l'ancêtre de la variante la plus jouée du poker aujourd'hui, le Texas Hold'em.

POKER.BAS vous présente une version simplifiée du jeu de no-limit hold'em : la seule option est le jeu en tête-à-tête (un contre un) contre l'ordinateur.

On vous demande une bankroll de départ - que votre adversaire informatique reçoit à son tour - puis on vous présente vos cartes fermées (une paire de cartes de départ, dont il y a 169 ensembles différents significatifs - c'est-à-dire treize rangs de cartes uniques multipliés par treize rangs de cartes) et une foule d'options.

Souhaitez-vous parier, vous coucher, voir plus d'informations (comme les fonds et les cartes fermées), ou simplement encaisser vos jetons et rebondir? Vos choix pourraient vous mener à des millions ou vous pourriez vous faire éliminer. (Virtuellement, bien sûr.)

Vous devriez noter les différences règles entre POKER.BAS et un vrai jeu de heads-up de hold'em. Dans le programme, les cinq cartes communes sont montrées en même temps, plutôt que de révéler successivement le flop, le tournant et la rivière ; ainsi, vous ne pouvez miser au maximum que deux fois au cours de chaque main. Mais vous pouvez parier la totalité de votre bankroll à tout moment, c'est donc du poker sans limite.

Les grosses blindes et les petites blindes sont écartées au profit d'un droit d'entrée uniforme de cinquante dollars dans chaque pot, sans possibilité de simplement se coucher avant de payer, et vous miserez toujours avant que l'ordinateur ne le fasse.

De plus, l'ordinateur, comme vous le verrez, parie sur chaque main d'une manière très simpliste. Enfin, considérez cette liste de toutes les forces de la main, classées du plus bas au plus élevé :

• HIGH CARD — le joueur avec la carte la mieux classée gagne ; par exemple, un sept de cœur bat un six de trèfle

• ONE PAIR—le joueur avec la paire la mieux classée gagne ; par exemple, une paire de rois surmonte une paire de valets

• TWO PAIR—le joueur avec la plus élevée des deux paires de cartes classées gagne ; ainsi une paire de rois et de huit bat une paire de reines et de cinq

• THREE OF A KIND—le joueur avec la plus haute des trois cartes du même rang, ainsi que deux cartes de rang inégalé, gagne; par exemple, trois Quatres en tête et trois deux

• STRAIGHT — le joueur avec le rang le plus élevé de cinq cartes de rang séquentiel gagne; par exemple, un sept-six-cinq-quatre-trois bat un six-cinq-quatre-trois-deux

• FLUSH—le joueur avec le rang le plus élevé des cinq cartes de la même couleur gagne ; ainsi, un ensemble de cinq piques, avec un roi comme rang le plus élevé, surmonte un ensemble de cinq carreaux, avec un valet comme rang le plus élevé

• FULL HOUSE—le joueur avec la plus haute des trois cartes du même rang, et deux d'un autre rang, gagne

• FOUR OF A KIND—le joueur avec le plus de quatre cartes du même rang gagne

• STRAIGHT FLUSH—joueur avec cinq cartes toutes de la même couleur et de rangs successifs

• ROYAL FLUSH—le joueur avec un as, un roi, une reine, un valet et un dix, tous de la même couleur, gagne. (Ceci est un sous-ensemble de la quinte flush.)

Il y a

possibles mains de poker à cinq cartes. Une autre façon de voir les choses: il y a environ 2,6 millions d'ensembles uniques possibles de cinq cartes dans un jeu standard.

Les nombres dans le grand ensemble de parenthèses ci-dessus sont lus comme "cinquante-deux choisissent cinq"; la notation est une base du domaine mathématique de la combinatoire, qui étudie les problèmes de comptage.

Ainsi, alors qu'il n'y a que quatre quinte flush royales possibles, il y a 123 552 combinaisons possibles de deux paires, par exemple.

Le programme POKER.BAS reconnaît la plupart des forces des mains, mais pas toutes. Vous devriez déjà flairer quelques défis (significatifs) à venir; comme toujours, les défis sont énumérés à la fin de la page.

En raison à la fois de la longueur et de la complexité du programme, il est préférable de l'examiner un morceau de code à la fois.

Tout d'abord, configurons l'affichage en définissant plusieurs tableaux, y compris un tableau de chaînes de types de mains appelé TYPE$. Veillez, surtout, à noter les numéros attribués à chaque main (ligne 12,13,14).

10 KEY OFF:RANDOMIZE TIMER:SCREEN 9:CLS
11 DIM HP1(10):DIM HP2(19):DIM TYPE$(10)
12 TYPE$(1)="ROYAL FLUSH":TYPE$(2)="STRAIGHT FLUSH":TYPE$(3)="FOUR-OF-A-KIND"
13 TYPE$(4)="FULL HOUSE":TYPE$(5)="FLUSH":TYPE$(6)="STRAIGHT":TYPE$(7)="THREE-OF-A-KIND"
14 TYPE$(8)="TWO PAIR":TYPE$(9)="ONE PAIR":TYPE$(10)="HIGH CARD (NO PAIR)"

Avec les mains mises, nous devons étiqueter chaque carte du jeu. Le tableau de chaînes CARD$ a deux arguments, le premier indiquant le rang et le second la couleur.

15 'DEFINE CARD FACES AND SUITS
20 DIM CARD$(13,4)
30 CARD$(1,1)="DEUCE OF SPADES":CARD$(2,1)="HTREY OF SPADES":CARD$(3,1)="FOUR OF SPADES"
31 CARD$(4,1)="FIVE OF SPADES":CARD$(5,1)="SIX OF SPADES":CARD$(6,1)="SEVEN OF SPADES"
32 CARD$(7,1)="EIGHT OF SPADES":CARD$(8,1)="NINE OF SPADES"
35 CARD$(9,1)="TEN OF SPADES":CARD$(10,1)="DACK OF SPADES":CARD$(11,1)="QUEEN OF SPADES"
36 CARD$(12,1)="KING OF SPADES" :CARD$(13,1)="ACE OF SPADES"
40 CARD$(1,2)="DEUCE OF HEARTS":CARD$(2,2)="TREY OF HEARTS":CARD$(3,2)="FOUR OF HEARTS"
42 CARD$(4,2)="FIVE OF HEARTS":CARD$(5,2)="SIX OF HEARTS":CARD$(6,2)="SEVEN OF HEARTS"
43 CARD$(7,2)="EIGHT OF HEARTS":CARD$(8,2)="NINE OF HEARTS"
45 CARD$(9,2)="TEN OF HEARTS":CARD$(10,2)="JACK OF HEARTS":CARD$(11,2)="QUEEN OF HEARTS"
46 CARD$(12,2)="KING OF HEARTS":CARD$(13,2)="MACE OF HEARTS"
50 CARD$(1,3)="DEUCE OF DIAMONDS":CARD$(2,3)="TREY OF DIAMONDS":CARD$(3,3)="FOUR OF DIAMONDS"
51 CARD$(4,3)="FIVE OF DIAMONDS":CARD$(5,3)="SIX OF DIAMONDS":CARD$(6,3)="SEVEN OF DIAMONDS"
53 CARD$(7,3)="EIGHT OF DIAMONDS":CARD$(8,3)="NINE OF DIAMONDS"
55 CARD$(9,3)="TEN OF DIAMONDS":CARD$(10,3)="JACK OF DIAMONDS":CARD$(11,3)="QUEEN OF DIAMONDS"
57 CARD$(12,3)="KING OF DIAMONDS":CARD$(13,3)="ACE OF DIAMONDS"
60 CARD$(1,4)="DEUCE OF CLUBS":CARD$(2,4)="TREY OF CLUBS":CARD$(3,4)="FOUR OF CLUBS"
62 CARD$(4,4)="FIVE OF CLUBS":CARD$(5,4)="SIX OF CLUBS":CARD$(6,4)="SEVEN OF CLUBS"
64 CARD$(7,4)="EIGHT OF CLUBS":CARD$(8,4)="NINE OF CLUBS"
65 CARD$(9,4)="TEN OF CLUBS"
66 CARD$(10,4)="JACK OF CLUBS":CARD$(11,4)="QUEEN OF CLUBS":CARD$(12,4)="HKING OF CLUBS"
68 CARD$(13,4)="ACE OF CLUBS"

Ensuite, un titre à l'écran s'affiche, et le joueur est interrogé sur une bankroll de départ, ne dépassant pas dix mille dollars (notez qu'au lieu de traiter différentes dénominations de jetons, un bankroll en espèces générique est utilisée pour des raisons de simplicité). L'ordinateur et le joueur commencent avec un montant égal d'argent.

80 COLOR 15,0:LOCATE 12,20:PRINT" NO LIMIT TEXAS HOLD'EM: HEADS-UP EDITION"
85 FOR PAUSE=1 TO 600:NEXT PAUSE
90 CLS
95 LOCATE 14,20:INPUT "STARTING BANKROLL ($100 TO $10,000)";YOURBANK
100 IF YOURBANK<100 OR YOURBANK>10000 THEN 90
105 COMPBANK=YOURBANK 'BOTH COMPUTER AND YOU ARE ASSIGNED THE SAME STARTING BANKROLL

Maintenant, nous mélangeons et distribuons les cartes fermées au joueur et à l'ordinateur (hors écran, bien sûr). Toutes les variables pertinentes sont réinitialisées et les cartes sont distribuées. De plus, un montant égal d'argent de chaque bankroll est acheté pour construire le pot de cent dollars.

110 '-------------
115 DIM DEALT(13,4)
200 'DISTRIBUTE HOLE CARDS--NEW HAND
206 'RESET DEALT HAND (SHUFFLE UP AND DEAL)
207 FOR A=1 TO 4:FOR B=1 TO 13:DEALT(B,A)=0:NEXT B:NEXT A
210 NEWHAND=0 'THIS IS A NEW HAND!
215 FOR HOLECARDS=1 TO 4
220 FACE=INT(1+13*RND(1)):SUIT=INT(1+4*RND(1))
230 IF DEALT(FACE,SUIT)<>0 THEN 220
240 DEALT(FACE,SUIT)=HOLECARDS
245 'TELLS WHICH PLAYER HAS WHAT HOLE CARDS (YOU=1 AND 2, THE COMPUTER HAS 3 AND 4)
250 NEXT HOLECARDS
260 'TAKE $50 FROM EACH PLAYER TO START THE POT WITH
270 POTAMOUNT=100:YOURBANK=YOURBANK-50:COMPBANK=COMPBANK-50

Une sous-routine conçue pour imprimer les cartes fermées du joueur est appelée avant d'afficher le menu principal. GW-BASIC attend que vous entriez une option de menu, et une sous-routine (ou des sous-routines) est appelée pour exécuter l'option que vous avez sélectionnée.

300 GOSUB 1000 'START GAME WITH HOLE CARDS AUTOMATICALLY SHOWN
310 PRINT:PRINT "Menu:":PRINT "1.See Hole Cards, 2.See the Bankrolls, 3.Make a bet, 4.Fold Your Hand"
315 PRINT "5.Check Pot Amount, 6.Cash Your Chips and Exit"
320 INPUT "TYPE THE NUMBER AND YOUR CHOICE, AND HIT <ENTER>";CHOICE
325 IF CHOICE=1 THEN GOSUB 1000
327 IF CHOICE=2 THEN PRINT "You have $";YOURBANK;"and the computer has $ ";COMPBANK;"."
334 IF CHOICE=3 THEN GOSUB 9600:GOSUB 9800
335 IF CHOICE=4 THEN GOTO 9500
337 IF CHOICE=5 THEN PRINT "The Pot has $";POTAMOUNT
339 IF CHOICE=6 THEN PRINT" YOU just cashed out. Hope you enjoyed the garne!":END
400 IF NEWHAND=1 THEN GOTO 200 ELSE GOTO 310

Un algorithme pour afficher les cartes fermées du joueur utilise plusieurs boucles FOR/NEXT; l'instruction RETURN, bien sûr, renvoie le programme à l'endroit où le sous-programme a été appelé.

1000 'SUBROUTINE PRINTS OUT PLAYER 1'S HOLE CARDS
1010 PRINT
1020 PRINT "YOUR HOLE CARDS ARE ":PRINT "*******************"
1030 FOR SEARCHS=1 TO 4:FOR SEARCHF=1 TO 13
1040 IF (DEALT(SEARCHF,SEARCHS)=1 OR DEALT(SEARCHF,SEARCHS)=2) THEN PRINT CARD$(SEARCHF,SEARCHS)
1050 NEXT SEARCHF:NEXT SEARCHS
1060 PRINT "*******************"
1100 RETURN

Les cinq cartes communes - le flop (trois cartes), le tournant (une carte) et la rivière (une carte) - sont sélectionnées au hasard. Notez les commentaires ci-dessous : le flop est indiqué par les éléments du tableau DEALT 10, 11 et 12, tandis que le tournant est attribué à 20 et la rivière à 30.

2000 'SUBROUTINE PICKS THE FLOP, TURN, AND THE RIVER
2010 FOR FLOP=1 TO 3
2020 FACE=INT(1*13*RND(1)):SUIT=INT(1+4*RND(1))
2030 IF DEALT(FACE,SUIT)<>0 THEN 2020
2040 DEALT(FACE,SUIT)=9+FLOP 'FLOP CARDS DENOTED BY DEALT=10, 11 AND 12
2050 NEXT FLOP
2060 FOR TURN=1 TO 1
2070 FACE=INT(1+13*RND(1)) :SUIT=INT(1+4*RND(1))
2080 IF DEALT(FACE,SUIT)<>0 THEN 2060
2090 DEALT(FACE,SUIT)=20 'TURN CARD DENOTED BY DEALT=20
2100 NEXT TURN
2110 FOR RIVER=1TO 1
2120 FACE=INT(1+13*RND(1)):SUIT=INT(1+4*RND(1))
2130 IF DEALT(FACE,SUIT)<>0 THEN 2110
2140 DEALT(FACE,SUSUIT)=30 'RIVER CARD DENOTED BY DEALT=30
2150 NEXT RIVER
2200 RETURN

C'est là que se trouvent la viande et les pommes de terre du programme. Il existe deux défis importants lors de la simulation d'un jeu comme le poker : coder les règles et créer l'IA (intelligence artificielle) du ou des adversaires informatisés. Beaucoup d'encre est sur le point de couler sur le premier.

Tout d'abord, notez attentivement la façon dont les variables, "définies" (je veux dire dans le sens le plus lâche possible; après tout, il s'agit de GW-BASIC de style libre) dans les lignes 3015 à 3026, se voient attribuer des valeurs par la suite.

Ces variables particulières sont définies pour être égales aux rangs et aux couleurs des cartes du joueur (PI), de l'ordinateur (P2) et des cartes communes, et toutes seront utilisées pour des comparaisons conditionnelles plus tard.

3000 'SUBROUTINE-FINDS WHICH PLAYER HAS THE BEST FIVE-CARD HAND
3010 'THROUGH EACH SEARCH, ONE OF THE TWO PLAYERS WILL BE IN THE LEAD
3015 PISCORE=0:P2SCORE=0
3020 P1FACE1=0:P1FACE2=0:P1SUIT1=0:P1SUIT2=0
3025 P2FACE1=0:P2FACE2=0:P2SUIT1=0:P2SUIT2=0
3026 F1FACE=0:F1SUIT=0:F2FACE=0:F2SUIT=0:F3FACE=0: F3SUIT=0:TFACE=0:TSUIT=0:RFACE=0:RSUIT=0
3030 FOR SEARCHS=1 TO 4:FOR SEARCHF=1 TO 13
3040 IF DEALT(SEARCHF,SEARCHS)=1 THEN P1FACE1=SEARCHF:P1SUIT1=SEARCHS
3050 IF DEALT(SEARCHF,SEARCHS)=2 THEN P1FACE2=SEARCHF:P1SUIT2=SEARCHS
3060 IF DEALT(SEARCHF,SEARCHS)=3 THEN P2FACE1=SEARCHF:P2SUIT1=SEARCHS
3070 IF DEALT(SEARCHF,SEARCHS)=4 THEN P2FACE2=SEARCHF:P2SUIT2=SEARCHS
3080 IF DEALT(SEARCHF,SEARCHS)=10 THEN F1FACE=SEARCHF:F1SUIT=SEARCHS
3090 IF DEALT(SEARCHF,SEARCHS)=11 THEN F2FACE=SEARCHF:F2SUIT=SEARCHS
3100 IF DEALT(SEARCHF,SEARCHS)=12 THEN F3FACE=SEARCHF:F3SUIT=SEARCHS
3110 IF DEALT(SEARCHF,SEARCHS)=20 THEN TFACE=SEARCHF:TSUIT=SEARCHS
3120 IF DEALT(SEARCHF,SEARCHS)=30 THEN RFACE=SEARCHF:RSUIT=SEARCHS
3130 NEXT SEARCHF:NEXT SEARCHS

La comparaison initiale: déterminer qui a la carte fermée la plus élevée, le joueur ou l'ordinateur. HP1(10) et HP2(10) sont les éléments de tableau affectés à la carte fermée; le sous-programme définit l'élément de tableau de carte fermée supérieur correspondant à 1.

3140 'NOW THAT THE CARDS HAVE BEEN ASSIGNED VARIABLES, LET'S SEE WHO HAS THE BEST HAND
3150 FOR Q=1 TO 10
3155 HP1(Q)=0:HP2(Q)=0
3160 NEXT Q
3200 'SEARCH #1: THE HIGHER HOLE CARD
3210 IF (P1FACE1>P2FACE1 AND P1FACE1>P2FACE2) THEN HP1(10)=1:GOTO 3300
3220 IF (P1FACE2>P2FACE1 AND P1FACE2>P2FACE2) THEN HP1(10)=1:GOTO 3300
3230 IF (P2FACE1>P1FACE1 AND P2FACE1>P1FACE2) THEN HP2(10)=1:GOTO 3300
3240 IF (P2FACE2>P1FACE1 AND P2FACE2>P1FACE2) THEN HP2(10)=1:GOTO 3300

Ensuite, les paires de cartes sont comptabilisées. Il y a

= 1 098 240 paires simples de cartes d'une main de cinq cartes, mais nous n'avons pas besoin de vérifier chaque paire unique sur le tableau; cela prendrait trop de temps de traitement informatique en plus d'être un cauchemar de codage.

Au lieu de cela, nous devons voir si les ensembles de deux cartes sont égaux en rang. Par exemple, les cartes fermées du joueur ont-elles le même rang ? Qu'en est-il de l'une des cartes fermées du joueur, ainsi que de l'une des cartes communes ? Correspondent-elles au rang ?

Tout au plus, le joueur (ou l'ordinateur) peut accrocher deux paires. Toutes les combinaisons possibles de paires doivent être recherchées - la force brute est à l'ordre du jour, quelle que soit la manière dont vous optimisez la recherche.

Néanmoins, notez que seules les paires impliquant des cartes fermées sont comptabilisées ci-dessous, dont il n'y a que onze combinaisons par joueur ; il vous reste plus de possibilités de coder.

 Le programme tient un décompte des paires de cartes avec deux compteurs : COMPPAIR et YOURPAIR. Si le joueur (ou l'ordinateur) finit par avoir plus d'une paire, le huitième élément du tableau HP est mis à 1. Les cartes de l'ordinateur sont examinées en premier.

3300 'SEARCH #2: THE HIGHER PAIR (OR PAIRS)
3310 'SEE IF THE COMPUTER HAS AT LEAST ONE PAIR
3315 COMPPAIR=0 'A COUNTER TO TELL HOW MANY PAIRS THE COMPUTER HAS
3320 IF (P2FACE1=P2FACE2) THEN COMPPAIR=COMPPAIR+1:HP2(9)=P2FACE2
3330 IF (P2FACE1=F1FACE) THEN COMPPAIR=COMPPAIR+1:HP2(9)=F1FACE
3340 IF (P2FACE1=F2FACE) THEN COMPPAIR=COMPPAIR+1:HP2(9)=F2FACE
3345 IF (P2FACE1=F3FACE) THEN COMPPAIR=COMPPAIR+1:HP2(9)=F3FACE
3350 IF (P2FACE1=TFACE) THEN COMPPAIR=COMPPAIR+1:HP2(9)=TFACE
3360 IF (P2FACE1=RFACE) THEN COMPPAIR=COMPPAIR+1:HP2(9)=RFACE
3370 IF (P2FACE2=F1FACE) THEN COMPPAIR=COMPPAIR+1:HP2(9)=F1FACE
3380 IF (P2FACE2=F2FACE) THEN COMPPAIR=COMPPAIR+1:HP2(9)=F2FACE
3385 IF (P2FACE2=F3FACE) THEN COMPPAIR=COMPPAIR+1:HP2(9)=F3FACE
3390 IF (P2FACE2=TFACE) THEN COMPPAIR=COMPPAIR+1:HP2(9)=TFACE
3400 IF (P2FACE2=RFACE) THEN COMPPAIR=COMPPAIR+1:HP2(9)=RFACE
3410 IF COMPPAIR>1 THEN HP2(8)=1 'CHECK TO SEE IF THE COMPUTER HAD >1 PAIR
3415 'SEE IF YOU HAVE AT LEAST ONE PAIR
3420 YOURPAIR=0 'A COUNTER TO TELL HOW MANY PAIRS YOUR HAVE
3430 IF (P1FACE1=P1FACE2) THEN YOURPAIR=YOURPAIR+1:HP1(9)=P1FACE2
3440 IF (P1FACE1=F1FACE) THEN YOURPAIR=YOURPAIR+1:HP1(9)=F1FACE
3450 IF (P1FACE1=F2FACE) THEN YOURPAIR=YOURPAIR+1:HP1(9)=F2FACE
3455 IF (P1FACE1=F3FACE) THEN YOURPAIR=YOURPAIR+1:HP1(9)=F3FACE
3460 IF (P1FACE1=TFACE) THEN YOURPAIR=YOURPAIR+1:HP1(9)=TFACE
3470 IF (P1FACE1=RFACE) THEN YOURPAIR=YOURPAIR+1:HP1(9)=RFACE
3480 IF (P1FACE2=F1FACE) THEN YOURPAIR=YOURPAIR+1:HP1(9)=F1FACE
3490 IF (P1FACE2=F2FACE) THEN YOURPAIR=YOURPAIR+1:HP1(9)=F2FACE
3495 IF (P1FACE2=F3FACE) THEN YOURPAIR=YOURPAIR+1:HP1(9)=F3FACE
3500 IF (P1FACE2=TFACE) THEN YOURPAIR=YOURPAIR+1:HP1(9)=TFACE
3510 IF (P1FACE2=RFACE) THEN YOURPAIR=YOURPAIR+1:HP1(9)=RFACE
3520 IF YOURPAIR>1 THEN HP1(8)=1 'CHECK TO SEE IF YOU HAD >1 PAIR

De manière analogue à la recherche de paires, la comptabilisation de trois cartes du même rang (avec deux autres cartes non appariées) est un travail fastidieux. Bien qu'il y ait

= 54 912 brelans possibles mains dans une main de cinq cartes, chaque main unique n'a pas besoin d'être recherchée - bien que presque tous les ensembles possibles de trois cartes doivent être vérifiés (les exceptions incluent les ensembles de trois cartes correspondant aux rangs des cinq cartes communes, ce qui profite le lecteur et l'ordinateur de manière égale).

Si une correspondance est trouvée, la variable P1STATUS ou P2STATUS est définie sur une certaine valeur pour le joueur et l'ordinateur, respectivement, pour servir plus tard de tremplin pour la recherche de full house. Les cartes du joueur sont d'abord examinées par l'algorithme.

3600 'SEARCH #3: THREE-OF-A-KIND
3605 'CHECK TO SEE IF YOU HAVE THREE-OF-A-KIND (ALSO SET IT UP FOR LATER CHECKING FULL HOUSE)
3607 P1STATUS=0 'FOR CHECKING IF YOU HAVE A FULL HOUSE...LATER
3610 IF (P1FACE1=P1FACE2) AND (P1FACE2=F1FACE) THEN HP1(7)=F1FACE:P1STATUS=1
3620 IF (P1FACE1=P1FACE2) AND (P1FACE2=F2FACE) THEN HP1(7)=F2FACE:P1STATUS=2
3630 IF (P1FACE1=PXFACE2) AND (P1FACE2=F3FACE) THEN HP1(7)=F3FACE:P1STATUS=3
3640 IF (P1FACE1=P1FACE2) AND (P1FACE2=TFACE) THEN HP1(7)=TFACE:P1STATUS=4
3650 IF (P1FACE1=P1FACE2) AND (P1FACE2=RFACE) THEN HP1(7)=RFACE:P1STATUS=5
3660 IF (P1FACE1=F1FACE) AND (P1FACE1=TFACE) THEN HP1(7)=TFACE:P1STATUS=8
3670 IF (P1FACE1=F1FACE) AND (P1FACE1=RFACE) THEN HP1(7)=RFACE:PXSTATUS=9
3680 IF (P1FACE1=F2FACE) AND (P1FACE1=F3FACE) THEN HP1(7)=F3FACE:P1STATUS=10
3690 IF (P1FACE1=F2FACE) AND (P1FACE1=TFACE) THEN HP1(7)=TFACE:P1STATUS=11
3700 IF (P1FACE1=F2FACE) AND (P1FACE1=RFACE) THEN HP1(7)=RFACE:P1STATUS=12
3710 IF (P1FACE1=F3FACE) AND (P1FACE1=TFACE) THEN HP1(7)=TFACE:P1STATUS=13
3720 IF (P1FACE1=F3FACE) AND (P1FACE1=RFACE) THEN HP1(7)=RFACE:P1STATUS=14
3730 IF (P1FACE1=TFACE) AND (P1FACE1=RFACE) THEN HP1(7)=RFACE:P1STATUS=15
3740 IF (P1FACE2=F1FACE) AND (P1FACE2=F2FACE) THEN HP1(7)=F2FACE:P1STATUS=16
3750 IF (P1FACE2=F1FACE) AND (P1FACE2=F3FACE) THEN HP1(7)=F3FACEIP1STATUS=17
3760 IF (P1FACE2=F1FACE) AND (P1FACE2=TFACE) THEN HP1(7)=TFACE:P1STATUS=18
3770 IF (P1FACE2=F1FACE) AND (P1FACE2=RFACE) THEN HP1(7)=RFACE:P1STATUS=19
3780 IF (P1FACE2=F2FACE) AND (P1FACE2=F3FACE) THEN HP1(7)=F3FACE:P1STATUS=20
3790 IF (P1FACE2=F2FACE) AND (P1FACE2=TFACE) THEN HP1(7)=TFACE:P1STATUS=21
3800 IF (P1FACE2=F2FACE) AND (P1FACE2=RFACE) THEN HP1(7)=RFACE:P1STATUS=22
3810 IF (P1FACE2=F3FACE) AND (P1FACE2=TFACE) THEN HP1(7)=TFACE:P1STATUS=23
3820 IF (P1FACE2=F3FACE) AND (P1FACE2=RFACE) THEN HP1(7)=RFACE:P1STATUS=24
3830 IF (P1FACE2=TFACE) AND (P1FACE2=RFACE) THEN HP1(7)=RFACE:P1STATUS=25
3840 'CHECK TO SEE IF THE COMPUTER HAS THREE-OF-A-KIND
3845 P2STATUS=0 'FOR CHECKING IF COMPUTER HAS A FULL HOUSE...LATER
3850 IF (P2FACE1=P2FACE2) AND (P2FACE2=F1FACE) THEN HP2(7)=F1FACE:P2STATUS=1
3860 IF (P2FACE1=P2FACE2) AND (P2FACE2=F2FACE) THEN HP2(7)=F2FACE:P2STATUS=2
3870 IF (P2FACE1=P2FACE2) AND (P2FACE2=F3FACE) THEN HP2(7)=F3FACE:P2STATUS=3
3880 IF (P2FACE1=P2FACE2) AND (P2FACE2=TFACE) THEN HP2(7)=TFACE:P2STATUS=4
3890 IF (P2FACE1=P2FACE2) AND (P2FACE2=RFACE) THEN HP2(7)=RFACE:P2STATUS=5
3900 IF (P2FACE1=F1FACE) AND (P2FACE1=F2FACE) THEN HP2(7)=F2FACE:P2STATUS=6
3910 IF (P2FACE1=F1FACE) AND (P2FACE1=F3FACE) THEN HP2(7)=F3FACE:P2STATUS=7
3920 IF (P2FACE1=F1FACE) AND (P2FACE1=TFACE) THEN HP2(7) =TFACE:P2STATUS=8
3930 IF (P2FACE1=F1FACE) AND (P2FACE1=RFACE) THEN HP2(7)=RFACE:P2STATUS=9
3940 IF (P2FACE1=F2FACE) AND (P2FACE1=F3FACE) THEN HP2(7)=F3FACE:P2STATUS=10
3950 IF (P2FACE1=F2FACE) AND (P2FACE1=TFACE) THEN HP2(7)=TFACE:P2STATUS=11
3960 IF (P2FACE1=F2FACE) AND (P2FACE1=RFACE) THEN HP2(7)=RFACE:P2STATU5=12
3970 IF (P2FACE1=F3FACE) AND (P2FACE1=TFACE) THEN HP2(7)=TFACE:P2STATUS=13
3980 IF (P2FACE1=F3FACE) AND (P2FACE1=RFACE) THEN HP2(7)=RFACE:P2STATUS=14
3990 IF (P2FACE1=TFACE) AND (P2FACE1=RFACE) THEN HP2(7)=RFACE:P2STATUS=15
4000 IF (P2FACE2=F1FACE) AND (P2FACE1=F2FACE) THEN HP2(7)=F2FACE:P2STATUS=16

Il y a

= 3 744 full house possibles

parmi toutes les mains de cinq cartes. Ce n'est que si le joueur (ou l'ordinateur) a (temporairement) touché un brelan qu'un full house (trois cartes d'un rang, deux cartes d'un autre) est une possibilité.

Les variables P1STATUS et P2STATUS indiquent au programme non seulement si oui ou non le joueur et l'ordinateur, respectivement, (jusqu'à présent dans la recherche) ont trois cartes du même rang ; les variables identifient également les trois cartes. De cette façon, chaque instruction conditionnelle vérifie les paires parmi les cartes restantes sur la table.

Votre première pensée pourrait être: pourquoi devons-nous vérifier à nouveau les paires? Ne pouvons-nous pas simplement combiner les résultats de la recherche des paires avec la recherche du brelan et l'appeler un jour? Malheureusement, cela ne fonctionnera pas - il est possible que les cartes se chevauchent entre les recherches.

Cinquante recherches distinctes de paires doivent être effectuées pour le joueur (fait en premier) et l'ordinateur (fait
en second):

= 50.

Bien que la force brute soit à nouveau requise, assurez-vous d'examiner systématiquement le code pour trouver les modèles.

4500 'SEARCH #5: A FULL HOUSE
4510 'CHECK TO SEE IF YOU HAVE A FULL HOUSE (YOU MUST ALREADY HAVE THREE-OF-A-KIND)
4520 IF P1STATUS=1 AND ((F2FACE=F3FACE) OR (F2FACE=TFACE) OR (F2FACE=RFACE)) THEN HP1(4)=F1FACE
4525 IF P1STATUS=1 AND ((F3FACE=TFACE) OR (F3FACE=RFACE)) THEN HP1(4)=F1FACE
4530 IF P1STATUS=1 AND (TFACE=RFACE) THEN HP1(4)=F1FACE
4535 IF P1STATUS=2 AND ((F1FACE=F3FACE) OR (F1FACE=TFACE) OR (F1FACE=RFACE)) THEN HP1(4)=F2FACE
4540 IF P1STATUS=2 AND ((F3FACE=TFACE) OR (F3FACE=RFACE)) THEN HP1(4)=F2FACE
4545 IF P1STATUS=2 AND (TFACE=RFACE) THEN HP1(4)=F2FACE
4550 IF P1STATUS=3 AND ((F1FACE=F2FACE) OR (F1FACE=TFACE) OR (F1FACE=RFACE)) THEN HP1(4)=F3FACE
4555 IF P1STATUS=3 AND ((F2FACE=TFACE) OR (F2FACE=RFACE)) THEN HP1(4)=F3FACE
4560 IF P1STATUS=3 AND (TFACE=RFACE) THEN HP1(4)=F3FACE
4565 IF PSTATUS=4 AND ((F1FACE=F2FACE) OR (F1FACE=F3FACE) OR (F1FACE=RFACE)) THEN HP1(4)=TFACE
4570 IF PSTATUS=4 AND ((F2FACE=F3FACE) OR (F2FACE=RFACE)) THEN HP1(4)=TFACE
4575 IF PSTATUS=4 AND (F3FACE=RFACE) THEN HP1(4)=TFACE
4580 IF PSTATUS=5 AND ((F1FACE=F2FACE) OR (F1FACE=F3FACE) OR (F1FACE=TFACE)) THEN HP1(4)=RFACE
4585IF PSTATUS=5 AND ((F2FACE=F3FACE) OR (F2FACE=TFACE)) THEN HP1(4)=RFACE
4590 IF PSTATUS=5 AND (F3FACE=TFACE) THEN HP1(4)=RFACE
4595 IF PSTATUS=6 AND ((P1FACE2=F3FACE) OR (P1FACE2=TFACE) OR (P1FACE2=RFACE)) THEN HP1(4)=F2FACE
4600 IF PSTATUS=6 AND ((F3FACE=TFACE) OR (F3FACE=RFACE)) THEN HP1(4)=F2FACE
4605 IF PSTATUS=6 AND (TFACE=RFACE) THEN HP1(4)=F2FACE
4610 IF PSTATU5=7 AND ((P1FACE2=F2FACE) OR (P1FACE2=RFACE) OR (P1FACE2=TFACE)) THEN HP1(4)=F3FACE
4615 IF PSTATUS=7 AND ((F2FACE=RFACE) OR (F2FACE=TFACE)) THEN HP1(4)=F3FACE
4620 IF PSTATUS=7 AND (RFACE=TFACE) THEN HP1(4)=F3FACE
4625 IF PSTATUS=8 AND ((P1FACE2=F2FACE) OR (P1FACE2=F3FACE) OR (P1FACE2=RFACE)) THEN HP1(4)=TFACE
4630 IF PSTATUS=8 AND ((F2FACE=F3FACE) OR (F2FACE=RFACE)) THEN HP1(4)=TFACE
4635 IF PSTATUS=8 AND (F3FACE=RFACE) THEN HP1(4)=TFACE
4640 IF PSTATUS=9 AND ((P1FACE2=F2FACE) OR (P1FACE2=F3FACE) OR (P1FACE2=TFACE)) THEN HP1(4)=RFACE
4645 IF PSTATUS=9 AND ((F2FACE=F3FACE) OR (F2FACE=TFACE)) THEN HP1(4)=RFACE
4650 IF PSTATUS=9 AND (F3FACE=TFACE) THEN HP1(4)=RFACE
4655 IF PSTATUS=10 AND ((P1FACE2=F1FACE) AND (P1FACE2=TFACE) AND (P1FACE2=RFACE)) THEN HP1(4)=F3FACE
4660 IF PSTATUS=10 AND ((F1FACE=TFACE) AND (F1FACE=RFACE)) THEN HP1(4)=F3FACE
4665 IF PSTATUS=10 AND (TFACE=RFACE) THEN HP1(4)=F3FACE
4670 IF PSTATUS=11 AND ((P1FACE2=F1FACE) OR (P1FACE2=F3FACE) OR (P1FACE2=RFACE)) THEN HP1(4)=TFACE
4675 IF PSTATUS=11 AND ((F1FACE=F3FACE) OR (F1FACE=RFACE)) THEN HP1(4)=TFACE
4680 IF PSTATUS=11 AND (F3FACE=RFACE) THEN HP1(4)=TFACE
4685 IF PSTATUS=12 AND ((P1FACE2=F1FACE) OR (P1FACE2=F3FACE) OR (P1FACE2=TFACE)) THEN HP1(4)=RFACE
4690 IF PSTATUS=12 AND ((F1FACE=F3FACE) OR (F1FACE=TFACE)) THEN HP1(4)=RFACE
4695 IF PSTATUS=12 AND (F3FACE=TFACE) THEN HP1(4)=RFACE
4700 IF PSTATUS=13 AND ((P1FACE2=F1FACE) OR (P1FACE2=F2FACE) OR (P1FACE2=RFACE)) THEN HP1(4)=TFACE
4705 IF PSTATUS=13 AND ((F1FACE=F2FACE) OR (F1FACE=RFACE)) THEN HP1(4)=TFACE
4710 IF PSTATUS=13 AND (F2FACE=RFACE) THEN HP1(4)=TFACE
4715 IF PSTATUS=14 AND ((P1FACE2=F1FACE) OR (P1FACE2=F2FACE) OR (P1FACE2=TFACE)) THEN HP1(4)=RFACE
4720 IF PSTATUS=14 AND ((F1FACE=F2FACE) OR (F1FACE=TFACE)) THEN HP1(4)=RFACE
4725 IF PSTATUS=14 AND (F2FACE=TFACE) THEN HP1(4)=RFACE
4739 IF PSTATUS=15 AND ((P1FACE2=F1FACE) OR (P1FACE2=F2FACE) OR (P1FACE2=F3FACE)) THEN HP1(4)=RFACE
4735 IF PSTATUS=15 AND ((F1FACE=F2FACE) OR (F1FACE=F3FACE)) THEN HP1(4)=RFACE
4740 IF PSTATUS=15 AND (F2FACE=F3FACE) THEN HP1(4)=RFACE
4745 IF PSTATUS=16 AND ((P1FACE1=F3FACE) OR (P1FACE1=TFACE) OR (P1FACE1=RFACE)) THEN HP1(4)=F2FACE
4750 IF PSTATUS=16 AND ((F3FACE=TFACE) OR (F3FACE=RFACE)) THEN HP1(4)=F2FACE
4755 IF PSTATUS=16 AND (TFACE=RFACE) THEN HP1(4)=F2FACE
4760 IF PSTATUS=17 AND ((P1FACE1=F2FACE) OR (P1FACE1=TFACE) OR (P1FACE1=RFACE)) THEN HP1(4)=F3FACE
4765 IF PSTATUS=17 AND ((F2FACE=TFACE) OR (F2FACE=RFACE)) THEN HP1(4)=F3FACE
4770 IF PSTATUS=17 AND (TFACE=RFACE) THEN HP1(4)=F3FACE
4775 IF PSTATUS=18 AND ((P1FACE1=F2FACE) OR (P1FACE1=F3FACE) OR (P1FACE1=RFACE)) THEN HP1(4)=TFACE
4780 IF PSTATUS=18 AND ((F2FACE=F3FACE) OR (F2FACE=RFACE)) THEN HP1(4)=TFACE
4785 IF PSTATUS=18 AND (F3FACE=RFACE) THEN HP1(4)=TFACE
4790 IF PSTATUS=19 AND ((P1FACE1=F2FACE) OR (P1FACE1=F3FACE) OR (P1FACE1=TFACE)) THEN HP1(4)=RFACE
4795 IF PSTATUS=19 AND ((F2FACE=F3FACE) OR (F2FACE=TFACE)) THEN HP1(4)=RFACE
4800 IF PSTATUS=19 AND (F3FACE=TFACE) THEN HP1(4)=RFACE
4805 IF PSTATUS=20 AND ((P1FACE1=F1FACE) OR (P1FACE1=TFACE) OR (P1FACE1=RFACE)) THEN HP1(4)=F3FACE
4810 IF PSTATUS=20 AND ((F1FACE=TFACE) OR (FIFACE=RFACE)) THEN HP1(4)=F3FACE
4815 IF PSTATUS=20 AND (TFACE=RFACE) THEN HP1(4)=F3FACE
4820 IF PSTATUS=21 AND ((P1FACE1=F1FACE) OR (P1FACE1=F3FACE) OR (P1FACE1=RFACE)) THEN HP1(4)=TFACE
4825 IF PSTATUS=21 AND ((F1FACE=F3FACE) OR (F1FACE=RFACE)) THEN HP(4)=TFACE
4830 IF PSTATUS=21 AND (F3FACE=RFACE) THEN HP(4)=TFACE
4835 IF PSTATUS=22 AND ((P1FACE1=F1FACE) OR (P1FACE1=F3FACE) OR (P1FACE1=TFACE)) THEN HP1(4)=RFACE
4840 IF PSTATUS=22 AND ((F1FACE=F3FACE) OR (F1FACE=TFACE)) THEN HP1(4)=RFACE
4845 IF PSTATUS=22 AND (F3FACE=TFACE) THEN HP1(4)=RFACE
4850 IF PSTATUS=23 AND ((P1FACE1=F1FACE) OR (P1FACE1=F2FACE) OR (P1FACE1=RFACE)) THEN HP1(4)=TFACE
4855 IF PSTATUS=23 AND ((F1FACE=F2FACE) OR (F1FACE=RFACE)) THEN HP1(4)=TFACE
4860 IF PSTATUS=23 AND (F2FACE=RFACE) THEN HP1(4)=TFACE
4865 IF PSTATUS=24 AND ((P1FACE1=F1FACE) OR (P1FACE1=F2FACE) OR (P1FACE1=TFACE)) THEN HP1(4)=RFACE
4870 IF PSTATUS=24 AND ((F1FACE=F2FACE) OR (F1FACE=TFACE)) THEN HP1(4)=RFACE
4875 IF PSTATUS=24 AND (F2FACE=TFACE) THEN HP1(4)=RFACE
4880 IF PSTATUS=25 AND ((P1FACE1=F1FACE) OR (P1FACE1=F2FACE) OR (P1FACE1=F3FACE)) THEN HP1(4)=RFACE
4885 IF P5TATUS=25 AND ((F1FACE=F2FACE) OR (F1FACE=F3FACE)) THEN HP1(4)=RFACE
4890 IF PSTATUS=25 AND (F2FACE=F3FACE) THEN HP1(4)=RFACE
5510 'CHECK TO SEE IF COMPUTER HAS A FULL HOUSE (COMPUTER MUST ALREADY HAVE THREE-OF-A-KIND)
5520 IF P1STATUS=1 AND ((F2FACE=F3FACE) OR (F2FACE=TFACE) OR (F2FACE=RFACE)) THEN HP2(4)=F1FACE
5525 IF P1STATUS=1 AND ((F3FACE=TFACE) OR (F3FACE=RFACE)) THEN HP2(4)=F1FACE
5530 IF P1STATUS=1 AND (TFACE=RFACE) THEN HP2(4)=F1FACE
5535 IF P1STATUS=2 AND ((F1FACE=F3FACE) OR (F1FACE=TFACE) OR (F1FACE=RFACE)) THEN HP2(4)=F2FACE
5540 IF P1STATUS=2 AND ((F3FACE=TFACE) OR (F3FACE=RFACE)) THEN HP2(4)=F2FACE
5545 IF P1STATUS=2 AND (TFACE=RFACE) THEN HP2(4)=F2FACE
5550 IF P1STATUS=3 AND ((F1FACE=F2FACE) OR (F1FACE=TFACE) OR (F1FACE=RFACE)) THEN HP2(4)=F3FACE
5555 IF P1STATUS=3 AND ((F2FACE=TFACE) OR (F2FACE=RFACE)) THEN HP2(4)=F3FACE
5560 IF P1STATUS=3 AND (TFACE=RFACE) THEN HP2(4)=F3FACE
5565 IF PSTATUS=4 AND ((F1FACE=F2FACE) OR (F1FACE=F3FACE) OR (F1FACE=RFACE)) THEN HP2(4)=TFACE
5570 IF PSTATUS=4 AND ((F2FACE=F3FACE) OR (F2FACE=RFACE)) THEN HP2(4)=TFACE
5575 IF PSTATUS=4 AND (F3FACE=RFACE) THEN HP2(4)=TFACE
5580 IF PSTATUS=5 AND (F1FACE=F2FACE) OR (F1FACE=F3FACE) OR (F1FACE=TFACE) THEN HP2(4)=RFACE
5585 IF PSTATUS=5 AND ((F2FACE=F3FACE) OR (F2FACE=TFACE)) THEN HP2(4)=RFACE
5590 IF PSTATUS=5 AND (F3FACE=TFACE) THEN HP2(4)=RFACE
5595 IF PSTATUS=6 AND ((P2FACE2=F3FACE) OR (P2FACE2=TFACE) OR (P2FACE2=RFACE)) THEN HP2(4)=F2FACE
5600 IF PSTATUS=6 AND ((F3FACE=TFACE) OR (F3FACE=RFACE)) THEN HP2(4)=F2FACE
5605 IF PSTATUS=6 AND (TFACE=RFACE) THEN HP2(4)=F2FACE
5610 IF PSTATUS=7 AND ((P2FACE2=F2FACE) OR (P2FACE2=RFACE) OR (P2FACE2=TFACE)) THEN HP2(4)=F3FACE
5615 IF PSTATUS=7 AND ((F2FACE=RFACE) OR (F2FACE=TFACE)) THEN HP2(4)=F3FACE
5620 IF PSTATUS=7 AND (RFACE=TFACE) THEN HP2(4)=F3FACE
5625 IF PSTATUS=8 AND ((P2FACE2=F2FACE) OR (P2FACE2=F3FACE) OR (P2FACE2=RFACE)) THEN HP2(4)=TFACE
5630 IF PSTATUS=8 AND ((F2FACE=F3FACE) OR (F2FACE=RFACE)) THEN HP2(4)=TFACE
5635 IF PSTATUS=8 AND (F3FACE=RFACE) THEN HP2(4)=TFACE
5640 IF PSTATUS=9 AND ((P2FACE2=F2FACE) OR (P2FACE2=F3FACE) OR (P2FACE2=TFACE)) THEN HP2(4)=RFACE
5645 IF PSTATUS=9 AND ((F2FACE=F3FACE) OR (F2FACE=TFACE)) THEN HP2(4)=RFACE
5650 IF PSTATUS=9 AND (F3FACE=TFACE) THEN HP2(4)=RFACE
5655 IF PSTATUS=10 AND ((P2FACE2=F1FACE) AND (P2FACE2=TFACE) AND (P2FACE2=RFACE)) THEN HP2(4)=F3FACE
5660 IF PSTATUS=10 AND ((F1FACE=TFACE) AND (F1FACE=RFACE)) THEN HP2(4)=F3FACE
5665 IF PSTATUS=10 AND (TFACE=RFACE) THEN HP2(4)=F3FACE
5670 IF PSTATUS=11 AND ((P2FACE2=F1FACE) OR (P2FACE2=F3FACE) OR (P2FACE2=RFACE)) THEN HP2(4)=TFACE
5675 IF PSTATUS=11 AND ((F1FACE=F3FACE) OR (F1FACE=RFACE)) THEN HP2(4)=TFACE
5680 IF PSTATUS=11 AND (F3FACE=RFACE) THEN HP2(4)=TFACE
5685 IF PSTATUS=12 AND ((P2FACE2=F1FACE) OR (P2FACE2=F3FACE) OR (P2FACE2=TFACE)) THEN HP2(4)=RFACE
5690 IF PSTATUS=12 AND ((F1FACE=F3FACE) OR (F1FACE=TFACE)) THEN HP2(4)=RFACE
5695 IF PSTATUS=12 AND (F3FACE=TFACE) THEN HP2(4)=RFACE
5700 IF PSTATUS=13 AND ((P2FACE2=F1FACE) OR (P2FACE2=F2FACE) OR (P2FACE2=RFACE)) THEN HP2(4)=TFACE
5705 IF PSTATUS=13 AND ((F1FACE=F2FACE) OR (F1FACE=RFACE)) THEN HP2(4)=TFACE
5710 IF PSTATUS=13 AND (F2FACE=RFACE) THEN HP2(4)=TFACE
5715 IF PSTATUS=14 AND ((P2FACE2=F1FACE) OR (P2FACE2=F2FACE) OR (P2FACE2=TFACE)) THEN HP2(4)=RFACE
5720 IF PSTATUS=14 AND ((F1FACE=F2FACE) OR (F1FACE=TFACE)) THEN HP2(4)=RFACE
5725 IF PSTATUS=14 AND (F2FACE=TFACE) THEN HP2(4)=RFACE
5730 IF PSTATUS=15 AND ((P2FACE2=F1FACE) OR (P2FACE2=F2FACE) OR (P2FACE2=F3FACE)) THEN HP2(4)=RFACE
5735 IF PSTATUS=15 AND ((F1FACE=F2FACE) OR (F1FACE=F3FACE)) THEN HP2(4)=RFACE
5740 IF PSTATUS=15 AND (F2FACE=F3FACE) THEN HP2(4)=RFACE
5745 IF PSTATUS=16 AND ((P2FACE1=F3FACE) OR (P2FACE1=TFACE) OR (P2FACE1=RFACE)) THEN HP2(4)=F2FACE
5750 IF PSTATUS=16 AND ((F3FACE=TFACE) OR (F3FACE=RFACE)) THEN HP2(4)=F2FACE
5755 IF PSTATUS=16 AND (TFACE=RFACE) THEN HP2(4)=F2FACE
5760 IF PSTATUS=17 AND ((P2FACE1=F2FACE) OR (P2FACE1=TFACE) OR (P2FACE1=RFACE)) THEN HP2(4)=F3FACE
5765 IF PSTATUS=17 AND ((F2FACE=TFACE) OR (F2FACE=RFACE)) THEN HP2(4)=F3FACE
5770 IF PSTATUS=17 AND (TFACE=RFACE) THEN HP2(4)=F3FACE
5775 IF PSTATUS=18 AND ((P2FACE1=F2FACE) OR (P2FACE1=F3FACE) OR (P2FACE1=RFACE)) THEN HP2(4)=TFACE
5780 IF PSTATUS=18 AND ((F2FACE=F3FACE) OR (F2FACE=RFACE)) THEN HP2(4)=TFACE
5785 IF PSTATUS=18 AND (F3FACE=RFACE) THEN HP2(4)=TFACE
5790 IF PSTATUS=19 AND ((P2FACE1=F2FACE) OR (P2FACE1=F3FACE) OR (P2FACE1=TFACE)) THEN HP2(4)=RFACE
5795 IF PSTATUS=19 AND ((F2FACE=F3FACE) OR (F2FACE=TFACE)) THEN HP2(4)=RFACE
5800 IF PSTATUS=19 AND (F3FACE=TFACE) THEN HP2(4)=RFACE
5805 IF PSTATUS=20 AND ((P2FACE1=F1FACE) OR (P2FACE1=TFACE) OR (P2FACE1=RFACE)) THEN HP2(4)=F3FACE
5810 IF PSTATUS=20 AND ((F1FACE=TFACE) OR (F1FACE=RFACE)) THEN HP2(4)=F3FACE
5815 IF PSTATUS=20 AND (TFACE=RFACE) THEN HP2(4)=F3FACE
5820 IF PSTATUS=21 AND ((P2FACE1=F1FACE) OR (P2FACE1=F3FACE) OR (P2FACE1=RFACE)) THEN HP2(4)=TFACE
5825 IF PSTATUS=21 AND ((F1FACE=F3FACE) OR (F1FACE=RFACE)) THEN HP(4)=TFACE
5830 IF PSTATUS=21 AND (F3FACE=RFACE) THEN HP(4)=TFACE
5835 IF PSTATUS=22 AND ((P2FACE1=F1FACE) OR (P2FACE1=F3FACE) OR (P2FACE1=TFACE)) THEN HP2(4)=RFACE
5840 IF PSTATUS=22 AND ((F1FACE=F3FACE) OR (F1FACE=TFACE)) THEN HP2(4)=RFACE
5845 IF PSTATUS=22 AND (F3FACE=TFACE) THEN HP2(4)=RFACE
5850 IF PSTATUS=23 AND ((P2FACE1=F1FACE) OR (P2FACE1=F2FACE) OR (P2FACE1=RFACE)) THEN HP2(4)=TFACE
5855 IF PSTATUS=23 AND ((F1FACE=F2FACE) OR (F1FACE=RFACE)) THEN HP2(4)=TFACE
5860 IF PSTATUS=23 AND (F2FACE=RFACE) THEN HP2(4)=TFACE
5865 IF PSTATUS=24 AND ((P2FACE1=F1FACE) OR (P2FACE1=F2FACE) OR (P2FACE1=TFACE)) THEN HP2(4)=RFACE
5870 IF PSTATUS=24 AND ((F1FACE=F2FACE) OR (F1FACE=TFACE)) THEN HP2(4)=RFACE
5875 IF PSTATUS=24 AND (F2FACE=TFACE) THEN HP2(4)=RFACE
5880 IF PSTATUS=25 AND ((P2FACE1=F1FACE) OR (P2FACE1=F2FACE) OR (P2FACE1=F3FACE)) THEN HP2(4)=RFACE
5885 IF PSTATUS=25 AND ((F1FACE=F2FACE) OR (F1FACE=F3FACE)) THEN HP2(4)=RFACE
5890 IF PSTATUS=25 AND (F2FACE=F3FACE) THEN HP2(4)=RFACE

Ensuite : carré, ou les quatre cartes du même rang. Bien que les mains de poker standard à cinq cartes contiennent

= 624 mains possibles FOUR-OF-A-KIND, nous n'avons pas à vérifier chaque main unique. Au lieu de cela, nous devons examiner les ensembles possibles de quatre cartes parmi les sept, en veillant à inclure au moins une carte fermée dans l'ensemble (puisque si nous trouvons un carré exclusivement parmi les cinq cartes communes, l'ensemble bénéficie à la fois le joueur et l'ordinateur de manière égale).

Jetez un œil aux possibilités ci-dessous; par souci de simplicité, les sept cartes sur la table sont étiquetées avec les lettres "A" à "G":

Card Rank FACE1 FACE2 F1FACE F2FACE F3FACE TFACE RFACE

Label "A" "B" "C" "D" "E" "F" "G"

Combinatoirement, cela équivaut à trente fours "pertinents" et à cinq ensembles de cartes "non pertinents" qui ne devraient pas être codé. Mathématiquement,

Revenons au programme : si un carré est trouvé, le tableau HP associé doit être attribué au rang du jeu de cartes. La recherche commence avec les cartes du joueur, suivies par l'ordinateur ; mais sachez que les trente combinaisons ne sont volontairement pas répertoriées ci-dessous. Vous devriez être en mesure de prendre la cause et de terminer le codage vous-même, si vous êtes suffisamment enclin.

4010 'CHECK TO SEE IF YOU HAVE FOUR-OF-A-KIND
4020 IF (P1FACE1=P1FACE2) AND (P1FACE1=F1FACE) AND (P1FACE1=F2FACE) THEN HP1(3)=F2FACE
4030 IF (P1FACE1=P1FACE2) AND (P1FACE1=F1FACE) AND (P1FACE1=F3FACE) THEN HP1(3)=F3FACE
4040 IF (P1FACE1=P1FACE2) AND (P1FACE1=F1FACE) AND (P1FACE1=TFACE) THEN HP1(3)=TFACE
4050 IF (P1FACE1=P1FACE2) AND (P1FACE1=F1FACE) AND (P1FACE1=RFACE) THEN HP1(3)=RFACE
4060 IF (P1FACE1=P1FACE2) AND (P1FACE1=F2FACE) AND (P1FACE1=F3FACE) THEN HP1(3)=F3FACE
4070 IF (P1FACE1=P1FACE2) AND (P1FACE1=F2FACE) AND (P1FACE1=TFACE) THEN HP1(3)=TFACE
4080 IF (P1FACE1=P1FACE2) AND (P1FACE1=F2FACE) AND (P1FACE1=RFACE) THEN HP1(3)=RFACE
4090 IF (P1FACE1=P1FACE2) AND (P1FACE1=F3FACE) AND (P1FACE1=TFACE) THEN HP1(3)=TFACE
4100 IF (P1FACE1=P1FACE2) AND (P1FACE1=F3FACE) AND (P1FACE1=RFACE) THEN HP1(3)=RFACE
4200 'CHECK TO SEE IF COMPUTER HAS FOUR-OF-A-KIND
4229 IF (P2FACE1=P2FACE2) AND (R2FACE1=F1FACE) AND (P2FACE1=F2FACE) THEN HP2(3)=F2FACE
4230 IF (P2FACE1=P2FACE2) AND (P2FACE1=F1FACE) AND (P2FACE1=F3FACE) THEN HP2(3)=F3FACE
4240 IF (P2FACE1=P2FACE2) AND (P2FACE1=F1FACE) AND (P2FACE1=TFACE) THEN HP2(3)=TFACE
4250 IF (P2FACE1=P2FACE2) AND (P2FACE1=F1FACE) AND (P2FACE1=RFACE) THEN HP2(3)=RFACE
4260 IF (P2FACE1=P2FACE2) AND (P2FACE1=F2FACE) AND (P2FACE1=F3FACE) THEN HP2(3)=F3FACE
4270 IF (P2FACE1=P2FACE2) AND (P2FACE1=F2FACE) AND (P2FACE1=TFACE) THEN HP2(3)=TFACE
4280 IF (P2FACE1=P2FACE2) AND (P2FACE1=F2FACE) AND (P2FACE1=RFACE) THEN HP2(3)=RFACE
4290 IF (P2FACE1=P2FACE2) AND (P2FACE1=F3FACE) AND (P2FACE1=TFACE) THEN HP2(3)=TFACE
4300 IF (P2FACE1=P2FACE2) AND (P2FACE1=F3FACE) AND (P2FACE1=RFACE) THEN HP2(3)=RFACE

Bien que cela n'épuise pas les types de mains (nous y reviendrons plus tard), la recherche de couleurs est la dernière recherche de cartes que nous effectuerons. Il y a

ensembles possibles de cinq cartes parmi sept - mais l'un de ces ensembles possibles, les cinq cartes communes, peut être ignoré en toute sécurité, car si les cinq cartes communes ont leur propre combinaison sans chevauchement avec n'importe quelle carte trouée, la couleur profite à la fois à l'ordinateur et au joueur - et sort donc à la traîne.

6000 'SEARCH #6: A FLUSH
6002 'THERE ARE (7 CHOOSE 5) = 21 POSSIBILITIES BUT REALLY 20--ONE POSSIBILITY DOESN'T COUNT
6003 'THE FIVE COMMUNITY CARDS HAVING SANE SUIT
6005 'CHECK TO SEE IF YOU HAVE A FLUSH (FIVE CARDS= SAME SUIT);
6006 ' IF SO, INPUT A 1 PLUS ANOTHER 1-- IF YOU HAD A HIGH HOLE CARD
6010 IF ((P1SUIT1=P1SUIT2) AND (P1SUIT1=F1SUIT) AND (P1SUIT1=F2SUIT) AND (P1SUIT1=F3SUIT)) THEN HP1(5)=1+HP1(10)
6015 IF ((P1SUIT1=P1SUIT2) AND (P1SUIT1=F1SUIT) AND (P1SUIT1=F2SUIT) AND (P1SUIT1=TSUIT)) THEN HP1(5)=1+HP1(10)
6020 IF ((P1SUIT1=P1SUIT2) AND (P1SUIT1=F1SUIT) AND (P1SUIT1=F2SUIT) AND (P1SUIT1=RSUIT)) THEN HP1(5)=1+HP1(10)
6025 IF ((P1SUIT1=P1SUIT2) AND (P1SUIT1=F1SUIT) AND (P1SUIT1=TSUIT) AND (P1SUIT1=RSUIT)) THEN HP1(5)=1+HP1(10)
6030 IF ((P1SUIT1=P1SUIT2) AND (PISUITI=FISUIT) AND (P1SUIT1=F3SUIT) AND (P1SUIT1=TSUIT)) THEN HP1(5)=1+HP1(10)
6035 IF ((P1SU1T1=P1SUIT2) AND (P1SUIT1=F1SUIT) AND (P1SUIT1=F3SUIT) AND (P1SUIT1=RSUIT)) THEN HP1(5)=1+HP1(10)
6040 IF ((P1SUIT1=P1SUIT2) AND (P1SUIT1=F2SUIT) AND (P1SUIT1=F3SUIT) AND (P1SUIT1=TSUITU)) THEN HP1(5)=1+HP1(10)
6045 IF ((P1SUIT1=P1SUIT2) AND (P1SUIT1=F2SUIT) AND (P1SUIT1=F3SUIT) AND (P1SUIT1=RSUIT)) THEN HP1(5)=1+HP1(10)
6050 IF ((P1SUIT1=P1SUIT2) AND (P1SUIT1=F3SUIT) AND (P1SUIT1=TSUIT) AND (P1SUIT1=RSUIT)) THEN HP1(5)=1+HP1(10)
6055 IF ((P1SUIT1=P1SUIT2) AND (P1SUIT1=F2SUIT) AND (P1SUIT1=TSUIT) AND (P1SUIT1=RSUIT)) THEN HP1(5)=1+HP1(10)
6060 IF ((P1SUIT1=F1SUIT) AND (P1SUIT1=F2SUIT) AND (P1SUIT1=F3SUIT) AND (P1SUIT1=TSUIT)) THEN HP1(5)=1+HP1(10)
6065 IF ((P1SUIT1=F1SUIT) AND (P1SUIT1=F2SUIT) AND (P1SUIT1=F3SUIT) AND (P1SUIT1=RSUIT)) THEN HP1(5)=1+HP1(10)
6070 IF ((P1SUIT1=F1SUIT) AND (P1SUIT1=F2SUIT) AND (P1SUIT1=TSUIT) AND (P1SUIT1=RSUIT)) THEN HP1(5)=1+HP1(10)
6075 IF ((P1SUIT1=F1SUIT) AND (P1SUIT1=F35UIT) AND (P1SUIT1=TSUIT) AND (P1SUIT1=RSUIT)) THEN HP1(5)=1+HP1(10)
6080 IF ((P1SUIT1=F2SUIT) AND (P1SUIT1=F3SUIT) AND (P1SUIT1=TSUIT) AND (P1SUIT1=RSUIT)) THEN HP1(5)=1+HP1(10)
6085 IF ((P1SUIT2=F1SUIT) AND (P1SUIT2=F2SUIT) AND (P1SUIT2=F3SUIT) AND (P1SUIT2=TSUIT)) THEN HP1(5)=1+HP1(10)
6090 IF ((P1SUIT2=F1SUIT) AND (P1SUIT2=F2SUIT) AND (P1SUIT2=F3SUIT) AND (P1SUIT2=RSUIT)) THEN HP1(5)=1+HP1(10)
6100 IF ((P1SUIT2=F1SUIT) AND (P1SUIT2=F2SUIT) AND (PXSUIT2=T5UIT) AND (P=SUIT2=RSUIT)) THEN HP1(5)=1+HP1(10)
6110 IF ((P1SUIT2=F1SUIT) AND (P1SUIT2=F2SUIT) AND (P1SUIT2=TSUIT) AND (P1SUIT2=RSUIT)) THEN HP1(5)=1+HP1(10)
6120 IF ((P1SUIT2=F1SUIT) AND (P1SUIT2=F3SUIT) AND (P1SUIT2=TSUIT) AND (P1SUIT2=RSUIT)) THEN HP1(5)=1+HP1(10)
6130 IF ((P1SUIT2=F2SUIT) AND (P1SUIT2=F3SUIT) AND (P1SUIT2=TSUIT) AND (P1SUIT2=RSUIT)) THEN HP1(5)=1+HP1(10)
6205 'CHECK TO SEE IF COMPUTER HAS A FLUSH (FIVE CARDS = SAME SUIT);
6206 'IF SO, INPUT A 1 PLUS ANOTHER 1 -- IF COMPUTER HAD A HIGH HOLE CARD
6210 IF ((P2SUIT1=P2SUIT2) AND (P2SUIT1=F1SUIT) AND (P2SUIT1=F2SUIT) AND (P2SUIT1=F3SUIT)) THEN HP2(5)=1+HP2(10)
6215 IF ((P2SUIT1=P2SUIT2) AND (P2SUIT1=F1SUIT) AND (P2SUIT1=F2SUIT) AND (P2SUIT1=TSUIT)) THEN HP2(5)=1+HP2(10)
6220 IF ((P2SUIT1=P2SUIT2) AND (P2SUIT1=F1SUIT) AND (P2SUIT1=F2SUIT) AND (P2SUIT1=RSUIT)) THEN HP2(5)=1+HP2(10)
6225 IF ((P2SUIT1=P2SUIT2) AND (P25UIT1=F1SUIT) AND (P2SUIT1=TSUIT) AND (P2SUIT1=RSUIT)) THEN HP2(5)=1+HP2(10)
6230 IF ((P2SUIT1=P2SUIT2) AND (P2SUIT1=F1SUIT) AND (P2SUIT1=F3SUIT) AND (P2SUIT1=TSUIT)) THEN HP2(5)=1+HP2(10)
6235 IF ((P2SUIT1=P2SUIT2) AND (P2SUIT1=F1SUIT) AND (P2SUIT1=F3SUIT) AND (P2SUIT1=RSUIT)) THEN HP2(5)=1+HP2(10)
6240 IF ((P2SUIT1=P2SUIT2) AND (P2SUIT1=F2SUIT) AND (P2SUIT1=F3SUIT) AND (P2SUIT1=TSUIT)) THEN HP2(5)=1+HP2(10)
6245 IF ((P2SUIT1=P2SUIT2) AND (P2SUIT1=F2SUIT) AND (P2SUIT1=F3SUIT) AND (P2SUIT1=RSUIT)) THEN HP2(5)=1+HP2(10)
6250 IF ((P2SUIT1=P2SUIT2) AND (P2SUIT1=F3SUIT) AND (P2SUIT1=TSUIT) AND (P2SUIT1=RSUIT)) THEN HP2(5)=1+HP2(10)
6255 IF ((P2SUIT1=P2SUIT2) AND (P2SUIT1=F2SUIT) AND (P2SUIT1=TSUIT) AND (P2SUIT1=RSUIT)) THEN HP2(5)=1+HP2(10)
6260 IF ((P2SUIT1=F1SUIT) AND (P2SUIT1=F2SUIT) AND (P2SUIT1=F3SUIT) AND (P2SUIT1=TSUIT)) THEN HP2(5)=1+HP2(10)
6265 IF ((P2SUIT1=F1SUIT) AND (P2SUIT1=F2SUIT) AND (P2SUIT1=F3SUIT) AND (P2SUIT1=RSUIT)) THEN HP2(5)=1+HP2(10)
6270 IF ((P2SUIT1=F1SUIT) AND (P2SUIT1=F2SUIT) AND (P2SUIT1=TSUIT) AND (P2SUIT1=RSUIT)) THEN HP2(5)=1+HP2(10)
6275 IF ((P2SUIT1=F1SUIT) AND (P2SUIT1=F3SUIT) AND (P2SUIT1=TSUIT) AND (P2SUIT1=RSUIT)) THEN HP2(5)=1+HP2(10)
6280 IF ((P2SUIT1=F2SUIT) AND (P2SUIT1=F3SUIT) AND (P2SUIU=TSUIT) AND (P2SUIT1=RSUIT)) THEN HP2(5)=1+HP2(10)
6285 IF ((P2SUIT2=F1SUIT) AND (P2SUIT2=F2SUXT) AND (P2SUIT2=F3SUIT) AND (P2SUIT2=TSUIT)) THEN HP2(5)=1+HP2(10)
6290 IF ((P2SUIT2=F2SUIT) AND (P2SUIT2=F2SUIT) AND (P2SUIT2=F3SUIT) AND (P2SUIT2=RSUIT)) THEN HP2(5)=1+HP2(10)
6300 IF ((P2SUIT2=F1SUIT) AND (P2SUIT2=F2SUXT) AND (P2SUIT2=TSUIT) AND (P2SUIT2=RSUIT)) THEN HP2(5)=1+HP2(10)
6310 IF ((P2SUIT2=F1SUIT) AND (P2SUIT2=F2SUIT) AND (P2SUIT2=TSUIT) AND (P2SUIT2=RSUIT)) THEN HP2(5)=1+HP2(10)
6320 IF ((P2SUIT2=F1SUIT) AND (P2SUIT2=F3SUIT) AND (P2SUIT2=TSUIT) AND (P2SUIT2=RSUIT)) THEN HP2(5)=1+HP2(10)
6330 IF ((P2SUIT2=F2SUIT) AND (P2SUIT2=F3SUIT) AND (P2SUIT2=TSUIT) AND (P2SUIT2=RSUIT)) THEN HP2(5)=1+HP2(10)

Il est maintenant temps de déterminer qui a remporté la main. Tout d'abord, puisque tous les paris possibles ont été pris, l'ordinateur doit révéler sa main à l'écran. Les éléments des tableaux HP sont affectés aux rangs des mains, mais par ordre décroissant.

Puisqu'une boucle FOR/NEXT parcourt les tableaux HP dans l'ordre croissant, les mains les mieux classées sont attrapées en premier - et une fois qu'une main classée du joueur est qualifiée de supérieure à une main de l'ordinateur (ou vice versa), la main est terminé, un gagnant est déclaré (sauf s'il s'agit d'une égalité, qui s'affiche à la place à l'écran), et les gains du pot sont distribués de manière appropriée.

9000 'DETERMINE THE WINNER OF THE HAND--BUT FIRST SHOW THE COMPUTER'S HOLE CARDS
9001 PRINT "COMPUTER'S HOLE CARDS ARE: ":PRINT"***************"
9002 FOR SEARCHS=1 TO 4:FOR SEARCHF=1 TO 13
9004 IF(DEALT(SEARCHF,SEARCHS)=3 OR DEALT(SEARCHF,SEARCHS)=4) THEN PRINT CARD$(SEARCHF,SEARCHS)
9006 NEXT SEARCHF:NEXT SEARCHS
9010 FOR Q= 1 TO 10
9020 IF HP1(Q)=HP2(Q) THEN PRINT "YOU TAKE THE POT WITH A ";TYPE$(Q):GOTO 9060
9030 IF HP2(Q)=HP1(Q) THEN PRINT "COMPUTER TAKES THE POT WITH A ";TYPE$(Q):GOTO 9062
9040 IF HP1(Q)=HP2(Q) AND HP1(Q)<>0) THEN PRINT "SPLIT POT":GOTO 9064
9050 NEXT Q
9060 YOURBANK=YOURBANK+POTAMOUNT:POTAMOUNT=0:FOR A=1 TO 4:FOR B=1 TO 13:DEALT(B,A)=0
9061 NEXT B:NEXT A:GOTO 9100
9062 COMPBANK=COMPBANK+POTAMOUNT:POTAMOUNT=0: FOR A=1 TO 4:FOR B=1 TO 13:DEALT(B,A)=0
9063 NEXT B:NEXT A:GOTO 9100
9064 YQURBANK=YOURBANK+(POTAMOUNT/2):COMPBANK=COMPBANK+(POTAMOUNT/2):POTAMOUNT=0
9065 FOR A=1 TO 4:FOR B=1 TO 13:DEALT(B,A)=0:NEXT B:NEXT A:GOTO 9100
9100 RETURN

Une fois les cartes fermées distribuées, mais avant que les paris ne soient pris, le joueur a la possibilité de se coucher. Une main pliée signifie qu'un pot entier est perdu pour l'ordinateur. S'il reste moins de cinquante dollars au joueur, la partie est terminée, car le buy-in des mains supplémentaires ne peut pas être couvert.

9500'SUBROUTINE FOR FOLDING YOUR HAND
9510 PRINT "YOU HAVE FOLDED YOUR HAND; THE COMPUTER I GETS ALL THE CHIPS IN THE POT."
9520 COMPBANK=COMPBANK+POTAMOUNT
9530 IF (YOURBANK-50)<50 THEN PRINT "You don't have enough chips to continue. Nice game, player ":END
9540 IF (COMPBANK-50)<50 THEN PRINT "Computer doesn't have enough chips to continue. You have won!":END
9550 GOTO 200

Plusieurs fois au cours d'une main, le joueur est interrogé pour un pari. L'ordinateur parie à son tour, et parie d'une manière très simple : si la bankroll de l'ordinateur dépasse celle du joueur, alors il parie la moitié de ses avoirs actuels; sinon, l'ordinateur fait tapis.

L'ordinateur ne prête aucune attention à ses cartes fermées, aux cartes communes, aux cartes fermées potentielles du joueur ou à tout autre facteur étranger lorsqu'il place des paris.

9600 'SUBROUTINE FOR GETTING YOUR BET AMOUNT
9700 PRINT:PRINT "You have $ ";YOURBANK;".":INPUT "How much do you wish to bet";YOURBET
9710 IF YOURBET>YOURBANK THEN 9700
9715 IF YOURBET<0 THEN 9700
9716 POTAMOUNT=POTAMOUNT+YOURBET:YOURBANK= YOURBANK-YOURBET
9717 COMPBET=0:IF YOURBET>COMPBANK THEN COMPBET=COMPBANK ELSE COMPBET=INT(COMPBANK/2)
9718 PRINT "The computer has bet $";COMPBET:POTAMOUNT=POTAMOUNT+COMPBET:COMPBANK=COMPBANK-COMPBET
9720 RETURN

Une fois la première série de mises placée, toutes les cartes communes sont affichées (contrairement au vrai hold'em, où le flop, le tournant et la rivière sont révélés successivement, avec des opportunités de mise entre les deux). Plusieurs boucles FOR/NEXT se chargent d'afficher les cartes communes à l'écran.

Ensuite, le joueur est interrogé pour un pari et l'ordinateur en place un également. le code ici est très similaire au code de placement de paris ci-dessus.

9800 'SUBROUTINE FOR FINDING AND REVEALING THE FLOP,
9801 'TURN, AND RIVER (ALL AT ONCE, UNLIKE IN ACTUAL HOLD 'EH) AS WELL AS PLACING BETS
9810 GOSUB 2000
9812 PRINT "YOUR HOLE CARDS: ";
9814 FOR SEARCHS=1 TO 4:FOR SEARCHF=1 TO 13
9816 IF (DEALT(SEARCHF,SEARCHS)=1 OR DEALT(SEARCHF,SEARCHS)=2) THEN PRINT CARD$(SEARCHF,SEARCHS),
9818 NEXT SEARCHF:NEXT SEARCHS
9820 PRINT:PRINT "THE FLOP IS ": PRINT"*******************"
9830 FOR SEARCHS=1 TO 4:FOR SEARCHF=1 TO 13
9840 IF (DEALT(SEARCHF,SEARCHS)=10 OR DEALT(SEARCHF,SEARCHS)=11 OR DEALT(SEARCHF,SEARCHS)=12) THEN PRINT CARD$(SEARCHF,SEARCHS)
9850 NEXT SEARCHF:NEXT SEARCHS
9855 PRINT:PRINT "THE TURN IS ":PRINT "*******************"
9860 FOR SEARCHS=1 TO 4:FOR SEARCHF=1 TO 13
9870 IF DEALT(SEARCHF,SEARCHS)=20 THEN PRINT CARD$(SEARCHF,SEARCHS)
9880 NEXT SEARCHF:NEXT SEARCHS
9890 PRINT:PRINT "THE RIVER IS ":PRINT"********************"
9900 FOR SEARCHS=1 TO 4:FOR SEARCHF=1 TO 13
9910 IF DEALT(SEARCHF,SEARCHS)=30 THEN PRINT CARD$(SEARCHF,SEARCHS)
9920 NEXT SEARCHF:NEXT SEARCHS
9940 PRINT "How much to bet (anywhere from $0 to $";YOURBANK;")";:INPUT YOURBET
9950 IF YOURBET<0 THEN 9940
9955 IF YOURBET>YOURBANK THEN 9940
9958 POTAMOUNT=POTAMOUNT+YOURBET:YOURBANK=YOURBANK-YOURBET
9960 COMPBET=0:IF YOURBET>COMPBANK THEN COMPBET=COMPBANK ELSE COMPBET=INT(COMPBANK/2)
9962 PRINT "The computer has bet $ ";COMPBET:POTAMOUNT=POTAMOUNT+COMPBET:COMPBANK=COMPBANK-COMPBET

Enfin (enfin !), le programme vérifie qui a remporté le pot, et si le joueur ou l'ordinateur a par conséquent été éliminé.

9970 'CHECK TO SEE WHO WINS POT
9975 GOSUB 3000
9980 'CHECK TO SEE IF THE GAME'S ALL OVER FOR YOU--OR THE COMPUTER
9982 IF (YOURBANK-50)<50 THEN PRINT"You don't have enough chips to continue. Nice game, player.":END
9984 IF (COMPBANK-50)<50 THEN PRINT"Computer doesn't have enough chips to continue. You have won!":END
9985 FOR A=1 TO 4:FOR B=1 TO 13:DEALT(B,A)=0:NEXT B:NEXT A
9986 NEWHAND=1
9990 RETURN

Lors de l'esquisse des améliorations de POKER.BAS, il y a quatre domaines clés à considérer.

(1) Toutes les mains de poker classées possibles ne sont pas, pour l'instant, vérifiées par le programme. Par exemple, tous les ensembles de deux paires ne seront pas pris en compte, car l'algorithme des paires ne vérifie actuellement que les paires qui ont au moins une carte fermée dans le mélange.

De plus, toutes les combinaisons possibles d'un carré ne sont pas codées. De plus, les quintes et les quinte flush (y compris le roi de toutes, la quinte flush royale, n'enregistreront pas un coup d'œil du programme. La quinte est la plus complexe de toutes les recherches car vous devez d'abord trier les rangs dans l'ordre, puis déterminer s'il y a cinq cartes qui se classent successivement (c'est-à-dire sans espace entre les deux). Astuce : Familiarisez-vous à nouveau avec la technique de tri des bulles (Bubble Tri) présentée précédemment.

(2) De nombreuses libertés ont été prises avec les règles du Hold'em. Par exemple, l'ordre de mise variable, les grosses et petites blinds (montants des mises), les dénominations des jetons, la présentation des cartes communes, etc. ne sont pas standard ou ne sont pas inclus dans le code.

L'amélioration du programme signifie certainement une adhésion beaucoup plus stricte aux règles traditionnelles du Hold'em. De plus, seul le jeu tête-à-tête est autorisé ; il est compliqué, mais pas impossible, de dresser une table avec plus d'un adversaire informatisé.

(3) Le schéma de pari de l'ordinateur doit être beaucoup plus représentatif de celui d'un être humain vivant. À l'heure actuelle, l'ordinateur place des paris indépendamment des cartes sur la table.

(4) Les graphismes pimenteraient les choses.

 

 

 

 

 

 

 

Recherche personnalisée