Ejemplo n.º 1
0
 def testEstCompletFaux(self):
     c1 = Carte(0, 'X')
     c2 = Carte(0, 'X')
     c3 = Carte(0, 'X')
     g = GroupeCartes(c1, c2, c3)
     self.assertEqual(g.estComplet(), False)
Ejemplo n.º 2
0
 def testEstCompletVrai(self):
     c1 = Carte(1, 'A')
     c2 = Carte(2, 'B')
     c3 = Carte(3, 'C')
     g = GroupeCartes(c1, c2, c3)
     self.assertEqual(g.estComplet(), True)
Ejemplo n.º 3
0
class Borne():
    def __init__(self, pos, plateau):
        ''' 
        Crée une borne séparant les groupes de cartes g1 et g2.
        
        Paramètres
        ----------
        Position sur le plateau
        Plateau

        '''
        self.position = pos  # la position de la borne sur le plateau
        self.premierComplete = 0  # conserve  1 ou 2 correspondant au côté du joueur ayant fini en premier
        self.plateau = plateau

        self.g1 = GroupeCartes(
            Carte(self.plateau.tapis[0][self.position].valeur,
                  self.plateau.tapis[0][self.position].couleur),
            Carte(self.plateau.tapis[1][self.position].valeur,
                  self.plateau.tapis[1][self.position].couleur),
            Carte(self.plateau.tapis[2][self.position].valeur,
                  self.plateau.tapis[2][self.position].couleur))
        # le groupe de cartes du côté du joueur 1
        self.g2 = GroupeCartes(
            Carte(self.plateau.tapis[4][self.position].valeur,
                  self.plateau.tapis[4][self.position].couleur),
            Carte(self.plateau.tapis[5][self.position].valeur,
                  self.plateau.tapis[5][self.position].couleur),
            Carte(self.plateau.tapis[6][self.position].valeur,
                  self.plateau.tapis[6][self.position].couleur))
        # le groupe de cartes du côté du joueur 2

        self.g1.carteCourante = 2
        self.g2.carteCourante = 4

    def __str__(self):
        '''
        Affiche 'Contenu du groupe 1 - No de borne - Contenu du groupe 2'.
        
        Paramètres
        ----------
        Aucun
        
        Renvoie
        -------
        s: str
            La chaîne de caractères qui sera affichée via ''print''
        '''
        return str(self.g1) + ' - ' + str(self.position) + ' - ' + str(self.g2)

    def peutComparer(self):
        '''
        Vérifie que chacun des groupes de cartes de part et d'autre de la borne est bien complet
        
        Paramètres
        ----------
        Aucun
        
        Renvoie
        -------
        True ou False
        '''
        self.g1.calculForce()
        self.g2.calculForce()
        return (self.g1.estComplet() and self.g2.estComplet())

    def comparer(self):
        '''
        Compare les 2 groupes de cartes de chacun des côtés de la borne
        La victoire et donc la possession de la borne est attribuée au joueur possédant
        le groupe le plus fort et, en cas d'égalité, de plus haut total de points et, en
        cas d'égalité, le premier complété
        
        Paramètres
        ----------
        Aucun
        '''
        #Verif de possibilité de comparaison
        if self.peutComparer():
            # Première condition de victoire via la force
            if (self.g1.force > self.g2.force):
                self.plateau.tapis[3][self.position] = 'J1'
            elif (self.g2.force > self.g1.force):
                self.plateau.tapis[3][self.position] = 'J2'
            else:
                # En cas d'égalité, on compare le total de points
                if (self.g1.totalPoints > self.g2.totalPoints):
                    self.plateau.tapis[3][self.position] = 'J1'
                elif (self.g2.totalPoints > self.g1.totalPoints):
                    self.plateau.tapis[3][self.position] = 'J2'
                else:
                    # Enfin, en cas d'égalité à nouveau, le premier à avoir complété son côté gagne
                    self.plateau.tapis[3][self.position] = 'J{0}'.format(
                        self.premierComplete)

    def verifPremierComplete(self, jeu):
        '''
        Accesseur de la variable d'instance premierComplete
        
        Parametres
        ----------
        Jeu, la partie en cours
        '''
        if jeu.joueurCourant == 1:
            if (self.g1.estComplet() and not self.g2.estComplet()):
                self.premierComplete = 1
        else:
            if (self.g2.estComplet() and not self.g1.estComplet()):
                self.premierComplete = 2

    def rafraichir(self):
        '''
        Rafraîchit le contenu de la borne à l'aide des éléments du tableau
        
        Paramètres
        ----------
        Aucun
        '''
        sauvegardeCarteCourante1 = self.g1.carteCourante
        sauvegardeCarteCourante2 = self.g2.carteCourante

        self.g1 = GroupeCartes(
            Carte(self.plateau.tapis[0][self.position].valeur,
                  self.plateau.tapis[0][self.position].couleur),
            Carte(self.plateau.tapis[1][self.position].valeur,
                  self.plateau.tapis[1][self.position].couleur),
            Carte(self.plateau.tapis[2][self.position].valeur,
                  self.plateau.tapis[2][self.position].couleur))
        self.g2 = GroupeCartes(
            Carte(self.plateau.tapis[4][self.position].valeur,
                  self.plateau.tapis[4][self.position].couleur),
            Carte(self.plateau.tapis[5][self.position].valeur,
                  self.plateau.tapis[5][self.position].couleur),
            Carte(self.plateau.tapis[6][self.position].valeur,
                  self.plateau.tapis[6][self.position].couleur))

        self.g1.carteCourante = sauvegardeCarteCourante1
        self.g2.carteCourante = sauvegardeCarteCourante2