La Place des Développeurs Poker Brides - Projet
ericb59
Membre non connecté
Conseiller Municipal
Salut à tous...
Je vous propose de faire fonctionner vos méninges, et d'activer vos neurones...
Le projet Poker Bride est un jeu de poker polisson à la "Teenage Queen" sur Amiga/atari pour ceux qui connaissent que j'aimerais développer avec vous...
J'envisage un développement en Basic / Kun basic / Nestor basic.
comme ça un maximum de personnes peuvent intervenir.
Je vous propose de travailler ensemble sur les différents algorithmes d'un jeu de poker.
Je précise tout de suite que je ne sais pas jouer au poker
donc c'est aussi un challenge pour moi.
C'est un jeu de poker 1 contre 1
Avec une Intelligence artificielle à développer pour jouer contre MSX.
Différents algorithmes sont à prévoir.
- Distribution des cartes
- Identification des mains
- identification des mains gagnantes
- IA du jeu, basés sur probabilités, et si possible apprentissage du mode de jeu du joueur humain.
Si vous avez des idées, notemment sur la façon de réaliser l'IA vous avez la parole...
Déjà voici les différentes mains du poker et leur descriptifs
Edité par ericb59 Le 04/03/2015 à 14h32
Je vous propose de faire fonctionner vos méninges, et d'activer vos neurones...
Le projet Poker Bride est un jeu de poker polisson à la "Teenage Queen" sur Amiga/atari pour ceux qui connaissent que j'aimerais développer avec vous...
J'envisage un développement en Basic / Kun basic / Nestor basic.
comme ça un maximum de personnes peuvent intervenir.
Je vous propose de travailler ensemble sur les différents algorithmes d'un jeu de poker.
Je précise tout de suite que je ne sais pas jouer au poker
donc c'est aussi un challenge pour moi.
C'est un jeu de poker 1 contre 1
Avec une Intelligence artificielle à développer pour jouer contre MSX.
Différents algorithmes sont à prévoir.
- Distribution des cartes
- Identification des mains
- identification des mains gagnantes
- IA du jeu, basés sur probabilités, et si possible apprentissage du mode de jeu du joueur humain.
Si vous avez des idées, notemment sur la façon de réaliser l'IA vous avez la parole...
Déjà voici les différentes mains du poker et leur descriptifs
Edité par ericb59 Le 04/03/2015 à 14h32
pegase
Membre non connecté
Villageois
TurboSEB
Membre non connecté
Conseiller Municipal
j'ai trouvé un petit algo assez clair sauf que c'est pour le texas holdem (au cas où)
http://cowboyprogramming.com/2007/01/04/programming-poker-ai/
http://cowboyprogramming.com/2007/01/04/programming-poker-ai/
ericb59
Membre non connecté
Conseiller Municipal
Merci pour cet article
Texas holdem est une variante de Poker avec 2 cartes en main cachées, et 5 cartes communes sur table.
Peux être y a t-il moyen d'utiliser en partie cet article pour créé l'IA... A voir...
Si tu en trouve d'autres n'hésites pas... Edité par ericb59 Le 17/01/2015 à 15h56
Texas holdem est une variante de Poker avec 2 cartes en main cachées, et 5 cartes communes sur table.
Peux être y a t-il moyen d'utiliser en partie cet article pour créé l'IA... A voir...
Si tu en trouve d'autres n'hésites pas... Edité par ericb59 Le 17/01/2015 à 15h56
ericb59
Membre non connecté
Conseiller Municipal
RibbSayan :
j'ai trouvé un petit algo assez clair sauf que c'est pour le texas holdem (au cas où)
http://cowboyprogramming.com/2007/01/04/programming-poker-ai/
http://cowboyprogramming.com/2007/01/04/programming-poker-ai/
en tout cas, cet article présente déjà une façon de modéliser le jeu de carte...
Voici ce que ça donne...
- les cartes sont représentées par un nombre entier de 0 à 51.
Chaque carte possède deux attributs :
-sa couleur (suit)
-son rang (rank)
Les couleurs sont représentées par un entier entre 0 à 3
Tableau SUIT
Suit <> Couleur
0 <> trèfles
1 <> Carreaux
2 <> Coeurs
3 <> Piques
Le rang est représenté par un entier entre 0 et 12
Tableau RANK
Rang <> valeur faciale de la carte
0 <> 2
1 <> 3
2 <> 4
3 <> 5
4 <> 6
5 <> 7
6 <> 8
7 <> 9
8 <> 10
9 <> Valet
10 <> Dame
11 <> Roi
12 <> As
ce qui nous permet d'identifier chaque carte du jeu de façon mathématique.
en Basic ce donne
N = Numéro de carter entre 0 et 51
Couleur = CINT(N/13)
Rang = N mod 13
ainsi la carte n° 37 du jeu est :
PRINT CINT (37/13)
2
PRINT 37 MOD 13
11
ce qui correspond à
2=Coeurs
11=ROI
donc Roi de coeurs Edité par ericb59 Le 19/01/2015 à 09h13
ericb59
Membre non connecté
Conseiller Municipal
Aller on continue...
Calcul de la valeur d'une main.
Il n'y a que le FLUSH qui fait intervenir la couleur des cartes. Toutes les autres mains se basent sur la
valeur des cartes.
On vas attribuer une valeure à la main sur 32 bits correspondant à ce format
> 0 0 M C1 C2 C3 C4 C5
où M est la valeure d'une combinaison dans le tableau ci-dessous. C1 à C5 la veleur de chaque carte dans le tableau RANK (Voir plus haut)
On réalise un tableau de valeurs des combinaisons possibles.
de 0 à 9
0 <> pas de paire (ou rien)
1 <> une paire
2 <> deux paires
3 <> Brelan (trips)
4 <> Suite (straight)
5 <> Couleur (Flush)
6 <> Main pleine (Full house)
7 <> Carré (quads)
8 <> Quinte Flush (straight flush)
9 <> Quinte Flush Royale (Royal straight Flush)
Dans un premier temps le programme devra identifier si, l'une ou l'autre des combinaisons gagnante est présente dans la main.
On verra cette étape plus tard.
Disons que l'identification est faite...
On va donner une valeur à la main du joueur.
Imaginons la main suivante :
- As de trèfles, Dame de Carreaux, 4 de piques, Roi de coeur, 8 trèfles
On cherche si une main gagnante est présente... non donc on à la valeur M=0
d'après le tableau RANK on prend la valeur de chaque carte, ce qui donne :
12,10,2,11,6.
on place les valeurs dans l'ordre croissant
12,11,10,6,2
on transforme en valeurs Hexadécimales
ce qui donne : C,B,A,6,2
au final, on place dans l'ordre que l'on a indiqué plus haut : > 0 0 M C1 C2 C3 C4 C5
ce qui donne la valeur suivante à la main &h000CBA62
Prenons pour exemple une autre main :
4 de Carreaux, Valet de carreaux, 3 de carreaux, 4 de trèfles, As de carreaux
On cherche si une main gagnante est présente... oui, on a une paire, donc M=1
on donne une valeur aux cartes celons le tableau RANK, ce qui donne :
2, 9, 1, 2, 12 étant donné que l'on à trouvé une valeur
encodé en hexa, on aura au final la valeur suivante :
&h0012C910
il suffit alors de comparer les deux valeurs des 2 mains pour connaitre la gagnante. Edité par ericb59 Le 19/01/2015 à 09h14
Calcul de la valeur d'une main.
Il n'y a que le FLUSH qui fait intervenir la couleur des cartes. Toutes les autres mains se basent sur la
valeur des cartes.
On vas attribuer une valeure à la main sur 32 bits correspondant à ce format
> 0 0 M C1 C2 C3 C4 C5
où M est la valeure d'une combinaison dans le tableau ci-dessous. C1 à C5 la veleur de chaque carte dans le tableau RANK (Voir plus haut)
On réalise un tableau de valeurs des combinaisons possibles.
de 0 à 9
0 <> pas de paire (ou rien)
1 <> une paire
2 <> deux paires
3 <> Brelan (trips)
4 <> Suite (straight)
5 <> Couleur (Flush)
6 <> Main pleine (Full house)
7 <> Carré (quads)
8 <> Quinte Flush (straight flush)
9 <> Quinte Flush Royale (Royal straight Flush)
Dans un premier temps le programme devra identifier si, l'une ou l'autre des combinaisons gagnante est présente dans la main.
On verra cette étape plus tard.
Disons que l'identification est faite...
On va donner une valeur à la main du joueur.
Imaginons la main suivante :
- As de trèfles, Dame de Carreaux, 4 de piques, Roi de coeur, 8 trèfles
On cherche si une main gagnante est présente... non donc on à la valeur M=0
d'après le tableau RANK on prend la valeur de chaque carte, ce qui donne :
12,10,2,11,6.
on place les valeurs dans l'ordre croissant
12,11,10,6,2
on transforme en valeurs Hexadécimales
ce qui donne : C,B,A,6,2
au final, on place dans l'ordre que l'on a indiqué plus haut : > 0 0 M C1 C2 C3 C4 C5
ce qui donne la valeur suivante à la main &h000CBA62
Prenons pour exemple une autre main :
4 de Carreaux, Valet de carreaux, 3 de carreaux, 4 de trèfles, As de carreaux
On cherche si une main gagnante est présente... oui, on a une paire, donc M=1
on donne une valeur aux cartes celons le tableau RANK, ce qui donne :
2, 9, 1, 2, 12 étant donné que l'on à trouvé une valeur
encodé en hexa, on aura au final la valeur suivante :
&h0012C910
il suffit alors de comparer les deux valeurs des 2 mains pour connaitre la gagnante. Edité par ericb59 Le 19/01/2015 à 09h14
A propos de cartes...un projet datant de ...euh...1999 oulllaaa
En plus j'avais fini tout le programme principal
Il ne restait que quelques trucs (jeu avec la souris ... même les dessins étaient prêts)
Jeu de cartes contre de jolies mlles dans le style Peach Up et Pink Sox
J'en ai deux autres projets en plus en attente ...
2015 MSX
En plus j'avais fini tout le programme principal
Il ne restait que quelques trucs (jeu avec la souris ... même les dessins étaient prêts)
Jeu de cartes contre de jolies mlles dans le style Peach Up et Pink Sox
J'en ai deux autres projets en plus en attente ...
2015 MSX
MSXien...pur et dur et toujours Supmsx
pour s'entrainer sur nos machines il y a un jeu en basic POKER 5 : www.hebdogiciel.fr/hd-roms/msx/poker5.zip
et RYUKYU : http://www.generation-msx.nl/software/ascii/ryukyu/release/1336/
dont le concept est plus jouable que le poker normal
et RYUKYU : http://www.generation-msx.nl/software/ascii/ryukyu/release/1336/
dont le concept est plus jouable que le poker normal
ericb59
Membre non connecté
Conseiller Municipal
Entrons dans le vif du sujet
Le programme si dessus :
- affiche le nom des 52 cartes.
- Mélange les cartes
- Tire 5 cartes du paquet
- Puis trie ces 5 cartes dans l'ordre decroissant de leur valeur
- puis identifie si une main gagnante est présente Edité par ericb59 Le 19/01/2015 à 09h15
Code TEXT :
10 REM POKER BRIDE - project 20 ' 30 DIM S$(3):DIM ST(3):DIM RK(12):DIM R$(12):DIM M$(9):DIM J(51):DIM M1(4):DIM S1(4):DIM R1(4) 40 DATA "trèfles","Carreaux","Coeurs","Piques" 50 DATA "2","3","4","5","6","7","8","9","10","Valet","Dame","Roi","As" 60 DATA "rien","Une paire","Deux paire","Brelan","Suite","Flush","Full house","Carr‚","Quinte Flush","Quite Flush Royale" 65 DATA 0,1,2,3,4,5,6,7,8,9,10,11,12 66 DATA 0,1,2,3 70 FOR I=0TO3:READ X$:S$(I)=X$:NEXT I 80 FOR I=0TO12:READ X$:R$(I)=X$:NEXT I 90 FOR I=0TO9:READ X$:M$(I)=X$:NEXT I 91 FOR I=0 TO 12:READ X: RK(I)=X:NEXT I 92 FOR I=0 TO 3:READ X: ST(I)=X:NEXT I 95 ' Affiche du jeu de carte 100 FOR I=0 TO 51 110 S=CINT(I/13):R=I MOD 13 120 PRINT I+1;"-";R$(R);" de "; S$(S):J(I)=I:REM J= jeu de carte dans l'ordre 130 NEXT:GOSUB 3000 200 ' Tirage de 5 cartes par le bas du paquet 201 K=0:PRINT:PRINT:PRINT "Tirage de 5 cartes" 205 FOR I=0 TO 4 230 M1(I)=J(K):K=K+1:S=CINT(J(K)/13):R=J(K)MOD 13:S1(I)=ST(S):R1(I)=RK(R) 240 PRINT K;:PRINT " - ";R$(R1(I));" de ";S$(S1(I)) 250 NEXT I 260 ' tri des cartes tir‚es par permutation 270 FOR I=0 TO 4:FOR J=0 TO 3 280 IF R1(J+1)>R1(J) THEN SWAP R1(J),R1(J+1):SWAP S1(J),S1(J+1) 300 NEXTJ,I 310 PRINT "----------------" 320 FOR K=0 TO 4 330 PRINT K;:PRINT " - ";R$(R1(K));" de ";S$(S1(K)) 340 NEXT K 345 ' recherche d'une main et affiche la main trouv‚e 350 MA$="":GOSUB 1100:PRINT MA$ 360 END 1100 ' verifications de la main 1350 ' v‚rifie si quinte flush royale 1355 IF (R1(0)=12 AND R1(1)=11 AND R1(2)=10 AND R1(3)=9 AND R1(4)=8) AND (S1(0)=S1(1) AND S1(1)=S1(2) AND S1(2)=S1(3) AND S1(3)=S1(4)) THEN MA$=(9):RETURN 1360 ' v‚rifie si Quinte flush 1365 IF(R1(0)-R1(1)=1 AND R1(1)-R1(2)=1 AND R1(2)-R1(3)=1 AND R1(3)-R1(4)=1) AND (S1(0)=S1(1) AND S1(1)=S1(2) AND S1(2)=S1(3) AND S1(3)=S1(4))THEN MA$=M$(8):RETURN 1370 ' v‚rifie si carr‚ 1371 IF R1(0)=R1(1) AND R1(1)=R1(2) AND R1(2)=R1(3) THEN MA$=M$(7):RETURN 1372 IF R1(1)=R1(2) AND R1(2)=R1(3) AND R1(3)=R1(4) THEN MA$=M$(7):RETURN 1390 ' v‚rifie si Full house 1395 IF R1(0)=R1(1) AND R1(1)=R1(2) AND R1(3)=R1(4) THEN MA$=M$(6):RETURN 1400 IF R1(2)=R1(3) AND R1(3)=R1(4) AND R1(0)=R1(1) THEN MA$=M$(6):RETURN 1410 ' v‚rifie si couleur 1425 IF S1(0)=S1(1) AND S1(1)=S1(2) AND S1(2)=S1(3) AND S1(3)=S1(4) THEN MA$=M$(5):RETURN 1430 ' v‚rifie si Quinte 1435 IF R1(0)-R1(1)=1 AND R1(1)-R1(2)=1 AND R1(2)-R1(3)=1 AND R1(3)-R1(4)=1 THEN MA$=M$(4):RETURN 1436 IF R1(1)-R1(2)=1 AND R1(2)-R1(3)=1 AND R1(3)-R1(4)=1 AND R1(0)=12 THEN MA$=M$(4):RETURN 1440 ' V‚rifie si brelan 1445 IF R1(0)=R1(1) AND R1(1)=R1(2) THEN MA$=M$(3):RETURN 1446 IF R1(1)=R1(2) AND R1(2)=R1(3) THEN MA$=M$(3):RETURN 1447 IF R1(2)=R1(3) AND R1(3)=R1(4) THEN MA$=M$(3) 1450 ' v‚rifie si double paire 1455 IF R1(0)=R1(1) AND R1(2)=R1(3) THEN MA$=M$(2):RETURN 1456 IF R1(1)=R1(2) AND R1(3)=R1(4) THEN MA$=M$(2):RETURN 1457 IF R1(0)=R1(1) AND R1(3)=R1(4) THEN MA$=M$(2):RETURN 1460 ' v‚rifie si paire 1465 IF R1(0)=R1(1) THEN MA$=M$(1):RETURN 1466 IF R1(1)=R1(2) THEN MA$=M$(1):RETURN 1467 IF R1(2)=R1(3) THEN MA$=M$(1):RETURN 1468 IF R1(3)=R1(4) THEN MA$=M$(1):RETURN 1470 ' aucune main 1475 MA$=M$(0):RETURN 3000 ' m‚lange du jeu de carte 3010 PRINT:PRINT "m‚langre du jeu de carte" 3020 PRINT 3030 W=CINT((RND(-TIME)*400)):PRINT W;"permutations" 3040 FOR I=1 TO W 3050 M=CINT(RND(-TIME)*100):IF M>51 THEN 3050 3055 N=CINT(RND(-TIME)*100):IF N>51 THEN 3055 3060 SWAP J(N),J(M) 3070 NEXT:RETURN
Le programme si dessus :
- affiche le nom des 52 cartes.
- Mélange les cartes
- Tire 5 cartes du paquet
- Puis trie ces 5 cartes dans l'ordre decroissant de leur valeur
- puis identifie si une main gagnante est présente Edité par ericb59 Le 19/01/2015 à 09h15
Maggoo oui, c'est à celui-là que je pensais :
http://www.generation-msx.nl/software/the-bytebusters/red-lights-of-amsterdam/2402/
Il doit y avoir tout de même quelques routines en machines, au moins pour la musique.
http://www.generation-msx.nl/software/the-bytebusters/red-lights-of-amsterdam/2402/
Il doit y avoir tout de même quelques routines en machines, au moins pour la musique.
ericb59
Membre non connecté
Conseiller Municipal
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie