Bonjour il faut que je fasse la class bataille. Pour obtenir dans la console (regarder la pièce jointe).
Pour l'instant j'ai fait les class Carte(), JeuCarte() et Joueur().
Et j'ai essayer de faire la class bataille:Code:-class carte: # Variables globales couleurs = ('CARREAU', 'COEUR', 'TREFLE', 'PIQUE') noms = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'Valet', 'Dame', 'Roi', 'As'] valeurs = {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'Valet': 11, 'Dame': 12, 'Roi': 13, 'As': 14} # Classe Carte class Carte: def __init__(self, nom, couleur): if nom in noms: # Affectation des attributs nom et couleur (avec contrôle dans un deuxième temps). self.nom = nom self.valeur = valeurs[nom] else: print("erreur de nom") if couleur in couleurs: self.couleur = couleur else: print("erreur de couleur") ################# Définition des méthodes d'instances avec contrôle ####### def setNom(self, nouveauNom): # setter self.nom = nouveauNom self.valeur = valeurs[nouveauNom] def getNom(self): # getter return self.nom def getCouleur(self): # getter return self.couleur def getValeur(self): # getter return self.valeur def egalite(self, carteN2): ''' Renvoie True si les cartes ont même valeur, False sinon carte: Objet de type Carte ''' if self.getValeur() == carteN2.getValeur(): return True else: return False def estSuperieureA(self, carteN2): ''' Renvoie True si la valeur de self est supérieure à celle de carte, False sinon carte: Objet de type Carte ''' if self.getValeur() > carteN2.getValeur(): return True else: return False def estInferieureeA(self, carteN2): ''' Renvoie True si la valeur de self est inferieure à celle de carte, False sinon carte: Objet de type Carte ''' if self.getValeur() < carteN2.getValeur(): return True else: return False def __str__(self): return "La carte est le "+self.getNom()+" de "+self.couleur -class Jeucarte: class JeuCartes(): def __init__(self, nbCartes=52): # Le jeu doit comporter 32 ou 52 cartes, effectuer un contrôle self.nbCartes = nbCartes self.jeu = [] # self.jeu est une liste des self.nbCartes self.creerJeu() # on appelle la méthode adequate qui fera le boulot ########################################################################### ################# Définition des méthodes d'instances ##################### ########################################################################### def getTailleJeu(self): ''' Fonction qui retourne le nombre de cartes du jeu Valeur retournée: type int ''' return self.nbCartes def creerJeu(self): # utilise des objet '''Créée la liste des cartes de l'attribut self.jeu. Lors de cette création, les cartes sont rangés dans un ordre prédéfini. On exploitera les variables globales se trouvant dans le fichier python contenant la classe Carte Pour la suite, la liste de cartes pourra être vue comme une pile: l'indice 0 est la carte la plus en dessous, l'indice le plus élevé correspondant à la carte du dessus qui pourra être distribuée par la suite ''' for couleur in couleurs: for nom in noms: if (self.nbCartes == 32 and nom not in ['2','3','4','5','6']): self.jeu.append(Carte(nom, couleur)) if (self.nbCartes == 52): self.jeu.append(Carte(nom, couleur)) def getJeu(self): '''Renvoie la liste des cartes correspondant à l'attribut self.jeu''' return self.jeu def melanger(self): # utiliser une fonction tout faite se trouvant dans le module random ... '''Mélange sur place les cartes de la liste des cartes associée au champ self.jeu''' return random.shuffle(self.jeu) def distribuerCarte(self): ''' Cette fonction permet de distribuer une carte à un joueur. Elle retourne la carte Valeur retournée: Objet de type Carte ''' derniereCarte= (self.jeu[-1]) self.jeu.pop() return derniereCarte def distribuerJeu(self, nbJoueurs, nbCartes): ''' Cette méthode distribue nbCartes à chacun des nbJoueurs, Cela reviendra à retourner un tableau à nbJoueurs lignes et nbCartes colonne contenant les cartes ''' if (nbJoueurs*nbCartes<=self.nbCartes): tableau=[] for i in range(nbJoueurs): tableau.append([]) for j in range(nbCartes): tableau[i].append(self.distribuerCarte()) return tableau else: print("Pas assez de cartes dans le jeu") -class Joueur: class Joueur(): def __init__(self, surnom): # On peut imaginer que lors de la création du joueur, ce dernier n'a pas encore de carte. self.nom = surnom self.nbCartes = 0 # valeur par défaut qui sera modifiée self.mainJoueur = [] # valeur par défaut qui sera modifiée ########################################################################### ################# Définition des méthodes d'instances ##################### ########################################################################### def setMain(self,listeCartes): ''' Initialise la main du joueur avec la liste des cartes donnée comme paramètre d’entrée ''' self.mainJoueur = listeCartes self.nbCartes= self.nbCartes + len(self.mainJoueur) def getNom(self): '''Accesseur de l’attribut nom ''' return self.nom def getNbCartes(self): '''Accesseur de l’attribut nbCartes''' return self.nbCartes def jouerCarte(self): '''Enlève et renvoie la dernière carte du dessus (objet de type Carte) de la main du joueur, ou retourne None s’il n’y a plus de cartes dans la main du joueur''' derniereCarte= (self.mainJoueur[-1]) if (derniereCarte == []): print("None") else: self.mainJoueur.pop() self.nbCartes = self.nbCartes - 1 return derniereCarte def insererMain(self,listeCartesGagnees): ''' Méthode qui insère des cartes dans la main du Joueur « en dessous »''' for liste in listeCartesGagnees: self.mainJoueur.insert(0,liste) self.nbCartes = self.nbCartes +1 return self.mainJoueur
Code:class Bataille(): def __init__(self, nomJ1, nomJ2, tailleJeuCartes): # L'initialisation va créer les 2 joueurs, mélanger et distribuer les cartes self.J1 = joueur(nomJ1) self.J2 = joueur(nomJ2) # valeur par défaut qui sera modifiée self.jeuCartes = JeuCartes(tailleJeuCartes) # valeur par défaut qui sera modifiée ## On mélange le jeu et on le distribue aux 2 joueurs ########################################################################### ################# Définition des méthodes d'instances ##################### ########################################################################### def jouer(self): ''' Chaque joueur pose une carte. On regarde qui gagne. Ce dernier remporte les cartes. En cas d'égalité, chacun reprend sa carte (<- Ici, on peut changer la règle) ''' toto=Joueur("Toto") dupont=Joueur("Dupont") print("Debut:", self.jeuCartes) print(toto.getNom()," a gagné. Nombre de carte du joueur:",toto.getNbCartes())
Merci d'avance de votre réponse...
-----