from random import randint from lib.File import File_lst as File class Carte: """ Classe représentant une carte Arguments: valeur: int -- Valeur allant de 2 à 14 (Valet=11, Dame=12, Roi=13, As=14) couleur: int -- Allant de 0 à 3 (0: Carreau, 1: Coeur, 2: Pique, 3: Trefle) """ CARREAU = 0 COEUR = 1 PIQUE = 2 TREFLE = 3 VALET = 11 DAME = 12 ROI = 13 AS = 14 def __init__(self, valeur, couleur): self.valeur = valeur self.couleur = couleur def compare(self, other): """Fonction permettant la comparaison entre deux cartes.""" if self.valeur > other.valeur: return 1 elif self.valeur < other.valeur: return -1 else: return 0 def __str__(self): """Fonction permettant la distinction/séparation entre la valeur et la couleur de la carte.""" return str(self.valeur) + "/" + str(self.couleur) class Jeux: """ Construction de la classe Jeux. """ def __init__(self, nbcartes): self.paquet = File() if nbcartes == 32: for couleur in [Carte.CARREAU, Carte.COEUR, Carte.PIQUE, Carte.TREFLE]: valeurs = [7, 8, 9, 10, Carte.VALET, Carte.DAME, Carte.ROI, Carte.AS] for i in range(8): rand = randint(0, len(valeurs)-1) carte = Carte(valeurs.pop(rand), couleur) self.paquet.enfiler(carte) else: for couleur in [Carte.CARREAU, Carte.COEUR, Carte.PIQUE, Carte.TREFLE]: valeurs = [2, 3, 4, 5, 6, 7, 8, 9, 10, Carte.VALET, Carte.DAME, Carte.ROI, Carte.AS] for i in range(13): rand = randint(0, len(valeurs)-1) carte = Carte(valeurs.pop(rand), couleur) self.paquet.enfiler(carte) def distribue(self): """Fonction permettant le renvoie de deux files contenant la moitié des cartes du paquet.""" cp = self.paquet f1 = File() f2 = File() while not cp.est_vide(): f1.enfiler(cp.defiler()) f2.enfiler(cp.defiler()) return f1, f2 class Joueur: """ Construction de la classe Joueur. """ def __init__(self, paquet): self.paquet = paquet self.derniere_carte = None def tire_carte(self): """Fonction qui défile la tête de la file et la renvoie.""" self.derniere_carte = self.paquet.defiler() return self.derniere_carte