Nous allons voir dans cet article la construction en BASIC d’un jeu très pratiqué dans les casinos :

le poker

PRESENTATON.

Après avoir rentré votre mise (au maximum le montant du capital affiché), l’ordinateur vous propose cinq cartes. A vous de préparer une combinaison en gardant (tap O pour Oui) ou en changeant (taper N pour Non) les cartes désignées par la flèche.

Les résultats seront les suivants :

Même pas une paire – aucune des combinaisons qui suivent -> mise perdu

1 paire – 2 cartes de même valeur -> mise perdue

2 paires – 2X2 cartes de même valeur -> rien

Brelan – 3 cartes de même valeur -> mise gagnée

Séquence -> 5 cartes qui se suivent dans n’importe quelle couleur -> 2 fois la mise

Full – Brelan + paire -> 3 fois la mise

Flush – 5 cartes de la même couleur -> 4 fois la mise

Carré – 4 cartes identiques -> 5 fois la mise

Flush royal – 5 cartes se suivant dans la même couleur -> 6 foisla mise

Pour les cinq dernières combinaisons, l’ordinateur propose de doubler votre mise (répondre O ou N). Si vous acceptez, vous devez lui dire si la prochaine carte affichée est rouge ou noire (répondre R ou N). Bien sûr vous perdez tout si vous vous êtes trompé !!

Le capital est alors mis à jour et vous pouvez continuer la partie jusqu’à épuisement de vos fonds.

LE PROGRAMME.

Lignes 30 à 130 : initialisation.

Après la définition des caractères graphiques et des combinaisons gagnantes dans le tableau C$ (sous-programme en 2000), on initialise à 0 le tableau J correspondant au jeu de cartes. Il est remis à zéro à chaque partie.

Lignes 200 à 220 : mise du joueur.

On saisit la mise du joueur à condition qu’elle ne soit pas supérieure au capital et qu’elle ne soit pas nulle.

Lignes 300 à 370 : tirage de 10 cartes.

On tire 10 cartes dans le jeu, F correspondant à la figure de la carte et C à la couleur. On incrémente le tableau J de 1 ; on teste celui-ci à chaque tirage pour ne pas utiliser deux fois la même carte.

Lignes 500 à 1170 : le jeu.

Après l’affichage des carets avec  le sous-programme en 1300, on saisit le choix du joueur.

Puis on affiche les nouvelles cartes et l’on suit les règles exposées dans l’introduction de ce chapitre.

Les boucles des lignes 710 à 790 placent dans le tableau C le nombre de cartes identiques (exemple : C(4)=1 donne un carré, C(2)=2 donne deux paires, etc…).

Les lignes 800 à 840 placent dans la variable C les combinaisons trouvées à partir des valeurs du tableau C (exemple : C(3)=1 et C(2)=1 donne un full donc C=5)/

Les lignes 850 à 890 détectent la présence d’une séquence (C=4) et les lignes 900 à 920 la présence d’un flush (cinq cartes de la même couleur C=6). Si l’on avait déjà une séquence, C=4 devient C=8 pour le flush royal.

Après totalisation des gains, on reprend une autre partie s’il reste encore du capital.

Liste des variables.

A$..choix du joueur

C…..nombre aléatoire donnant la couleur

C()..nombre de cartes identiques

C$().liste des combinaisons gagnantes

F…….nombre aléatoire donnant la figure

G……gain du joueur

I…….indice de boucle FOR/NEXT

J…….indice de boucle FOR/NEXT

J$…..liste des cartes

J(,)….cartes du jeu : 8 cartes de 4 couleurs

k……..pointeur des caractères graphiques pour afficher le jeu

L$()…dessin des cartes

M…….mise du joueur

P()…..nombre de cartes identiques (ex P(1)=3, s’il y a 3 fois la carte 7, P(2)=4 s’il y a 4 fois la carte 8)

S(,)…..cartes en jeu

X et Y.coordonnées des cartes sur l’écran

Z………couleur de la carte à afficher

INFO :

Paru sous forme de listing dans le livre « Super Jeux Amstrad – 50 programmes de jeux en Basic »
Edité par : P.S.I.

 Date de sortie : 1985

Auteur : Jean-François SEHAN

Téléchargement : http://www.cpc-power.com/index.php?page=detail&num=6759

Le Listing.

10 :’ POKER
20 :’——————————–
30 SYMBOL AFTER 128:GOSUB 2000
40 MODE 1:INK 0,13:INK 1,0:INK 2,6:INK 3,15:PAPER 0:PEN 1:BORDER 13
50 DIM J(8,4)
60 J$= »789XVDR1″
70 G=100
80 RANDOMIZE TIME
90 FOR I=1 TO 8
100 C(I)=0
110 FOR K= 1 TO 4
120 J(I,K)=0
130 NEXT K,I
180 :’———————————-
190 :’MISE DU JOUEUR
200 PEN 1:CLS:LOCATE 10,10:PRINT « MISE (MAX »;G; »F) »;
210 INPUT M
220 IF M<1 OR M>G THEN 200
280 :’———————————-
290 :’TIRAGE DE 10 CARTES
300 FOR I=1 TO 10
310 P(I)=0
320 F=INT(RND*8)+1
330 C=INT(RND*4)+1
340 IF J(F,C)=1 THEN 320
350 J(F,C)=1
360 S(I,1)=F:S(I,2)=C
370 NEXT I
480 :’———————————-
490 :’LE JEU
500 PEN 2:CLS:PRINT TAB(19); »POKER »
510 PEN 3
520 LOCATE 4,24:PRINT « CAPITAL: »;G; »E: »;M;
530 C=0
540 FOR I=1 TO 5
550 X=I*7-3:Y=3:GOSUB 1300
560 NEXT I
570 FOR I=1 TO 5
580 LOCATE 1+I*7,12:PRINT « ^ »
590 A$=INKEY$:IF A$= » » THEN 590
600 IF A$= »N » THEN 640
610 IF A$<> »O » THEN 590
620 LOCATE 1+I*7,11:PRINT « O »
630 GOTO 660
640 S(I,1)=S(I+5,1):S(I,2)=S(I+5,2)
650 LOCATE 1+I*7,11:PRINT « N »
660 LOCATE 1+I*7,12:PRINT  »  »
670 NEXT I
680 FOR I=1 TO 5
690 X=I*7-3:GOSUB 1300
700 NEXT I
710 FOR I=1 TO 8
720 P(I)=0
730 FOR J=1 TO 5
740 IF S(J,1)=I THEN P(I)=P(I)+1
750 NEXT J
760 FOR J=2 TO 4
770 IF P(I)=J THEN C(J)=C(J)+1
780 NEXT J
790 NEXT I
800 IF C(4)=1 THEN C=7:GOTO 940
810 IF C(3)=1 AND C(2)=1 THEN C=5:GOTO 900
820 IF C(3)=1 THEN C=3:GOTO 900
830 IF C(2)=1 THEN C=2:GOTO 900
840 IF C(2)=1 THEN C=1:GOTO 900
850 FOR I=5 TO 8
860 FOR J=1 TO 5
870 IF S(J,1)>I OR S(J,1)<I-4 THEN 890
880 NEXT J:C=4
890 NEXT I
900 FOR I=2 TO 5
910 IF S(I,2)<>S(I-1,2)THEN 940
920 NEXT I
930 IF C=4 THEN C=8 ELSE C=6
940 LOCATE 22-LEN(C$(C))/2,20:PRINT C$(C)
950 IF C<2 THEN 1100
960 IF C<3 THEN LOCATE 8,21:PRINT « DEUX PAIRES C’EST PAS ASSEZ »:GOTO 1110
970 LOCATE 16,21:PRINT « MISE * PAR »;C-2
980 IF C=3 THEN 1090
990 LOCATE 13,22:PRINT « VOUS VOULEZ * PAR »;(C-2)*2
1000 A$=INKEY$:IF A$= » » THEN 1000 ELSE IF A$<> »O » THEN 1090 ELSE LOCATE 16,21:PRINT « MISE * PAR »;(C-2)*2
1010 LOCATE 1,22:PRINT « LA PROCHAINE CARTE EST ROUGE OU NOIRE ? »
1020 A$=INKEY$:IF A$= » » THEN 1020 ELSE IF A$<> »N » AND A$<> »R » THEN 1020
1030 X=18:Y=12:I=1
1040 F=INT(RND*8)+1:Z=INT(RND*4)+1:IF J(F,Z)=1 THEN 1040 ELSE S(1,1)=F:S(1,2)=Z
1050 GOSUB 1300
1060 IF (S(1,2)<3 AND A$= »N ») OR (S(1,2)>2 AND A$= »R ») THEN 1080
1070 G=G+M*(C-2)*2:GOTO 1110
1080 G=G-M*(C-2)*2:GOTO 1110
1090 G=G+M*(C-2):GOTO 1110
1100 G=G-M
1110 IF INKEY$= » » THEN 1110
1120 IF G>0 THEN 80
1130 CLS
1140 PRINT « AVEC L’ARGENT QUE VOUS AVEZ »
1150 PRINT « PERDU,JE VAIS M’ACHETER »
1160 PRINT « UNE EXTENSION…! »
1170 END
1280 :’——————————–
1290 :’ AFFICHAGE DES CARTES
1300 PEN 1
1310 FOR J=Y+1 TO Y+6:LOCATE X+1,J:PRINT  »      « :NEXT J
1320 PLOT X*16,400-Y*16:DRAW 96+X*16,400-Y*16:DRAW 96+X*16,304-Y*16:DRAW X*16,304-Y*16:DRAW X*16,400-Y*16
1330 K=128+(S(I,2)-1)*4
1340 IF S(I,2)>2 THEN Z=1 ELSE Z=2
1350 LOCATE X+2,Y+2:PRINT MID$(J$,S(I,1),1); »
1360 PEN Z:LOCATE X+2,Y+3:PRINT  » « CHR$(K)CHR$(K+1) »  »
1370 LOCATE X+2,Y+4:PRINT  » « CHR$(K+2)CHR$(K+3) »  »
1380 PEN 1:LOCATE X+2,Y+5:PRINT  »   « MID$(J$,S(I,1),1)
1390 RETURN
1980 :’——————————–
1990 :’GRAPHIQUES
2000 SYMBOL 128,1,3,7,15,31,63,127,255
2010 SYMBOL 129,128,192,224,240,248,252,254,255
2020 SYMBOL 130,255,127,63,31,15,7,3,1
2030 SYMBOL 131,255,254,252,248,240,224,192,128
2040 SYMBOL  132,56,124,254,254,255,255,255,255
2050 SYMBOL 133,56,124,254,254,254,254,254,254
2060 SYMBOL 134,127,127,63,31,15,7,3,1
2070 SYMBOL 135,252,252,248,240,224,192,128,0
2080 SYMBOL 136,1,3,7,15,15,15,7,51
2090 SYMBOL 137,0,128,192,224,224,224,192,152
2100 SYMBOL 138,121,253,255,253,121,51,7,15
2110 SYMBOL 139,60,126,254,126,60,152,192,224
2120 SYMBOL 140,1,3,7,15,31,63,63,63
2130 SYMBOL 141,0,128,192,224,240,248,248,248
2140 SYMBOL 142,63,63,31,13,1,3,7,15
2150 SYMBOL 143,248,248,240,96,0,128,192,224
2160 C$(1)= »UNE PAIRE »:C$(2)= »DEUX PAIRES »:C$(3)= »BRELAN »
2170 C$(4)= »SEQUENCE »:C$(5)= »FULL »:C$(6)= »FLUSH »
2180 C$(7)= »CARRE »:C$(8)= »FLUSH ROYAL »:C$(0)= »MEME PAS UNE PAIRE »
2190 RETURN