class PartieUno: Defausse = [] cartesValides = [] def __init__(self, joueur): self.__joueur = joueur self.__ordinateur1 = Joueur('C3PO', 'Droid') self.__ordinateur2 = Joueur('D2', 'R2') self.__ordinateur3 = Joueur('9000', 'HAL') self.__jeu = JeuUno() def demarrerPartie(self): self.__melanger() self.__distribuer() self.__premiereCarte() poursuivre = True Tour = 1 while poursuivre: if Tour == 1: poursuivre = self.__tour(self.__joueur, self.Defausse) Tour += 1 elif Tour == 2: poursuivre = self.__tour(self.__ordinateur1, self.Defausse) Tour += 1 elif Tour == 3: poursuivre = self.__tour(self.__ordinateur2, self.Defausse) Tour += 1 elif Tour == 4: poursuivre = self.__tour(self.__ordinateur3, self.Defausse) Tour += 1 else: Tour =1 def __melanger(self): self.__jeu.melanger() def __distribuer(self): for i in range(7): self.__joueur.ajouterCarte(self.__jeu.tirer()) self.__ordinateur1.ajouterCarte(self.__jeu.tirer()) self.__ordinateur2.ajouterCarte(self.__jeu.tirer()) self.__ordinateur3.ajouterCarte(self.__jeu.tirer()) def __premiereCarte(self): Defausse = self.Defausse Defausse.append(self.__jeu.cartes[0]) self.__jeu.cartes.pop(0) while Defausse[0].value == 4: Defausse.insert(0, self.__jeu.cartes[0]) self.__jeu.cartes.pop(0) print('La première carte est :' + str(Defausse[0])) self.Defausse = Defausse def __main(self, joueur): return True def finPartie(self, perdant1, perdant2, perdant3, gagnant): perdant1.defaites += 1 perdant2.defaites += 1 perdant3.defaites += 1 gagnant.victoires += 1 print('{} {} a gagné!'.format(gagnant.prenom, gagnant.nom)) def __validation(self, carteJouee, carteJoueur): if carteJoueur.value != carteJouee.value: if carteJoueur.color != carteJouee.color: if carteJoueur.color != 4: return False carteJoueur return True def __tour(self, joueur, jeu): print("La carte en jeu est :" + str(jeu[0])) if jeu[0].value > 14: return True else: mainJoueur = joueur.paquet.cartes if len(mainJoueur) > 0: for i in range(len(mainJoueur)): if self.__validation(mainJoueur[i], jeu[0]): self.cartesValides.insert(0, mainJoueur[i]) print("Au tour de : {} {}".format(joueur.prenom, joueur.nom)) print("Vos cartes sont : " + str(mainJoueur) + " ") if len(self.cartesValides) > 0: print("Les cartes que vous pouvez jouer sont :" + str(self.cartesValides)) self.Defausse.insert(0, self.cartesValides[0]) self.cartesValides.pop(0) else: print("Vous ne pouvez pas jouer, vous piochez une carte") joueur.ajouterCarte(self.__jeu.tirer(True)) if len(mainJoueur) > 0: return True return False
class PartieBataille: def __init__(self, joueur): self.__joueur = joueur self.__ordinateur = Joueur('9000', 'HAL') self.__jeu = JeuClassique() def demarrerPartie(self): self.__melanger() self.__distribuer() poursuivre = True while poursuivre: poursuivre = self.__main() def __melanger(self): self.__jeu.melanger() def __distribuer(self): for i in range(len(self.__jeu.cartes)): carte = self.__jeu.tirer() if i % 2 == 0: self.__joueur.ajouterCarte(carte) else: self.__ordinateur.ajouterCarte(carte) def __main(self, reste=[]): carte_joueur = self.__joueur.tirerCarte(True) carte_ordinateur = self.__ordinateur.tirerCarte() if carte_joueur is None: self.finPartie(self.__joueur, self.__ordinateur) return False elif carte_ordinateur is None: self.finPartie(self.__ordinateur, self.__joueur) return False print("Main : ") print(' -{} {} : {}'.format(self.__joueur.prenom, self.__joueur.nom, str(carte_joueur))) print(' -{} {} : {}'.format(self.__ordinateur.prenom, self.__ordinateur.nom, str(carte_ordinateur))) if carte_joueur.value == carte_ordinateur.value: reste.append(carte_joueur) reste.append(carte_ordinateur) return self.__bataille(reste) elif carte_joueur.value > carte_ordinateur.value: self.__joueur.ajouterCarte(carte_joueur) self.__joueur.ajouterCarte(carte_ordinateur) print(' -{} {} gagne la main'.format(self.__joueur.prenom, self.__joueur.nom)) else: self.__ordinateur.ajouterCarte(carte_ordinateur) self.__ordinateur.ajouterCarte(carte_joueur) print(' -{} {} gagne la main'.format(self.__ordinateur.prenom, self.__ordinateur.nom)) return True def __bataille(self, reste): print('*** BATAILLE ***') return self.__main(reste) def finPartie(self, perdant, gagnant): perdant.defaites += 1 gagnant.victoires += 1 print('{} {} a gagné!'.format(gagnant.prenom, gagnant.nom))