from File import File_chaine as File from random import shuffle class Carte: def __init__(self, valeur, couleur): self.valeur = valeur self.couleur = couleur def compare(self, autre): if self.valeur > autre.valeur: return 1 elif self.valeur < autre.valeur: return -1 else: return 0 def __str__(self): return str(self.valeur) + " " + self.couleur class Jeu: def __init__(self, nom1="joueur1", nom2="joueur 2"): self.paquet = [] self.f1 = None self.f2 = None self.nom1 = nom1 self.nom2 = nom2 def distribue(self, nb_total_cartes): self.paquet = [] self.f1 = File() self.f2 = File() couleurs = ["pique", "carreau", "coeur", "trèfle"] nombre = nb_total_cartes // 4 for valeur in range(nombre): for couleur in couleurs: self.paquet.append(Carte(valeur, couleur)) shuffle(self.paquet) for i in range(nombre * 2): self.f1.enfiler(self.paquet[i]) for i in range(nombre * 2, nombre * 4): self.f2.enfiler(self.paquet[i]) return self.f1, self.f2 def partie(self): while not self.f1.est_vide() and not self.f2.est_vide(): c1 = self.f1.defiler() c2 = self.f2.defiler() print(c1, c2, "\n") if c1.compare(c2) == 1: self.f1.enfiler(c1) self.f1.enfiler(c2) elif c1.compare(c2) == -1: self.f2.enfiler(c1) self.f2.enfiler(c2) else: while True: pot = [c1, c2] if self.f1.taille() < 2: return "{} gagne ({} n'a pas assez de carte)".format(self.nom2, self.nom1) if self.f2.taille() < 2: return "{} gagne ({} n'a pas assez de carte)".format(self.nom1, self.nom2) pot.append(self.f1.defiler()) pot.append(self.f2.defiler()) c1 = self.f1.defiler() c2 = self.f2.defiler() print(c1, c2) pot.extend([c1, c2]) if c1.compare(c2) == 1: for c in pot: self.f1.enfiler(c) break elif c1.compare(c2) == -1: for c in pot: self.f2.enfiler(c) break print(self.f1, "\n\n", self.f2, "\n") if self.f1.est_vide(): return "{} gagne".format(self.nom2) else: return "{} gagne".format(self.nom1) nom1 = input("Nom du joueur 1 : ") nom2 = input("Nom du joueur 2 : ") nb_total_cartes = int(input("Nombre total de cartes dans le paquet : ")) jeu = Jeu(nom1, nom2) f1, f2 = jeu.distribue(nb_total_cartes) print(f"{nom1} :", f1) print(f"{nom2} :", f2) print(jeu.partie())