Jeu de carte Python

Jeu de carte Python - Python - Programmation

Marsh Posté le 07-04-2014 à 14:54:58    

Bonjour, j'ai pour projet en informatique de crée un jeu de carte (Jeu du president ) j'ai réussi à crée le jeu de carte et à le mélanger mais je n'arrive pas à le distribué aux joueurs .  
Pour que ma question soit clair je vais expliquer comment j'ai pensé le faire et mettre mon code apres .  
Je demande donc en premier le nombre de joueurs qui peut être 4 5 ou 6  
J'ai ensuite crée une liste Joueurs qui comporte elle meme 6 sous liste .  
J'ai fait correspondre en suite chaque indice de la liste Joueurs a J1,J2,J3,J4 .... pour que ce soit plus simple ulterieurement .  
Mon but serai de crée une boucle qui parcours le jeu de carte (melanger) carte par carte et qui met une carte dans le joueurs 1 la suivante dans le joueurs 2 et ainsi de suite jusqu'a la fin de la liste .  
Pour cela il faut que ma boucle parcours le jeu de carte mais aussi la liste de joueurs en prenant aussi en compte le nombre de joueurs fournit au debut .  
et je bloque completement je n'arrive pas a faire une double boucle et meme si cela existe .  
J'ai pensé a une autre solution aussi, par exemple faire ensorte que la distribution ne ce fasse pas carte par carte mais directement le nombre de carte que le joueurs doit posseder ... mais encore là je ne voit pas trop comment faire .  
Si vous pouvez m'aider ou me donner une piste merci  
 
 
 

Code :
  1. # Melange et Distribution des cartes #
  2.  
  3.                            # Creation du Paquet De Jeu de 52 cartes #
  4.  
  5. # definition des variables pour la création du paquet de Jeu
  6. enseigne=["pique","carreau","trefle","coeur"]
  7. valeur=[1,3,4,5,6,7,8,9,10,"valet","dame","roi",2]
  8.  
  9.  
  10. def creation():
  11.    return [(x,y) for x in valeur for y in enseigne]
  12.  
  13. PaquetDeCarte = creation()
  14.                            # Creation de la fonction Melange de cartes #
  15.  
  16. import random
  17.  
  18. PaquetDeCarteMelanger = random.sample(PaquetDeCarte,52)
  19.  
  20.                            # Création du programme de distribution de carte pour n joueurs #
  21.  
  22. NombreJoueurs = int(input("Quel est le nombre de joueurs ? (entre 4 et 6 )" ))
  23.  
  24. Joueurs = [[],[],[],[],[],[]]
  25.  
  26.  
  27. J1 = Joueurs[0]
  28. J2 = Joueurs[1]
  29. J3 = Joueurs[2]
  30. J4 = Joueurs[3]
  31. J5 = Joueurs[4]
  32. J6 = Joueurs[5]
  33.  
  34.  
  35.  
  36.  
  37.  
  38. NbDeCarteParJoueurs = int (52 / NombreJoueurs)
  39. print(NbDeCarteParJoueurs)
  40.  
  41. for carte in PaquetDeCarteMelanger:

Reply

Marsh Posté le 07-04-2014 à 14:54:58   

Reply

Marsh Posté le 08-04-2014 à 17:09:56    

random.sample ça sert pas à mélanger une collection hein :o C'est random.shuffle qui fait ça :o Le principe de random.sample c'est de récupérer un sous-ensemble aléatoire de la collection de base.
 
Pour distribuer des cartes aux joueurs, tu peux garder un index dans ta séquence de carte et donner la carte courante au "index % players_count" (avec une indexation à 0), sauf naturellement que ça collera pas si le nombre de cartes n'est pas divisible par le nombre de joueurs, donc tu voudras probablement slicer le paquet pour ne garder qu'un nombre de cartes qui correspond.
 
Alternativement tu peux utiliser le recipe "grouper" d'itertools pour créer des groupes de "cards_per_player" cartes et assigner ça, ou tu peux zipper tes cartes (slicée) avec un cycle de tes joueurs pour définir l'association.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed