Jeu de poker
Kadjarnn
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour a tous
Enfait je suis entrain de créé un programme qui simule une partie de poker avec 32 cartes j'ai créé un typedef struc pour stoker le variable couleur et le signe
De même j'ai créé une fonction pour genere le 32 carte .
Mon probleme se situé au niveau de la création d'un jeu de carte pour la partie enfaite j'ai affecte a un tableau de typedef la fonction que j'ai créer dans une boucle mais le probleme pendat l'affichage j'ai des doublons de même carte j'ai vous demende un aide svp car cela ca fait plusieurs jour que j'ai suis bloque
Enfait je suis entrain de créé un programme qui simule une partie de poker avec 32 cartes j'ai créé un typedef struc pour stoker le variable couleur et le signe
De même j'ai créé une fonction pour genere le 32 carte .
Mon probleme se situé au niveau de la création d'un jeu de carte pour la partie enfaite j'ai affecte a un tableau de typedef la fonction que j'ai créer dans une boucle mais le probleme pendat l'affichage j'ai des doublons de même carte j'ai vous demende un aide svp car cela ca fait plusieurs jour que j'ai suis bloque
A voir également:
- Jeu de poker
- 94 jeu - Télécharger - Puzzle & Réflexion
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu zuma - Télécharger - Jeux vidéo
- Logo jeu - Télécharger - Jeux vidéo
- Jeux de moto: jeu de course 3d - Télécharger - Course
3 réponses
OK, c'est donc un exercice.
Dans ton énoncé
Puis, mélange ton paquet (avec l'algorithme de Yates-shuffle, par exemple, qui opère des permutations successives aléatoirement). Dès lors, pour tirer une carte au hasard, il te suffira de prendre les cartes une par une dans l'ordre du tableau. Avec cette méthode, pas besoin d'un champ supplémentaire.
Tu auras alors un paquet de cartes
Ainsi, pour faire un tirage de 5 cartes, tu prends juste successivement les cartes aux indices 0, 1, 2, 3, 4 du tableau
Tu peux copier ou affecter des
Si tu dois piocher la carte suivante sur le paquet, tu prend la carte à l'indice 5 du tableau
N.B.
Note que j'ai juste survolé ton code, et qu'il ne compile pas en raison des nombreuses erreurs de syntaxe (majuscules aux mots clefs du C notamment) et de son caractère incomplet.
Dans ton énoncé
enrjeux32contient ton jeu de 32 cartes. D'abord, crée ce tableau avec toutes les cartes dans l'ordre des couleurs et des valeurs. A ce stade, ton paquet de cartes est complet, mais il n'est pas encore correctement initialisé car il n'est donc pas mélangé.
Puis, mélange ton paquet (avec l'algorithme de Yates-shuffle, par exemple, qui opère des permutations successives aléatoirement). Dès lors, pour tirer une carte au hasard, il te suffira de prendre les cartes une par une dans l'ordre du tableau. Avec cette méthode, pas besoin d'un champ supplémentaire.
Tu auras alors un paquet de cartes
enrjeux32avec lequel il te suffit de piocher pour tirer une carte (comme dans un jeu réel avec un vrai donneur).
Ainsi, pour faire un tirage de 5 cartes, tu prends juste successivement les cartes aux indices 0, 1, 2, 3, 4 du tableau
enrjeux32et tu les copies dans
enrTabMonJeu.
Tu peux copier ou affecter des
structde même type avec
=.
Si tu dois piocher la carte suivante sur le paquet, tu prend la carte à l'indice 5 du tableau
enrjeux32, etc.
N.B.
Note que j'ai juste survolé ton code, et qu'il ne compile pas en raison des nombreuses erreurs de syntaxe (majuscules aux mots clefs du C notamment) et de son caractère incomplet.
Salut Kadjarnn,
Cela dépend de tes structures de données existantes.
Si tu as une structure de données qui te permet de stocker les 32 cartes, une façon de faire est d'insérer une variable en tant que membre de la struct pour chacune des 32 cartes, par exemple
Il y a d'autres façons de faire, avec d'autres façons de représenter les cartes ou le jeu de cartes mélangé.
Dal
Cela dépend de tes structures de données existantes.
Si tu as une structure de données qui te permet de stocker les 32 cartes, une façon de faire est d'insérer une variable en tant que membre de la struct pour chacune des 32 cartes, par exemple
int distribuee;qui indiquera si la carte a déjà été distribuée ou pas. Si c'est le cas et que tu tombes dessus, tu refais un tirage aléatoire jusqu'à ce que tu tombes sur une carte non encore distribuée.
Il y a d'autres façons de faire, avec d'autres façons de représenter les cartes ou le jeu de cartes mélangé.
Dal
Par exemple, avec un tableau représentant toutes les cartes uniques, mélangé comme cela :
https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
https://stackoverflow.com/questions/3343797/is-this-c-implementation-of-fisher-yates-shuffle-correct
https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
https://stackoverflow.com/questions/3343797/is-this-c-implementation-of-fisher-yates-shuffle-correct
Peux-tu poster ton code pour que l'on comprenne comment tu représentes et stockes ton jeu de cartes et les cartes distribuées aux joueurs et t'aider à partir de ta façon de le faire ?
Autrement, je peux te montrer comment, moi, je le ferais, sans avoir besoin de rajouter un champ de statut de distribution, en utilisant un tableau représentant le jeu de carte mélangé.
Autrement, je peux te montrer comment, moi, je le ferais, sans avoir besoin de rajouter un champ de statut de distribution, en utilisant un tableau représentant le jeu de carte mélangé.
Voila mon programme la fonction Void initjeu32( TCarte enrtabcarte32[ ], int iTaille) elle me genere le 32 carte
#define TAILLE 5 #define SIZE 32 Type defstruct{ Char mcCouleur; Int mivaluer; }TCarte; Void initjeu32( TCarte enrtabcarte32[ ], int iTaille); Void main (void){ TCarte enrtabmonjeu[TAILLE]; TCarte enrjeux32[SIZE]; Int ibcl=0; Int ival=0; Srand((int)time(NULL)); For(ibcl=0;ibcl<TAILLE;ibcl++){ Ival=rand()%32; enrtabmonjeu[ibcl].mivaleur= TCarte enrjeux32[ival].mivaleur, enrtabmonjeu[ibcl].mcCouleur TCarte enrjeux32[ival].mcCouleur } For(ibcl=0;ibcl<TAILLE;ibcl++){ Printf(" carte numero %i= %c %i\n",ibcl, enrtabmonjeu[ibcl].mcCouleur, enrtabmonjeu[ibcl].mivaleur); } Type defstruct{ Char mcCouleur; Int mivaluer; }TCarte; Void initjeu32( TCarte enrtabcarte32[ ], int iTaille);
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
Ducoup avant de remplir mon tableu j'ai doit melager le carte et puis les affecte a pon tableau mais comment on sait si aura pas de doublons
Voila aussi la fonction qui genere le carte
Par exemple, avec un tableau représentant toutes les cartes uniques, mélangé comme cela :
https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
https://stackoverflow.com/questions/3343797/is-this-c-implementation-of-fisher-yates-shuffle-correct
- personnellement, je n'aime pas les et quand je peux m'en passer je ne les utilise pas car cela masque la véritable nature du type (maintenant, si tu dois les utiliser car c'est un devoir, fais le)
- les noms de types et les noms de variables ou de tableaux me paraissent compliqués et ne me parlent pas du tout (même observation)
- j'utiliserai des tableaux pour établir la liste des couleurs et des valeurs (en respectant l'ordre de valeur, afin d'utiliser ce tableau pour faciliter ensuite l'évaluation de la main)
- j'utiliserai la notation internationale pour la désignation du nom des cartes et de leur couleur, car celle que tu utilises n'est familière ni en France, ni ailleurs (maintenant, si tu dois l'utiliser car c'est un devoir, fais le)
- je construirai le jeu pour un paquet de 52 cartes, parce que je n'aime pas les jeux à 32 cartes (même remarque)
- et donc j'utiliserai le mélange de Fisher-Yates en m'inspirant de l'une de ses implémentations
Cela peut alors se faire comme cela :
Donne, par exemple :
Dal