From d64c4d8cec3a1f43b0da1c1e430ed2a348e95105 Mon Sep 17 00:00:00 2001 From: "aboulin.a" Date: Thu, 15 Dec 2022 15:49:11 +0100 Subject: [PATCH] marche presque --- .gitignore | 5 ++- main.py | 82 +++++++++++++++++++----------------------------- util/bataille.py | 3 +- util/window.py | 24 +++++++++----- 4 files changed, 53 insertions(+), 61 deletions(-) diff --git a/.gitignore b/.gitignore index e3758f9..e96c04f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ -__pyache__/ +__pycache__/ +lib/__pycache__/* +util/__pycache__/* +*pyc *.swp diff --git a/main.py b/main.py index ed6d584..0e024b5 100644 --- a/main.py +++ b/main.py @@ -1,66 +1,48 @@ from util.bataille import Jeux, Joueur from lib.Pile import Pile_lst as Pile +from util.window import Window -if __name__ == "__main__": - jeux = Jeux(32) - carte_j1, carte_j2 = jeux.distribue() +pile_j1 = Pile() +pile_j2 = Pile() - nom = str(input("Entrez votre nom: ")) - j1 = Joueur(carte_j1, nom) - j2 = Joueur(carte_j2, "Bot") - print(str(j1.paquet)) +def jouer_tour(window): + if not window.p1.paquet.est_vide() and not window.p2.paquet.est_vide(): + pile_j1.empiler(window.p1.tire_carte()) + pile_j2.empiler(window.p2.tire_carte()) + window.show_cards() - pile_j1 = Pile() - pile_j2 = Pile() - - #Tant que les joueurs ont des cartes on continue - #TODO: vérifier avant empilage pour cas où égalité alors que l'un n'a plus de cartes - - - while not j1.paquet.est_vide() and not j2.paquet.est_vide(): - pile_j1.empiler(j1.tire_carte()) - pile_j2.empiler(j2.tire_carte()) - - #Comparaison du gagnant du duels de cartes - gagne = pile_j2.sommet().compare(pile_j1.sommet()) - print(gagne) - print(pile_j1.sommet()) - print(pile_j2.sommet()) - - #si la valeur de self est supérieure à la valeur de other. + gagne = pile_j1.sommet().compare(pile_j2.sommet()) if gagne == 1: - j = j1 + j = window.p1 - #si la valeur de other est supérieure à la valeur de self. elif gagne == -1: - j = j2 + j = window.p2 + + else: + if not window.p1.paquet.est_vide() and not window.p2.paquet.est_vide(): + pile_j1.empiler(window.p1.tire_carte()) + pile_j2.empiler(window.p2.tire_carte()) + else: + if window.p1.paquet.est_vide(): + window.text_content.set("Vous avez perdu") + elif window.p2.paquet.est_vide(): + window.text_content.set("L'ordinateur à perdu") if gagne == 1 or gagne == -1: while not pile_j1.est_vide() and not pile_j2.est_vide(): j.paquet.enfiler(pile_j1.depiler()) j.paquet.enfiler(pile_j2.depiler()) - #si les deux valeurs sont les mêmes, bataille ! - else: - if not j1.paquet.est_vide() and not j2.paquet.est_vide(): - pile_j1.empiler(j1.tire_carte()) - pile_j2.empiler(j2.tire_carte()) - else: - if j1.paquet.est_vide(): - print("Le perdant est {}".format(j1.nom)) - elif j2.paquet.est_vide(): - print("Le perdant est {}".format(j2.nom)) - - - - - - if j1.paquet.est_vide() and j2.paquet.est_vide(): - print("Partie nulle") - elif j1.paquet.est_vide(): - print("Le perdant est {}".format(j1.nom)) - elif j2.paquet.est_vide(): - print("Le perdant est {}".format(j2.nom)) - + else: + if window.p1.paquet.est_vide() and window.p2.paquet.est_vide(): + window.text_content.set("Partie nulle") + elif window.p1.paquet.est_vide(): + window.text_content.set("Vous avez perdu") + elif window.p2.paquet.est_vide(): + window.text_content.set("L'ordinateur à perdu") +#jeux = Jeux(32) +window = Window(jouer_tour) +window.build_pregame() +window.mainloop() \ No newline at end of file diff --git a/util/bataille.py b/util/bataille.py index 8c634b6..b07ccb6 100644 --- a/util/bataille.py +++ b/util/bataille.py @@ -73,9 +73,8 @@ class Joueur: """ Construction de la classe Joueur. """ - def __init__(self, paquet, nom): + def __init__(self, paquet): self.paquet = paquet - self.nom = nom self.derniere_carte = None def tire_carte(self): diff --git a/util/window.py b/util/window.py index 97db86c..b2abcda 100644 --- a/util/window.py +++ b/util/window.py @@ -1,23 +1,25 @@ from tkinter import Tk, Label, Button, IntVar, StringVar, Entry, Radiobutton from PIL import Image, ImageTk -#from util.bataille import Carte +from util.bataille import Jeux, Joueur class Window(Tk): - def __init__(self, p1, p2): + JEU = None + + def __init__(self, jouer_tour): #, p1, p2): """Initialise la fenêtre et prends les deux joueurs en arguments""" Tk.__init__(self) self.title("Bataille") - self.minsize(1300, 600) - self.geometry("1300x600") + self.minsize(500, 500) + self.geometry("500x500") self.config(background="green") - self.p1 = p1 - self.p2 = p2 + self.jouer_tour = jouer_tour + #self.p1 = p1 + #self.p2 = p2 self.c1 = None self.c2 = None - self.build_pregame() def build_pregame(self): self.name_var = StringVar() @@ -45,6 +47,10 @@ class Window(Tk): def start_game(self): self.destroy_pregame() + Window.JEU = Jeux(self.cards_var.get()) + carte_p1, carte_p2 = Window.JEU.distribue() + self.p1 = Joueur(carte_p1) + self.p2 = Joueur(carte_p2) self.build_game() def build_game(self): @@ -66,7 +72,7 @@ class Window(Tk): self.count2 = Label(textvariable=self.taille_paquet2) self.count2.grid(row=3, column=2) - self.button = Button(self, text="Jouer", command=self.show_cards) + self.button = Button(self, text="Jouer", command=lambda: self.jouer_tour(self)) self.button.grid(row=6, column=1) #.set() pour changer le texte @@ -85,6 +91,8 @@ class Window(Tk): #self.taille_paquet1.set(self.p1.paquet.taille()) #self.taille_paquet2.set(self.p2.paquet.taille()) #self.text_content.set("a "+ str(self.p1.paquet.taille())) + self.taille_paquet1.set(self.p1.paquet.taille()) + self.taille_paquet2.set(self.p2.paquet.taille()) img1 = ImageTk.PhotoImage(card_to_image(self.p1.derniere_carte)) self.c1 = Label(self, image=img1)