Пример #1
0
def menu():
    print ("Bienvenue au jeu des petits chevaux espagnols!!!\n")

    #Creation des objets joueurs
    global jeu
    jeu.j1 = Joueur("Jaune")
    jeu.j2 = Joueur("Rouge")
    jeu.j3 = Joueur("Vert")
    jeu.j4 = Joueur("Bleu")

    combienDeJoueur = obtenirInt("Combien de personnes êtes vous? (entre 1 et 4)\n")
    while (combienDeJoueur >= 5 or combienDeJoueur <= 0):
        combienDeJoueur = obtenirInt("NON! Le nombre de joueur possible est compris entre 1 et 4\n")
    if (combienDeJoueur==1):
        print ("il y aura 3 autres participants virtuels.")
        jeu.j1.Nom = input("Comment vous appellez-vous?\n")
        jeu.j1.Humain = True
        print ("bonjour",jeu.j1.Nom,"!\nVous etes le joueur Jaune\n")
    elif (combienDeJoueur==2):
        print ("Il y aura deux autres jouers virtuels.")
        jeu.j1.Nom=input("J1 Comment vous appellez-vous?\n")
        print ("bonjour",jeu.j1.Nom,"!")
        jeu.j1.Humain = True
        jeu.j2.Nom=input("J2 Comment vous appellez-vous?\n")
        print ("bonjour",jeu.j2.Nom,"!")
        jeu.j2.Humain = True
    elif (combienDeJoueur==3):
        print ("Il y aura un autres joueurs virtuels.")
        jeu.j1.Nom=input("J1 Comment vous appellez-vous?\n")
        print ("bonjour",jeu.j1.Nom,"!")
        jeu.j1.Humain = True
        jeu.j2.Nom=input("J2 Comment vous appellez-vous?\n")
        print ("bonjour",jeu.j2.Nom,"!")
        jeu.j2.Humain = True
        jeu.j3.Nom= input("J3 Comment vous appellez-vous?\n")
        print ("bonjour",jeu.j3.Nom,"!")
        jeu.j3.Humain=True
    elif (combienDeJoueur==4):
        print ("Il n'y aura pas de joueurs virtuel")
        jeu.j1.Nom=input("J1 Comment vous appellez-vous?\n")
        print ("bonjour",jeu.j1.Nom,"!")
        jeu.j1.Humain = True
        jeu.j2.Nom=input("J2 Comment vous appellez-vous?\n")
        print ("bonjour",jeu.j2.Nom,"!")
        jeu.j2.Humain = True
        jeu.j3.Nom=input("J3 Comment vous appellez-vous?\n")
        print ("bonjour",jeu.j3.Nom,"!")
        jeu.j3.Humain = True
        jeu.j4.Nom=input("J4 Comment vous appellez-vous?\n")
        print ("bonjour",jeu.j4.Nom,"!")
        jeu.j4.Humain = True

    jeu.maxide = obtenirInt("Combien de faces le de a-t-il? La valeur possible est compris entre 6 et 12\n")
    print ("Le dé ira jusqu'a",jeu.maxide)
    while (jeu.maxide > 12 or jeu.maxide < 6):
        jeu.maxide = obtenirInt("NON! La valeur possible est compris entre 6 et 12\n")
        print ("Le dé ira jusqu'a",jeu.maxide)
Пример #2
0
    def testJoueur(self, clo=None, clo1=None):
        if clo == None:
            clo = Joueur(" Hollande", 0)
        if clo1 == None:
            clo1 = clo.clone()

        assert clo1.nombreCapture == clo.nombreCapture
        clo1.nombreCapture = 2
        assert clo1.nombreCapture != clo.nombreCapture
    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)
Пример #4
0
    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()
Пример #5
0
    def __init__(self, joueur1, joueur2, contreIa=False, niveauIa=7):
        """
        creation de deux joueurs et d'un plateau de jeu
        """
        self.tour = 0
        self.joueur2 = Joueur(joueur2, 1)
        if contreIa:
            self.joueur1 = IA(joueur1, 0, niveauIa)

        else:
            self.joueur1 = Joueur(joueur1, 0)
        self.plateau = Plateau()
Пример #6
0
def Phase_Achat(Liste_Joueurs):
    liste_trig_achat = list()
    #On va faire nos achats dans un premier temps, les rendre effectifs dans un second temps, la on crée des mémoires
    for num, Jou in enumerate.Liste_Joueurs:
        #On énumère nos joueurs
        print("c'est au joueur ")
        print(num + 1)
        #Ne pas oublier de montrer les cartes
        A = input("voulez vous acheter des ressources ? 1 pour oui 0 pour non")
        while A:
            #La phase d'achat
            O = input("D pour acheter à droite, G pour acheter à gauche")
            Ress_Achat = dict(A.Ressources)
            for Re in Ress_Achat.keys:
                I = input("combien voulez vous acheter de " + Re)
                Ress_Achat[Re] = I
    #A ce moment, on a constitué notre répertoire de ressources à acheter
            if O == 'D':
                orientation = 'droite'
                o = 1
            if O == 'G':
                orientation = 'gauche'
                o = -1
            Vendeur = Liste_Joueurs[num + o % len.Liste_Joueurs]
            #Ici on différencie les cas droite et gauche
            if J.ressource_achetable(Vendeur['Attribut'], Ress_Achat):
                m = J.montant_a_payer(Jou['Attributs'], Ress_Achat,
                                      orientation)
                if m <= Jou['Attributs']['Ressources_Simples']['Or']:
                    Achat = dict(cel_achat)
                    Achat['id_joueur'] = num
                    Achat['montant'] = m
                    Achat['Ressources'] = Ress_Achat
                    Achat['orientation'] = o
                    liste_trig_achat.append(Achat)
    #On stocke en mémoire les infos nécesaires pour trigger les achats
                else:
                    print("vous n'avez pas d'or pour faire ça ...")
            else:
                print("le joueur n'a pas ces ressources")
            A = input(
                "voulez-vous acheter autre chose ? 1 pour oui 0 pour non")
    for c_achat in liste_trig_achat:
        J.trigger_achat_ressources(
            Liste_Joueurs[c_achat['id_joueur']]['Attributs'],
            Liste_Joueurs[c_achat['id_joueur'] + c_achat['orientation'] %
                          len.Liste_Joueurs]['Attributs'], c_achat['montant'],
            c_achat['Ressources'])
Пример #7
0
    def __init__(self, nb_joueurs, nb_cases=9, largeur_muret=2):
        ###########################
        ### Initialiser plateau
        ###########################
        self.nb_cases = nb_cases
        self.case_max = (nb_cases - 1) * 2
        self.largeur_muret = largeur_muret
        self.plateau = Plateau(nb_cases, largeur_muret)
        if nb_joueurs not in (2, 4):
            raise (TypeError, "nb joueurs : 2 ou 4")
        milieuj1 = self.case_max // 4 * 2
        milieuj2 = self.case_max - milieuj1  # En cas de cases paires, évite de mettre les pions en face
        coord_joueurs = [(milieuj1, 0), (milieuj2, self.case_max)]
        if nb_joueurs == 4:
            coord_joueurs.insert(1, (0, milieuj1))
            coord_joueurs.append((self.case_max, milieuj2))
        print(coord_joueurs)
        nb_murets = ((nb_cases + 1) * 2) // nb_joueurs
        self.joueurs = [
            Joueur(i, coord, nb_murets, self.plateau)
            for i, coord in enumerate(coord_joueurs)
        ]

        self.nb_tours = -1
        self.joueur_en_cours = self.joueurs[0]
        self.joueurs[0].mon_tour = True

        self.interface = InterfaceCorridor(self)
        self.tour_suivant()
        self.interface.fenetre.mainloop()
Пример #8
0
    def __init__(self, situationsConnues, mini, console = True, apprentissage = True, IA1 = True, IA2 = True, apprentissageVolee = False):
        self.console = True
        self.apprentissage = apprentissage
        self.gagnant = None

        infosPieces = mini2pieces(mini)
        self.idJoueur, piecesJoueurs = infosPieces

        from Joueur import Joueur
        self.joueurs = [None, None]
        self.joueurs[0] = Joueur(situationsConnues, 0, piecesJoueurs[0], IA1, apprentissageVolee)
        self.joueurs[1] = Joueur(situationsConnues, 1, piecesJoueurs[1], IA2, apprentissageVolee)

        from Plateau import Plateau
        self.gameBoard = Plateau(self.joueurs)

        if not console:
            self.fenetre = None
Пример #9
0
    def __init__(self, nb_ia, nb_hn=1):
        """
        Permet de créer la partie, à partir du nombre de joueurs (humains et IA)
        mis en entrée.
        
    Paramètres
    ----------
        nb_ia: int
            Le nombre de joueurs IA.
        
        nb_hn : int
            Le nombre de joueurs humains.
        """

        self.L_joueur = [Joueur('DH')]
        self.nb_hn = nb_hn - 1
        Posdisp = [str(k) for k in range(self.nb_hn + nb_ia)]
        while self.nb_hn > 0:
            self.L_joueur.append(Joueur('AH' + Posdisp[0]))
            Posdisp = Posdisp[1:]
            self.nb_hn -= 1

        nb_ia_0, nb_ia_1, nb_ia_2 = self.choix_niveau(nb_ia)

        while nb_ia_0 > 0:
            self.L_joueur.append(Joueur('AI_0_' + Posdisp[0]))
            Posdisp = Posdisp[1:]
            nb_ia_0 -= 1

        while nb_ia_1 > 0:
            self.L_joueur.append(Joueur('AI_1_' + Posdisp[0]))
            Posdisp = Posdisp[1:]
            nb_ia_1 -= 1

        while nb_ia_2 > 0:
            self.L_joueur.append(Joueur('AI_2_' + Posdisp[0]))
            Posdisp = Posdisp[1:]
            nb_ia_2 -= 1

        self.mise_en_place()
        self.carte = Map.Map(self.L_joueur)
Пример #10
0
class Jeu:

    def __init__(self):

        self.joueur1 = Joueur('Joueur')
        self.turn = True
        self.joueur2 = Joueur('Adversaire')
        self.grille = Grille()

    def start(self, listebateaux1, listebateau2):

        print('test')

        for i in range(len(listebateaux1)):

            self.joueur1.addbateau(listebateaux1[i])

        for i in range(len(listebateau2)):

            self.joueur2.addbateau(listebateau2[i])

        for i in range(len(self.joueur1.listeBateau) - 1):
            if (self.joueur1.listeBateau[i].getOrientation() == False):

                for j in range(self.joueur1.listeBateau[i].getLongueur()):

                    self.grille.set(Grille.UNDAMAGED_BOAT, int(self.joueur1.listeBateau[i].getCoordonneex() + j),
                                    int(self.joueur1.listeBateau[i].getCoordonneey()))

            elif(self.joueur1.listeBateau[i].getOrientation() == True):

                 for k in range(self.joueur1.listeBateau[i].getLongueur()):
                    self.grille.set(Grille.UNDAMAGED_BOAT, int(self.joueur1.listeBateau[i].getCoordonneex()),
                                    int(self.joueur1.listeBateau[i].getCoordonneey()) + k)


        print('fin start')
        self.play()

    def play(self):
        pass
Пример #11
0
def main():
    casino = Casino(100000)
    jeu1 = Roulette.Roulette("my wheel", casino)
    jeu2 = MachineASous("bandit manchot", casino)
    joueur = Joueur("Clement", 1000)
    joueur.entrer_casino(casino)
    joueur.jouer()
Пример #12
0
    def __init__(self, nb_ia_0, nb_ia_1=0, nb_hn=0, IHM=0):
        """
        Permet de créer la partie, à partir du nombre de joueurs (humains et IA)
        mis en entrée.
        
    Paramètres
    ----------
        nb_ia_0: int
            Le nombre de joueurs IA de niveau 0.
            
        nb_ia_1 : int
            Le nombre de joueurs IA de niveau 1.        
        
        nb_hn : int
            Le nombre de joueurs humains.
        """
        self.IHM = IHM
        self.L_joueur = [Joueur('DH')]
        self.nb_hn = nb_hn
        Posdisp = [str(k) for k in range(self.nb_hn + nb_ia_0 + nb_ia_1)]
        while self.nb_hn > 0:
            self.L_joueur.append(Joueur('AH' + Posdisp[0]))
            Posdisp = Posdisp[1:]
            self.nb_hn -= 1

        while nb_ia_0 > 0:
            self.L_joueur.append(Joueur('AI_0_' + Posdisp[0]))
            Posdisp = Posdisp[1:]
            nb_ia_0 -= 1

        while nb_ia_1 > 0:
            self.L_joueur.append(Joueur('AI_1_' + Posdisp[0]))
            Posdisp = Posdisp[1:]
            nb_ia_1 -= 1

        self.mise_en_place()
        self.carte = Map.Map(self.L_joueur, 0, self.IHM)
Пример #13
0
		def validerUsager(self, usager, password,ordre):
			table_name = "joueur"
			# vérifier s'il y a un résultat (impossible qu'il y en ait plus qu'un)
			sql = "SELECT * FROM %s WHERE NOM = '%s' AND MOT_DE_PASSE = '%s'" %(table_name, usager, password)
			self.__execute_query(self.oracle_cursor, sql)
			query_result = self.oracle_cursor.fetchall()
			connecte = False     
			for row in query_result:
				connecte = True				
				nouveauJoueur = Joueur(1,1,ordre,row[1],(row[9],row[10],row[11]), row[7], row[8], row[2], row[3],row[4],row[5],row[0], row[6])
				sanitizer = Sanitizer()
				if ordre == 0:
					DTO.joueur1 = nouveauJoueur
					DTO.joueur1,DTO.messagesErreurs1 = sanitizer.checkDTO(DTO.joueur1)
				elif ordre == 1:
					DTO.joueur2 = nouveauJoueur
					DTO.joueur2,DTO.messagesErreurs2 = sanitizer.checkDTO(DTO.joueur2)

				if DTO.joueur1 and DTO.joueur2:
					DTO.joueurs.append(DTO.joueur1)
					DTO.joueurs.append(DTO.joueur2)
			return connecte
Пример #14
0
    def testjouerPlateau(self):

        j = Joueur("Hollande", 0)
        for i in range(12):
            p = Plateau()
            p.jouer(i, j)

            assert p.cases[i].graines == 0

        p = Plateau()

        p.cases[5].graines = 2

        p.jouer(2, j)
        print(p.cases[5].graines)
        assert p.cases[5].graines == 3
        p = Plateau()
        p.cases[7].graines = 2

        p.jouer(3, j)

        print(p.cases[7].graines)
        assert p.cases[7].graines == 0
        assert j.nombreCapture == 3
Пример #15
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)
Пример #16
0
class Jeu:

    michel = Joueur()
    croupier1 = Croupier()
    jeu1 = JeuDeCarte()

    def main(self, Joueur, Croupier, JeuDeCarte):

        k = self.jeu1.getJdc()
        i = 0

        joueur = {}
        croupier = {}

        while i < 2:
            e = random.choice(list(k.items()))
            k.pop(e[0])
            joueur[e[0]] = e[1]

            e = random.choice(list(k.items()))
            k.pop(e[0])
            croupier[e[0]] = e[1]

            i = i + 1

        self.michel.setMain(joueur)

        self.croupier1.setMain(croupier)

        return joueur, croupier, k

    def total_main(self, main):

        total = 0

        for key, val in main.items():
            total += val

        return total

    def tirer_nouvelle_carte(self, main, reste_carte):

        e = random.choice(list(reste_carte.items()))
        reste_carte.pop(e[0])
        main[e[0]] = e[1]

        return main

    def affiche_mains_points(self, main_j, main_c):
        print("\n")
        print('main joueur: ', main_j)
        print('main croupier: ', main_c)
        print('total joueur : ', self.total_main(main_j))
        print('total croupier : ', self.total_main(main_c))
        print('\n')

    def ass(self, main, total):

        for i, j in main.items():
            if j == 11 and total > 21:
                main[i] = 1
        return main

    def blackjack(self, main, total):
        if len(main) == 2 and total == 21:
            return True

    def jeu(self):

        replay = 'o'

        while replay == 'o':

            mn = self.main(self.michel, self.croupier1, self.jeu1)
            reste_carte = mn[2]
            print('main joueur : ', mn[0])
            total_joueur = self.total_main(mn[0])
            total_croupier = self.total_main(mn[1])
            nouvellecarte = 'o'
            main_j = mn[0]
            main_c = mn[1]

            a = self.blackjack(main_j, total_joueur)
            b = self.blackjack(main_c, total_croupier)

            if a:
                print('Bravo BlackJack !!!!!!!')
                self.affiche_mains_points(main_j, main_c)

            elif b:
                print('Courtier : BlackJack !!!!!!!')
                self.affiche_mains_points(main_j, main_c)

            else:

                while total_croupier < 17 or total_joueur < 21 or nouvellecarte == 'o':

                    if total_joueur < 21 or nouvellecarte == 'o':

                        nouvellecarte = input("voulez vous une carte (o/n) ?")

                        if nouvellecarte == 'o':
                            main_j = self.tirer_nouvelle_carte(
                                mn[0], reste_carte)
                            total_joueur = self.total_main(main_j)
                            main_j = self.ass(main_j, total_joueur)
                            total_joueur = self.total_main(main_j)
                            if total_joueur >= 21:
                                nouvellecarte = 'n'
                            print(
                                'main joueur : ',
                                main_j,
                            )
                            print('\n')
                        else:
                            main_j = mn[0]

                        if total_croupier < 17:
                            main_c = self.tirer_nouvelle_carte(
                                mn[1], reste_carte)
                            total_croupier = self.total_main(main_c)
                            main_c = self.ass(main_c, total_croupier)
                        else:
                            main_c = mn[1]

                        if total_croupier >= 17 and nouvellecarte != 'o':
                            break
                    else:
                        break

                self.affiche_mains_points(main_j, main_c)
                replay = input('voulez vous rejouer ? o/n')
Пример #17
0
import sys
sys.path.insert(1, '/home/tek/Desktop/7wonders/7wonders')
import Joueur.Joueur as J
import attribut.attributs as A
import carte.carte as C
import Wonder.wonder as W

Joueur1 = dict(J.Joueur)
Joueur2 = dict(J.Joueur)
Joueur3 = dict(J.Joueur)

merveille = W.wonder

Joueur1 = J.Init_Joueur(merveille)
Joueur2 = J.Init_Joueur(merveille)
Joueur3 = J.Init_Joueur(merveille)

#Joueur1['attributs']['Ressources_s']['Bois'] = 1

#Joueur1['attributs']= attribut.attributs.init_attribut()
#Joueur2['attributs']= attribut.attributs.init_attribut()
#Joueur3['attributs']= attribut.attributs.init_attribut()

karte = dict(C.carte)
cout_k = "Pierre 1"
karte['nom'] = "Bains"
karte['couleur'] = 'b'
karte['id'] = 3
if karte['pre'](Joueur1['attributs'], cout_k, 3, Joueur1['attributs']['liste_id'], 0):
    karte['post']("Nbr_PV 3", Joueur1['attributs'])
    Joueur1['attributs']['liste_id'].append(karte['id'])
Пример #18
0
    def process(self, L):
        """
        Effectue le processus de chargement de la partie, en testant les différentes chaînes de caractères de
        la liste L.
        
        Paramètres:
        ------------
        L : list
            Liste contenant toutes les chaînes de caractères de la sauvegarde; chaque élément de
            la liste correspond à une ligne de la sauvegarde.
            
        Renvoie : 
        ----------
        Rien.
        
        """
        Tst = ['S', 'R']
        if type(self.IHM) != str:
            self.IHM.tr_en_crs = 1
            self.IHM.tr_Hn_en_crs = 1
        while len(L) != 0:
            if L[0] == 'Carte':
                # Processus de recréation de la carte sauvegardée.
                Dims = L[2]
                Nbta = L[4]
                Nbt = L[6]
                U_disp = L[7]
                Jr_en_crs = L[8]
                L = L[9:]
                Dims = Dims[1:-1]
                k = Dims.find(',')
                X = int(Dims[0:k])
                Y = int(Dims[k + 1:])
                Constante.xL = X
                Constante.yL = Y
                if int(X / 2) % 2 == 0:
                    LL = int(X / 2) + 1
                else:
                    LL = int(X / 2)
                if int(Y / 2) % 2 == 0:
                    LH = int(Y / 2) + 1
                else:
                    LH = int(Y / 2)
                LEp = int(max(X, Y) / 20)
                Constante.LL_Z_Constructible = LL
                Constante.LH_Z_Constructible = LH
                Constante.LEp_app = LEp

                Constante.Lnbta = int(Nbta)

                Constante.Lnbt = int(Nbt)
                U_disp = float(U_disp)

                self.Lcarte = Map.Map([], 1, self.IHM)
                self.Lcarte.TrIA.unite_disp_par_tour = U_disp
                self.Lcarte.TrHn.unite_disp_par_tour = U_disp
                self.Lcarte.TrHn.Jr_en_crs = int(Jr_en_crs)
                print("Carte OK")

            while L[0] == 'Ressource':
                #Processus de chargement des ressources sauvegardées sur la carte.
                Val = L[1]
                Pos = L[2]
                L = L[4:]

                Pos = Pos[1:-1]
                k = Pos.find(',')
                X = int(Pos[0:k])
                Y = int(Pos[k + 1:])

                Val = int(Val)

                metal(X, Y, self.Lcarte, Val)
                print("Ressource OK")

            while L[0] == 'Joueur':
                # Processus de chargement des joueurs de la partie, et de leurs caractéristiques principales.
                Role = L[1]
                Metal_tot = int(L[2])
                Energie_tot = int(L[3])
                Ur = float(L[4])
                self.Jr = Joueur(Role)
                self.Lcarte.L_joueur.append(self.Jr)
                self.Jr.metal_tot = Metal_tot
                self.Jr.energie_tot = Energie_tot
                self.Jr.nbe_unite_restantes = Ur
                L = L[6:]
                while L[0] == 'Bat':

                    # Processus de chargement des batiments du joueur actuel.
                    Typ = L[1]
                    Sante = L[2]
                    Pos = L[3]
                    L = L[4:]
                    Sante = int(Sante)
                    Typ = Typ[-2:]
                    Pos = Pos[1:-1]
                    k = Pos.find(',')
                    X = int(Pos[0:k])
                    Y = int(Pos[k + 1:])
                    if Typ == "QG":
                        B = QG(X, Y, self.Lcarte)
                        B.sante = Sante
                        self.Jr._liste_bat[0].append(B)
                    elif Typ[0] == "P":
                        Id = int(Typ[1])
                        B = Panneau_solaire(X, Y, self.Lcarte)
                        B.sante = Sante
                        B.id = Id
                        self.Jr._liste_bat[1].append(B)
                    elif Typ[0] == "F":
                        Id = int(Typ[1])
                        B = Foreuse(X, Y, self.Lcarte)
                        B.sante = Sante
                        B.id = Id
                        self.Jr._liste_bat[2].append(B)
                if L[0] == "Fin bat":
                    print("Fin bat")
                    L = L[2:]

                while L[0] == "Unite":
                    # Processus de chargement des unités du joueur actuel.
                    k = -2
                    Typ = L[1]
                    Num_joueur = L[2]
                    Sante = L[3]
                    Pos = L[4]
                    if Role[1] == 'H':
                        Capmvt = int(L[5])
                        L = L[6:]
                    else:
                        L = L[5:]
                    tTyp = Typ[k:]
                    while tTyp[0] not in Tst:
                        k = k - 1
                        tTyp = Typ[k:]
                    Typ = tTyp
                    Num_joueur = int(Num_joueur)
                    Sante = int(Sante)
                    Pos = Pos[1:-1]
                    k = Pos.find(',')
                    X = int(Pos[0:k])
                    Y = int(Pos[k + 1:])
                    if Typ[0:2] == "RC":
                        Id = int(Typ[2:])
                        U = Robot_combat(Role, self.Lcarte, X, Y)
                        U.sante = Sante
                        U.capmvt = Capmvt
                        self.Jr._liste_unite.append(U)

                    elif Typ[0:2] == "RO":
                        Id = int(Typ[2:])
                        U = Robot_Ouvrier(Role, self.Lcarte, X, Y)
                        U.sante = Sante
                        U.capmvt = Capmvt
                        self.Jr._liste_unite.append(U)

                    elif Typ[0] == "S":
                        if len(Role) > 3 and Role[3] == "0":
                            Id = int(Typ[3:])
                            U = Scorpion0(Role, self.Lcarte, X, Y, Num_joueur)
                            U.sante = Sante
                            U.id = Id
                            self.Jr._liste_unite.append(U)

                        elif len(Role) > 3 and Role[3] == "1":
                            Id = int(Typ[3:])
                            U = Scorpion1(Role, self.Lcarte, X, Y, Num_joueur)
                            U.sante = Sante
                            U.id = Id
                            self.Jr._liste_unite.append(U)

                        elif Role[1] == "H":
                            Id = int(Typ[1:])
                            U = Scorpion(Role, self.Lcarte, X, Y, Num_joueur)
                            U.sante = Sante
                            U.id = Id
                            U.capmvt = Capmvt
                            self.Jr._liste_unite.append(U)

                if L[0] == "Fin unite":
                    print("Fin unite")
                    L = L[1:]

            if L[0] == "Fin sauvegarde":
                L = []
            else:
                L = L[1:]
Пример #19
0
 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()
Пример #20
0
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
Пример #21
0
 def __carteEnMain(self):
     global carteEnMain
     carteEnMain = Joueur.paquet()
Пример #22
0
from Joueur import Joueur

from Trou import Trou
t = Trou(4)

Plateau = [[], []]
J1 = Joueur(1, "yre")
for i in range(2):
    for j in range(6):
        t = Trou(4)
        Plateau[i].append(t)
for i in range(2):
    for j in range(6):
        print(Plateau[i][j], end="\t")
    print()
print("\n\n")
J1.choix_trou(4, Plateau)

for i in range(2):
    for j in range(6):
        print(Plateau[i][j], end="\t")
    print()
Пример #23
0
from PartieBataille import PartieBataille

from Joueur import Joueur

if __name__ == '__main__':
    joueur_1 = Joueur('Lagaffe', 'Gaston')
    jeu = PartieBataille(joueur_1)
    jeu.demarrerPartie()








Пример #24
0
    # Placement barre
    barreG = Barre(Coordonnees(ESPACE_BARRE, YBARRE), VBARRE, LONGUEUR_BARRE, LARGEUR_BARRE, Direction.HAUT)
    barreD = Barre(
        Coordonnees(LONGUEUR_ECRAN - ESPACE_BARRE - LARGEUR_BARRE, YBARRE),
        VBARRE,
        LONGUEUR_BARRE,
        LARGEUR_BARRE,
        Direction.HAUT,
    )

    # Placement balle
    balle = Balle(Coordonnees(0, 0), coteBalle, 0, 0, VBALLE, COTE_BALLE)
    lancementAleaBalle(balle)

    # creation des joueurs
    joueurG = Joueur(barreG, 0, Cote.GAUCHE)
    joueurD = Joueur(barreD, 0, Cote.DROIT)

    while continuerJeu:
        afficherElements(Statut.JEU_EN_COURS, X_SCOREG, X_SCORED, Y_SCORE)
        gererCollisionBarreBord()
        gererEvenements()

        # deplacement balle
        if balle.estSortie(LONGUEUR_ECRAN) != 0:  # balle non sortie
            # gestion score
            joueurD.marquerPoint(balle.estSortie(LONGUEUR_ECRAN))
            joueurG.marquerPoint(balle.estSortie(LONGUEUR_ECRAN))
            if joueurD.getScore() == MAX_POINT:
                afficherVictoire(imageVictoireDroit, joueurG.getScore())
                time.sleep(3)
Пример #25
0
from Joueur import Joueur
from PartieUno import PartieUno

if __name__ == "__main__":
    j1 = Joueur("Duck", "Donald")
    j2 = Joueur("Duck", "Daisy")
    j3 = Joueur("Duck", "Picsou")

    p = PartieUno(j1, j2, j3)
    p.demarrerPartie()





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))
Пример #27
0
    a afficher. exemple : la view doit afficher la grille d'un joueur, si la grille du joueur dans la model
    est egal a -1, cela veux dire qu'il y avait un bateau a cette endroit mais qu'il a deja ete toucher.
    aller voir dans grille pour les autres valeurs
    """
    def __init__(self):
        self.model = Model()
        self.view = View(self.model)
        self.controller = Controller(self.model, self.view)

if __name__ == "__main__":
    """
    Les lignes qui suivent representent une boucle de jeu fonctionnel, il va falloir l'adapter pour que les inputs
    soit sur l'interface graphique
    """
    #initialisation des joueurs et de la liste de joueurs
    j = Joueur('Jeff')
    g = Joueur('Gab')
    listJoueur = []
    listJoueur.append(j)
    listJoueur.append(g)
    turn = 0
    #la boucle qui dit: tant que les 2 joueurs de sont pas mort
    while(not(j.isDead()) and not(g.isDead())):
        #si c'est le premier tour, les joueurs place leur bateau
        if turn == 0:
            for j in listJoueur:
                j.placerBateau
            turn += 1
        else:
            #maintenent que les bateau sont placer, les joueurs doivent ecrire une posisiont en x et y a attaquer
            for j in range(len(listJoueur)):
Пример #28
0
    def __init__(self):

        self.joueur1 = Joueur('Joueur')
        self.turn = True
        self.joueur2 = Joueur('Adversaire')
        self.grille = Grille()
 def __init__(self, joueur):
     self.__joueur = joueur
     self.__ordinateur = Joueur('9000', 'HAL')
     self.__jeu = JeuClassique()
Пример #30
0
class View:

    michel = Joueur()
    croupier1 = Croupier()
    jeu1 = JeuDeCarte()
    jeu2 = JeuDeCarte()

    def __init__(self, root):

        replay = True

        while replay == True:
            mn = self.main(self.michel, self.croupier1, self.jeu1)
            reste_carte = mn[2]

            label0 = Tk.Label(root, text="Tirage : ")
            label0.pack()
            label1 = Tk.Label(root, text=str(mn[0]))
            label1.pack()

            total_joueur = self.total_main(mn[0])
            total_croupier = self.total_main(mn[1])
            nouvellecarte = True
            main_j = mn[0]
            main_c = mn[1]

            a = self.blackjack(main_j, total_joueur)
            b = self.blackjack(main_c, total_croupier)

            if a:
                self.blackjackJ()
                replay = self.rejouer()

                if replay == False:
                    root.destroy()
                else:
                    root.destroy()
                    c = ct.Controller()
                    c.run()

            elif b:
                self.blackjackC()
                replay = self.rejouer()

                if replay == False:
                    root.destroy()
                else:
                    root.destroy()
                    c = ct.Controller()
                    c.run()

            else:

                while total_croupier < 17 or total_joueur < 21 or nouvellecarte == True:

                    if total_joueur < 21 or nouvellecarte == True:

                        nouvellecarte = self.nouvelle_carte()

                        if nouvellecarte == True:
                            main_j = self.tirer_nouvelle_carte(
                                mn[0], reste_carte)
                            total_joueur = self.total_main(main_j)
                            main_j = self.ass(main_j, total_joueur)
                            total_joueur = self.total_main(main_j)
                            if total_joueur >= 21:
                                nouvellecarte = 'n'
                            label2 = Tk.Label(root, text="Main Joueur : ")
                            label2.pack()
                            label3 = Tk.Label(root, text=str(main_j))
                            label3.pack()

                        else:
                            main_j = mn[0]

                        if total_croupier < 17:
                            main_c = self.tirer_nouvelle_carte(
                                mn[1], reste_carte)
                            total_croupier = self.total_main(main_c)
                            main_c = self.ass(main_c, total_croupier)
                        else:
                            main_c = mn[1]

                        if total_croupier >= 17 and nouvellecarte != True:
                            break
                    else:
                        break

                self.affiche_mains_points(main_j, main_c, root)

                replay = self.rejouer()

                if replay == False:
                    root.destroy()
                else:
                    root.destroy()
                    c = ct.Controller()
                    c.run()

    def main(self, Joueur, Croupier, JeuDeCarte):

        k = self.jeu1.getJdc()
        i = 0

        joueur = {}
        croupier = {}

        while i < 2:
            e = random.choice(list(k.items()))
            k.pop(e[0])
            joueur[e[0]] = e[1]

            e = random.choice(list(k.items()))
            k.pop(e[0])
            croupier[e[0]] = e[1]

            i = i + 1

        self.michel.setMain(joueur)

        self.croupier1.setMain(croupier)

        return joueur, croupier, k

    def total_main(self, main):

        total = 0

        for key, val in main.items():
            total += val

        return total

    def tirer_nouvelle_carte(self, main, reste_carte):

        e = random.choice(list(reste_carte.items()))
        reste_carte.pop(e[0])
        main[e[0]] = e[1]

        return main

    def affiche_mains_points(self, main_j, main_c, root):

        label3 = Tk.Label(root, text="Main Joueur : ")
        label4 = Tk.Label(root, text=str(main_j))
        label5 = Tk.Label(root, text="Main Croupier : ")
        label6 = Tk.Label(root, text=str(main_c))
        label7 = Tk.Label(root, text="Total Joueur : ")
        label8 = Tk.Label(root, text=str(self.total_main(main_j)))
        label9 = Tk.Label(root, text="Total Croupier : ")
        label10 = Tk.Label(root, text=str(self.total_main(main_c)))
        label3.pack()
        label4.pack()
        label5.pack()
        label6.pack()
        label7.pack()
        label8.pack()
        label9.pack()
        label10.pack()

    def nouvelle_carte(self):
        a = messagebox.askyesno("Nouvelle Carte", "Voulez vous une carte ?")
        return a

    def rejouer(self):
        a = messagebox.askyesno("Continuer", "Voulez vous rejouer ?")
        return a

    def blackjackJ(self):
        a = messagebox.showinfo("Joueur", "BlackJack !!!!!")

    def blackjackC(self):
        a = messagebox.showinfo("Croupier", "BlackJack !!!!!")

    def ass(self, main, total):

        for i, j in main.items():
            if j == 11 and total > 21:
                main[i] = 1
        return main

    def blackjack(self, main, total):
        if len(main) == 2 and total == 21:
            return True
Пример #31
0
from Casino import Casino
from Joueur import Joueur
from MachineASous import MachineASous
from Roulette import Roulette

casino = Casino(100000)
jeu1 = Roulette("my wheel", casino)
jeu2 = MachineASous("bandit manchot", casino)
joueur = Joueur("Clement", 1000)
joueur.entrer_casino(casino)
joueur.jouer()
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()
class TicTacToe:

    joueur1=Joueur()
    joueur2 =Joueur()
    compteurCoupJoue=0
    gagnant=None
    joueurgagnant=None

    def __init__(self,):
        self.grille = [['?','?','?'],['?','?','?'],['?','?','?']]
        self.joueur1.nom="Joueur 1"
        self.joueur1.nom = "Joueur 2"
        self.joueur1.jeton='X'
        self.joueur2.jeton="O"
        self.joueur1.tour=True
        self.joueur2.tour = False
        self.gagnant=False

    def AfficherEtatJeu(self,):
        "Méthode permettant de pouvoir afficher le jeu "
        for i in range (3):
            print (self.grille[i])

    def JouerJeton(self,):

        print ("Veuillez choisir quelle ligne joué ")
        ligneX = int(input())
        print("Veuillez choisir quelle colonne ")
        colonneY = int(input())

        if self.grille[colonneY-1][ligneX-1]==self.joueur1.jeton or self.grille[colonneY-1][ligneX-1]==self.joueur2.jeton :
            while self.grille[colonneY-1][ligneX-1]== self.grille[colonneY-1][ligneX-1]==self.joueur1.jeton or self.grille[colonneY-1][ligneX-1]==self.joueur2.jeton:
                print ("Vous avez joué dans une case déjà prise ... Vous devez rejouer.")
                self.AfficherEtatJeu()
                print("Veuillez choisir quelle ligne joué ")
                ligneX = int(input())
                print("Veuillez choisir quelle colonne ")
                colonneY = int(input())


        if self.compteurCoupJoue %2 == 0:
           self.grille[colonneY-1][ligneX-1] = self.joueur1.jeton
        else:
           self.grille[colonneY - 1][ligneX - 1] = self.joueur2.jeton
        return self.grille

    def VerifierGagnant(self,):


        if self.grille[0][0]=='O' and self.grille[0][1] == 'O' and self.grille[0][2] == 'O':
            finpartie = True
            self.joueurgagnant = "Le joueur 2 à gagné horizontalement"

        elif self.grille[1][0]=='O' and self.grille[1][1] == 'O' and self.grille[1][2] == 'O':
            finpartie=True
            self.joueurgagnant = "Le joueur 2 à gagné horizontalement"
        elif self.grille[2][0] == 'O' and self.grille[2][1] == 'O' and self.grille[2][2] == 'O':
            finpartie=True
            self.joueurgagnant = "Le joueur 2 à gagné horizontalement"

        elif self.grille[0][0]=='O' and self.grille[1][0] =='O' and self.grille[2][0] == 'O':
            finpartie=True
            self.joueurgagnant = "Le joueur 2 à gagné verticalement"

        elif self.grille[0][2] == 'O' and self.grille[1][2] =='O' and self.grille[2][2] == 'O':
            finpartie=True
            self.joueurgagnant = "Le joueur 2 à gagné verticalement"

        elif self.grille[0][1] == 'O' and self.grille[1][1] =='O' and self.grille[2][1] == 'O':
            finpartie=True
            self.joueurgagnant = "Le joueur 2 à gagné verticalement"

        elif self.grille[0][0] == 'O' and self.grille[1][1] =='O' and self.grille[2][2] == 'O':
            finpartie=True
            self.joueurgagnant = "Le joueur 2 à gagné en diagonale"
        elif self.grille[0][2] == 'O' and self.grille[2][2] == 'O' and self.grille[2][0] == 'O':
            finpartie=True
            self.joueurgagnant = "Le joueur 2 à gagné en diagonale"

        elif self.grille[0][0] == 'X' and self.grille[0][1] == 'X' and self.grille[0][2] == 'X':
            finpartie=True
            self.joueurgagnant = "Le joueur 1 horizontalement"
        elif self.grille[1][0] == 'X' and self.grille[1][1]=='X' and self.grille[1][2] == 'X':
            finpartie=True
            self.joueurgagnant = "Le joueur 1 horizontalement"
        elif self.grille[2][0] == 'X' and self.grille[2][1] == 'X' and self.grille[2][2] == 'X':
            finpartie=True
            self.joueurgagnant = "Le joueur 1  horizontalement"

        elif self.grille[0][0] == 'X' and self.grille[1][0] == 'X' and self.grille[2][0] == 'X':
            finpartie=True
            self.joueurgagnant = "Le joueur 1 à la verticale"

        elif self.grille[0][2] == 'X' and self.grille[1][2] == 'X' and self.grille[2][2] == 'X':
            finpartie=True
            self.joueurgagnant = "Le joueur 1 à la verticale"

        elif self.grille[0][1] == 'X' and self.grille[1][1] == 'X' and self.grille[2][1]=='X':
            finpartie=True
            self.joueurgagnant = "Le joueur 1 à la verticale"

        elif self.grille[0][0] == 'X' and self.grille[1][1] == 'X' and self.grille[2][2] == 'X':
            finpartie=True
            self.joueurgagnant = "Le joueur 1 à gagné en diagonale"
        elif self.grille[0][2] == 'X' and self.grille[2][2] == 'X' and self.grille[2][0] == 'X':
            finpartie=True
            self.joueurgagnant = "Le joueur 1 à gagné en diagonale"
        else:
            finpartie=False

        return finpartie
    def VérifierFinPartie(self):
        if self.compteurCoupJoue == 9:  # Vérifie si tous les coups ont été joué
            self.gagnant = True
        else:
            self.gagnant = self.gagnant

            if self.gagnant == True:
                return self.joueurgagnant
Пример #34
0
class Jeu(object):
    """
    Classe décrivant les éléments necessaire pour que le jeu puisse se réaliser. 
    """
    def __init__(self, joueur1, joueur2, contreIa=False, niveauIa=7):
        """
        creation de deux joueurs et d'un plateau de jeu
        """
        self.tour = 0
        self.joueur2 = Joueur(joueur2, 1)
        if contreIa:
            self.joueur1 = IA(joueur1, 0, niveauIa)

        else:
            self.joueur1 = Joueur(joueur1, 0)
        self.plateau = Plateau()

    def clone(self):

        clo = Jeu(self.joueur1.clone(), self.joueur2.clone())
        clo.tour = self.tour
        clo.plateau = Plateau(self.plateau)
        return clo

    def notation(self, j):

        if j == 0:
            rep = self.joueur1.nombreCapture - self.joueur2.nombreCapture

        else:
            rep = self.joueur2.nombreCapture - self.joueur1.nombreCapture

        return self.plateau.notation(j) + rep * 20

    def jouerAuto(self):
        j = self.tour % 2
        if j == 0:
            if self.joueur1.isIA:
                self.joueur1.play(self)
            else:
                rep = input("Jouer entre 0 et 6 ")
                self.jouer(int(rep))
        else:
            if self.joueur2.isIA:
                self.joueur2.play(self)
            else:
                rep = input("Jouer entre 0 et 6 ")
                self.jouer(int(rep) + 6)

    def jouer(self, i):
        """
        cette méthode permet de vérifier si le tour est possible ou pas
        car on est obligé de nourir l'adversaire quand toute ces cases sont vides, au 
        contraire on joue de façon qui nous sera favorable 
        
        j joueur
        i est la case où le jouer commence le jeu et i allant de (0,5)
        nou_i designe la case de l'adversaire, la case où les graines doivent être distribuées 
        """
        j = (self.tour) % 2
        if j == 0:
            joueur = self.joueur1

            nou_i = i
            j2 = 1
            if self.plateau.cases[nou_i].graines == 0:
                print("ce coup n'est pas valide" + str(nou_i) + " " +
                      str(self.tour) + " " + str(j))

                return 0
            if self.plateau.verifie(j2) == False:

                if i + self.plateau.cases[i].graines > 5:
                    #print("le tour est valide")

                    self.plateau.jouer(nou_i, joueur)
                    self.tour = self.tour + 1
                    #self.plateau.printC()
#                     print(self.tour)

                else:
                    print("ce coup n'est pas valide faite jouer l'adversaire")

            else:

                nou_i = i
                self.plateau.jouer(nou_i, joueur)
                self.tour = self.tour + 1
                #self.plateau.printC()

        else:

            joueur = self.joueur2

            j2 = 0
            nou_i = i
            if self.plateau.cases[nou_i].graines == 0:
                print("ce coup n'est pas valide 2")
                return 0
            if self.plateau.verifie(j2) == False:

                if i + self.plateau.cases[nou_i].graines > 5:
                    #print("le tour est valide")

                    self.plateau.jouer(nou_i, joueur)
                    self.tour = self.tour + 1
                    #self.plateau.printC()
#                     print(self.tour)
                else:
                    print("ce coup n'est pas valide fait jouer l'adversaire")

                    #self.plateau.printC()
#                     print(self.tour)
            else:

                self.plateau.jouer(nou_i, joueur)
                self.tour = self.tour + 1
                #self.plateau.printC()
                #print(self.tour)

        self.verify()

    def printC(self):
        print(self.tour)
        print(self.joueur1.nom + " : " + str(self.joueur1.nombreCapture) +
              " | " + self.joueur2.nom + " : " +
              str(self.joueur2.nombreCapture))
        self.plateau.printC()

    def verifiewin(self, j):
        """
        cette méthode affiche le nom du joueur qui a gagné en donnant la 
        totalité de ces points.
        """

        if j == 0:

            j2 = 1
            if self.joueur1.nombreCapture >= 25:
                print("le joueur" + joueur1.nom + "a gagne la partie avec" +
                      self.joueur1.nombreCapture + "points")
                return True

            if self.plateau.verifie(j2) == False:

                for i in range(0, 6):
                    nbAux = self.plateau.cases[i].graines
                    k = i + 1

                    while nbAux > 0:
                        if self.plateau.cases[k].graines != 12:
                            nbAux = nbAux - 1

                        k = k + 1
                        if k >= 12:
                            k = 0

                    if k == 0:
                        arrive = 11
                    else:
                        arrive = k - 1
                    if arrive > 5:

                        print("le joueur" + joueur1.nom + "a gagne")
                        return False

                return self.joueur1.nombreCapture >= self.joueur2.nombreCapture
            else:

                #print("continuer la partie")
                return False

        if j == 1:

            j2 = 0
            if self.joueur2.nombreCapture > 25:
                print("le joueur" + joueur2.nom + "a gagne la partie avec" +
                      self.joueur2.nombreCapture + "points")
                return True

            if self.plateau.verifie(j2) == False:

                for i in range(6, 12):
                    nbAux = self.plateau.cases[i].graines
                    k = i + 1

                    while nbAux > 0:
                        if self.plateau.cases[k].graines != 12:
                            nbAux = nbAux - 1

                        k = k + 1
                        if k >= 12:
                            k = 0

                    if k == 0:
                        arrive = 11
                    else:
                        arrive = k - 1
                    if arrive >= 0:

                        print("le joueur" + joueur2.nom + "a gagne")
                        return False
                return self.joueur2.nombreCapture >= self.joueur1.nombreCapture
            else:

                #print("continuer la partie")
                return False

        return False

    def verify(self):
        """
        cette méthode permet de vérifier si le jeu est toujours possible
        
        """
        if self.verifiewin(0):
            return True

        if self.verifiewin(1):
            return True

        return False

    def printG(self, myfont, screen):

        self.plateau.printCases(myfont, screen)

        label = myfont.render(
            str(self.joueur1.nom) + " a " + str(self.joueur1.nombreCapture) +
            " points", 6, (255, 255, 255))
        screen.blit(label, ((177, 64)))

        label = myfont.render(
            str(self.joueur2.nom) + " a " + str(self.joueur2.nombreCapture) +
            " points", 6, (255, 255, 255))
        screen.blit(label, ((177, 630)))

    def mouseChech(self, i, j):
        print(str(i) + " " + str(j))
        if self.tour % 2 == 0:
            for k in range(6):

                if self.isInCarre(i, j, 110 + 150 + 130 * k, 87 + 150):
                    self.jouer(k)
        else:
            for k in range(6):

                if self.isInCarre(i, j, 110 + 150 + 130 * k, 87 + 150 + 170):
                    self.jouer(11 - k)

    def isInCarre(self, i, j, x, y):
        h = 93
        l = 93
        return i >= x and j >= y and i <= x + l and j <= h + y