""" Commentaires : ============== Il n'y a pas de fichier README. Message des commits peu explicites !! Méthodes peu documentées ! classe Jeux: Je n'aime pas beaucoup le break dans la boucle for pour la construction du paquet De plus, quel est l'intérêt d'avoir une variable jeu et un attribue paquet ?? classe Partie_TeSt: ------------------- Évitez les mélanges majuscules minuscules. Voir définitions de camel case et snake case. Gain n'a aucune raison d'être un attribut. Ça devrait être une variable locale à la méthode play_round (et ne devrait pas avoir de majuscule !) Vous défilez sans vérifier si la file est vide. Revoir le cas d'égalité.... Erreur d'indentation dans get_cards Affichage peu explicite !!!! tkinter: -------- Bouton créer et jouer : il faudrait imposer de cliquer d'abord sur créer, puis l'interdire si on a commencé à jouer. On ne sait pas trop où on en est, ni à quoi correspondent les cartes affichées, surtout en cas de "bataille". Il aurait été bien de prévoir un bouton pour aller jusqu'à la fin de la partie. Note finale : 17 """ from File import File_chaine as File import random from time import sleep class Carte: "carte" def __init__(self, valeur, couleur): self.valeur = valeur self.couleur = couleur def compare(self, other): if self.valeur > other.valeur : return 1 elif self.valeur < other.valeur : return -1 elif self.valeur == other.valeur : return 0 def __repr__(self): return str(self.valeur) def __str__(self): if self.valeur == 11: return "V" + self.couleur elif self.valeur == 12: return "D" + self.couleur elif self.valeur == 13: return "R" + self.couleur return str(self.valeur) + self.couleur class Jeux: def __init__(self, nbmax): i = 0 valeurs = [1, 7, 8, 9, 10, 11, 12, 13, 2, 3, 4, 5, 6] couleurs = ["♥", "♠", "♦", "♣"] jeu = [] for val in valeurs: if i >= nbmax: break for coul in couleurs: jeu.append(Carte(val, coul)) i += 1 random.shuffle(jeu) self.paquet = jeu def distribue(self): jeu1, jeu2 = File(), File() i = 0 for carte in self.paquet: if i%2 == 0: jeu1.enfiler(carte) else: jeu2.enfiler(carte) i += 1 return jeu1, jeu2 class Partie_TeSt: def __init__(self, nb_carte = 52): jeux = Jeux(nb_carte) self.j1, self.j2 = jeux.distribue() self.Round = 1 self.Gain = File() self.Winner = None def play_round(self): "Joue un round et change les valeur de facon pertinente, ne renvoie RIEN" self.Round += 1 c1, c2 = self.j1.defiler(), self.j2.defiler() self.Gain.enfiler(c1) self.Gain.enfiler(c2) resultat = c1.compare(c2) while resultat == 0 and self.j1.taille() >= 2 and self.j2.taille() >= 2: gaintable = [] self.Gain.enfiler(self.j1.defiler()) self.Gain.enfiler(self.j2.defiler()) c1, c2 = self.j1.defiler(), self.j2.defiler() self.Gain.enfiler(c1) self.Gain.enfiler(c2) while not self.Gain.est_vide(): gaintable.append(self.Gain.defiler()) random.shuffle(gaintable) for elem in gaintable: self.Gain.enfiler(elem) resultat = c1.compare(c2) if resultat == 1: while not self.Gain.est_vide(): self.j1.enfiler(self.Gain.defiler()) if self.j2.est_vide(): self.Winner = "le Joueur" elif resultat == -1: while not self.Gain.est_vide(): self.j2.enfiler(self.Gain.defiler()) if self.j1.est_vide(): self.Winner = "l'Ordinateur" else: if self.j1.taille() < 2 and not self.j2.taille() < 2: self.Winner = "l'Ordinateur" elif not self.j1.taille() < 2 and self.j2.taille() < 2: self.Winner = "le Joueur" else: self.Winner = "Egalité" def get_winner(self): "Renvoie le gagnant de la partie, 'Partie en cours...' si aucun gagnant n'est choisi et 'Egalité' si il y a une égalité" if self.Winner is None: return "Partie en cours..." return self.Winner def get_cards(self): "Renvoie la valeur des cartes du jeu 1 et du jeu 2, renvoie none si ils sont vide" j1_tete, j2_tete = None, None if not self.j1.est_vide(): j1_tete = self.j1.tete() if not self.j2.est_vide(): j2_tete = self.j2.tete() return j1_tete, j2_tete def get_size(self): "Renvoie la taille du jeu 1 et du jeu 2" return self.j1.taille(), self.j2.taille() if __name__ == "__main__": print("Bast is a retard for not commenting his damn code :skull:") partie = Partie_TeSt(16) while partie.get_winner() == "Partie en cours...": partie.play_round() print(partie.get_winner()) print(partie.get_cards()) print(partie.get_size()) sleep(1) print(partie.get_winner())