MSX Village forum

La Place des Développeurs Poker Brides - Projet

ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 17/01/2015 à 11h31
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 :lol
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


banniere-ericb59e
Site web    
pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 17/01/2015 à 13h40
Pour l’identification des mains, j'avais fait un algo il y a un moment. On se rend compte qu'il y a une hiérarchie qui en découle. Il faudrait que ej te retrouve ça.

Peg'


Rétro ... mais pas trop !
   
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 17/01/2015 à 14h03
On recherche aussi une Msxienne pour la digitalisation et le doublage voix, car on a deja essayé avec eric :D mais c'est pas concluant :gne
Surtout quand il dit la célèbre phrase :"Tu viens jouer avec Moi?! " :lol



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
RibbSayan Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 19/08/2010 à 22h47

Messages: 154

Le 17/01/2015 à 14h07
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/
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 17/01/2015 à 15h15
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


banniere-ericb59e
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 17/01/2015 à 15h52
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/






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


banniere-ericb59e
Site web    
bpmsx Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 20/03/2013 à 19h45

Messages: 485

Le 17/01/2015 à 18h34
Bonjour tous
Tant que vous y serez, continuer par un tarot 3-4 et 5 joueurs sur msx et une belote sur msx
Merci


bpmsx
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 17/01/2015 à 20h29
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


banniere-ericb59e
Site web    
metalgear Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 12/10/2009 à 17h29

Messages: 778

Le 18/01/2015 à 13h40
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 :p
J'en ai deux autres projets en plus en attente ... :sick
2015 :noel MSX



MSXien...pur et dur et toujours Supmsx
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 18/01/2015 à 13h48
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


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 18/01/2015 à 18h13
Entrons dans le vif du sujet

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


banniere-ericb59e
Site web    
Maggoo Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 25/06/2013 à 17h49

Messages: 192

Le 18/01/2015 à 21h11
Cool, je me souviens avoir vu les graphismes de teenage queen du ST convertis sur MSX il y a tres longtemps. Au fait, redlight sur MSX2 est 100% en basic.... Edité par Maggoo Le 18/01/2015 à 21h11
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 19/01/2015 à 01h15
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.
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 19/01/2015 à 08h44
Eric,

C'est "Trèfles", pas "Treffles".


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 19/01/2015 à 09h15
Metalion :
Eric,



C'est "Trèfles", pas "Treffles".




corrigé :siffle

merci... C'était pour voir si vous suiviez.... :lol Edité par ericb59 Le 19/01/2015 à 09h16


banniere-ericb59e
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie