Exemplo n.º 1
0
class partieBataille:
    def __init__(self, nom1, prenom1, nom2, prenom2):
        self.nom1 = nom1
        self.prenom1 = prenom1
        self.nom2 = nom2
        self.prenom2 = prenom2

        self.__joueur1 = Joueur(nom1, prenom1)
        self.__joueur2 = Joueur(nom2, prenom2)

        self.__jeuDeCarte = jeuCarteClassique()

    def distribuer(self):
        while True:
            self.__joueur1.ajouter(self.__jeuDeCarte.tirerCarte())
            self.__joueur2.ajouter(self.__jeuDeCarte.tirerCarte())

    tableauArchive = []

    def bataille(self):

        if len(self.__joueur1.paquet.cartes) > 1:
            self.tableauArchive.append(self.__joueur1.tirer())
            cJoueur1 = self.__joueur1.tirer()
        else:
            self.finPartie()

        if len(self.__joueur2.paquet.cartes) > 1:
            self.tableauArchive.append(self.__joueur2.tirer())
            cJoueur2 = self.__joueur2.tirer()
        else:
            self.finPartie()

        print(cJoueur1, 'CONTRE\r\n', cJoueur2)
        if cJoueur1.valeur < cJoueur2.valeur:
            self.tableauArchive.append(cJoueur1)
            self.tableauArchive.append(cJoueur2)
            self.__joueur2.victoires += 1
            self.__joueur1.defaites += 1
            print(self.__joueur2.prenom,
                  ' gagne et récupère les cartes dans son paquet !')
            for i in range(len(self.tableauArchive)):
                self.__joueur2.ajouter(self.tableauArchive.pop(0))
            self.main()
        elif cJoueur1.valeur > cJoueur2.valeur:
            self.tableauArchive.append(cJoueur1)
            self.tableauArchive.append(cJoueur2)
            self.__joueur1.victoires += 1
            self.__joueur2.defaites += 1
            print(self.__joueur1.prenom,
                  ' gagne et récupère les cartes dans son paquet !')
            for i in range(len(self.tableauArchive)):
                self.__joueur1.ajouter(self.tableauArchive.pop(0))
            self.main()
        else:
            print("BATAAAAAAAAAILLE !!!")
            self.bataille()

    def melanger(self):
        jeuCarteClassique.melange(self.__jeuDeCarte)

    def demarrerPartie(self):
        try:
            self.melanger()
            self.distribuer()
        except IndexError as err:
            while True:
                self.main()

    def finPartie(self):
        if self.__joueur1.defaites < self.__joueur2.defaites:
            print(self.__joueur1.prenom, 'a gagné cette partie!')
        elif self.__joueur2.defaites < self.__joueur1.defaites:
            print(self.__joueur2.prenom, 'a gagné cette partie!')
        else:
            print("Egalité, chose rare dans la bataille.")
        exit(1)
        restart = input(
            "Tape 1 pour rejouer ! Sinon tape n'importe quelle touche !")
        if restart == 1:
            self.demarrerPartie()
        else:
            exit(1)

    def main(self):
        while len(self.__joueur1.paquet.cartes) != 0 or len(
                self.__joueur2.paquet.cartes) != 0:
            if len(self.__joueur1.paquet.cartes) != 0:
                cJoueur1 = self.__joueur1.tirer()
            else:
                self.finPartie()

            if len(self.__joueur2.paquet.cartes) != 0:
                cJoueur2 = self.__joueur2.tirer()
            else:
                self.finPartie()

            print(cJoueur1, '\r CONTRE\n\r', cJoueur2, '\r ')
            if cJoueur1.valeur < cJoueur2.valeur:
                self.__joueur2.ajouter(cJoueur1)
                self.__joueur2.ajouter(cJoueur2)
                self.__joueur2.victoires += 1
                self.__joueur1.defaites += 1
                print(self.__joueur2.prenom,
                      'gagne et récupère les cartes dans son paquet !')
                print(len(self.__joueur1.paquet.cartes))
                print(len(self.__joueur2.paquet.cartes))
            elif cJoueur1.valeur > cJoueur2.valeur:
                self.__joueur1.ajouter(cJoueur1)
                self.__joueur1.ajouter(cJoueur2)
                self.__joueur1.victoires += 1
                self.__joueur2.defaites += 1
                print(self.__joueur1.prenom,
                      'gagne et récupère les cartes dans son paquet !')
                print(len(self.__joueur1.paquet.cartes))
                print(len(self.__joueur2.paquet.cartes))
            else:
                print("BATAAAAAAAAAILLE !!!")
                self.bataille()
            nextRound = input("")
            if nextRound == "1":
                self.finPartie()
            else:
                if self.__joueur1.paquet.cartes == 0 or self.__joueur2.paquet.cartes == 0:
                    exit(1)
        print("gyjugjvfgh")
        self.finPartie()

    # GETSETTEUR SPACE ! Yoloooo
    def __getJoueur1(self):
        return self.__joueur1

    def __setJoueur1(self, joueur1):
        self.__joueur1 = joueur1

    joueur1 = property(__getJoueur1, __setJoueur1)

    def __getJoueur2(self):
        return self.__joueur2

    def __setJoueur2(self, joueur2):
        self.__joueur2 = joueur2

    joueur2 = property(__getJoueur2, __setJoueur2)

    def __getJeuDeCarte(self):
        return self.__jeuDeCarte

    def __setJeuDeCarte(self, jeuDeCarte):
        self.__jeuDeCarte = jeuDeCarte

    jeuDeCarte = property(__getJeuDeCarte, __setJeuDeCarte)
class PartieBataille:
    cJ1 = []
    cJ2 = []

    def __init__(self, nom1, prenom1, nom2, prenom2):
        self.__nom1 = nom1
        self.__prenom1 = prenom1
        self.__nom2 = nom2
        self.__prenom2 = prenom2
        self.__jeuDeCartes = JeuCartesClassique()

        self.__J1 = Joueur(nom1, prenom1)
        self.__J2 = Joueur(nom2, prenom2)

    def distribuer(self):
        while True:
            self.__J1.ajouter(self.__jeuDeCartes.tirer())
            self.__J2.ajouter(self.__jeuDeCartes.tirer())

    def melanger(self):
        self.__jeuDeCartes.melanger()

    def demarrerPartie(self):
        try:
            self.melanger()
            self.distribuer()
        except IndexError as err:
            print(err)
            while True:
                self.main()

    def bataille(self):
        c2J1 = self.__J1.tirer()
        c2J2 = self.__J2.tirer()
        c3J1 = self.__J1.tirer()
        c3J2 = self.__J2.tirer()
        print(c3J1, "\r vs ", c3J2, "\r")
        if c3J1.valeur < c3J2.valeur:
            self.__J2.ajouter(c3J1)
            self.__J2.ajouter(c3J2)
            self.__J2.ajouter(c2J1)
            self.__J2.ajouter(c2J2)
            print(self.__J2.nom, self.__J2.prenom,
                  " gagne la bataille et récupère les cartes\n")
            self.__J2.victoire += 1
            self.__J1.defaite += 1
            for i in range(len(self.cJ2)):
                self.__J2.ajouter(self.cJ2.pop(0))
                self.__J2.ajouter(self.cJ1.pop(0))
            print("Nombres cartes Joueur 1 : ", len(self.__J1.paquet.cartes))
            print("Nombres cartes Joueur 2 : ", len(self.__J2.paquet.cartes))
            input("next\n")
            self.main()
        elif c3J1.valeur > c3J2.valeur:
            self.__J1.ajouter(c3J1)
            self.__J1.ajouter(c3J2)
            self.__J1.ajouter(c2J1)
            self.__J1.ajouter(c2J2)
            print(self.__J1.nom, self.__J1.prenom,
                  " gagne la bataille et récupère les cartes\n")
            self.__J1.victoire += 1
            self.__J2.defaite += 1
            for i in range(len(self.cJ2)):
                self.__J1.ajouter(self.cJ2.pop(0))
                self.__J1.ajouter(self.cJ1.pop(0))
            print("Nombres cartes Joueur 1 : ", len(self.__J1.paquet.cartes))
            print("Nombres cartes Joueur 2 : ", len(self.__J2.paquet.cartes))
            input("next\n")
            self.main()
        else:
            print("Bataille\n")
            self.cJ1.append(c2J1)
            self.cJ1.append(c3J1)
            self.cJ2.append(c2J2)
            self.cJ1.append(c3J2)
            self.bataille()

    def finPartie(self):
        ScoreVJ1 = self.__J1.victoire
        ScoreVJ2 = self.__J2.victoire
        ScoreDJ1 = self.__J1.defaite
        ScoreDJ2 = self.__J2.defaite
        print("Le score de la partie est : ", ScoreVJ1, ScoreDJ1,
              " pour le joueur 1\n", ScoreVJ2, ScoreDJ2, " pour le joueur 2\n")
        exit(1)

    def main(self):
        while len(self.__J1.paquet.cartes) != 0 or len(
                self.__J2.paquet.cartes) != 0:
            if len(self.__J1.paquet.cartes) != 0:
                cJ1 = self.__J1.tirer()
            else:
                print(self.__J1.nom, "a perdu")
                self.finPartie()
            if len(self.__J2.paquet.cartes) != 0:
                cJ2 = self.__J2.tirer()
            else:
                print(self.__J2.nom, "a perdu")
                self.finPartie()
            print(cJ1, "\r vs ", cJ2, "\r ")
            if cJ1.valeur < cJ2.valeur:
                self.__J2.ajouter(cJ1)
                self.__J2.ajouter(cJ2)
                print(self.__J2.nom, self.__J2.prenom,
                      " gagne et récupère les cartes\n")
                self.__J2.victoire += 1
                self.__J1.defaite += 1
                print("Nombres cartes Joueur 1 : ",
                      len(self.__J1.paquet.cartes))
                print("Nombres cartes Joueur 2 : ",
                      len(self.__J2.paquet.cartes))
            elif cJ1.valeur > cJ2.valeur:
                self.__J1.ajouter(cJ1)
                self.__J1.ajouter(cJ2)
                print(self.__J1.nom, self.__J1.prenom,
                      " gagne et récupère les cartes\n")
                self.__J1.victoire += 1
                self.__J2.defaite += 1
                print("Nombres cartes Joueur 1 : ",
                      len(self.__J1.paquet.cartes))
                print("Nombres cartes Joueur 2 : ",
                      len(self.__J2.paquet.cartes))
            else:
                print("Bataille\n")
                self.bataille()
            input("next\n")
        self.finPartie()