Browse Source

Classe Bataille

master
Elith 3 months ago
parent
commit
55e4442536
  1. 165
      tkinter_romans.py

165
tkinter_romans.py

@ -1,29 +1,150 @@
import tkinter as tk
import tkinter as tk
from Jeux import Jeux
fenetre = tk.Tk()
fenetre.title("Jeu de la Bataille")
fenetre.geometry('1500x800')
fenetre.configure(bg='green')
class Bataille:
def __init__(self):
self.jeu = Jeux(32)
self.joueur, self.ordi = self.jeu.distribue()
label = tk.Label(fenetre, text="JEU DE LA BATAILLE", font=("Arial", 25, "bold"), fg="black")
label.pack()
label_joueur = tk.Label(fenetre, text="Carte du joueur : ")
label_joueur.pack(pady=5)
self.fenetre = tk.Tk()
self.fenetre.title("Jeu de la Bataille")
self.fenetre.geometry("1500x800")
self.fenetre.configure(bg="green")
label_ordi = tk.Label(fenetre, text="Carte de l'ordinateur : ")
label_ordi.pack(pady=5)
tk.Label(
self.fenetre,
text="JEU DE LA BATAILLE",
font=("Arial", 25, "bold"),
bg="green"
).pack(pady=10)
label_info = tk.Label(fenetre, text="Clique sur 'Jouer'")
label_info.pack(pady=10)
self.label_joueur = tk.Label(
self.fenetre,
text="Carte du joueur : ",
font=("Arial", 16),
bg="green"
)
self.label_joueur.pack(pady=10)
label = tk.Label(fenetre, text="À chaque tour de jeu, chaque joueur joue la carte supérieure de son paquet.\n"
"Le joueur ayant la carte de plusgrande valeur récupère les deux cartes et les remets sous son paquet.\n"
"En cas d’égalité, chaque joueur ajoute une carte à l’envers, puis une autre carte àl’endroit,"
"et on compare ànouveau les valeurs.\n En cas de nouvelle égalité, on réitère le processus."
"Le gagnant remporte l’ensemble descartes jouées.\n", bg="red")
label.pack()
self.label_ordi = tk.Label(
self.fenetre,
text="Carte de l'ordinateur : ",
font=("Arial", 16),
bg="green"
)
self.label_ordi.pack(pady=10)
bouton_quitter = tk.Button(fenetre,text="Quitter",font=("Arial", 11),fg="white",width=12,command=fenetre.destroy)
bouton_quitter.pack(pady=10)
self.label_info = tk.Label(
self.fenetre,
text="Clique sur 'Jouer'",
font=("Arial", 14),
bg="green"
)
self.label_info.pack(pady=15)
fenetre.mainloop()
self.label_score = tk.Label(
self.fenetre,
text=f"Vos cartes : {self.joueur.taille()} | Cartes ordinateur : {self.ordi.taille()}",
font=("Arial", 14),
bg="green"
)
self.label_score.pack(pady=10)
tk.Label(
self.fenetre,
text=
"À chaque tour de jeu, chaque joueur joue la carte supérieure de son paquet.\n"
"Le joueur ayant la carte de plus grande valeur récupère les deux cartes.\n"
"En cas d’égalité : bataille, le gagnant récupère toutes les cartes jouées.\n"
"Le joueur sans carte perd la partie.",
bg="red",
font=("Arial", 12),
width=120,
height=6
).pack(pady=15)
tk.Button(
self.fenetre,
text="Jouer",
font=("Arial", 14),
width=15,
command=self.jouer_tour
).pack(pady=10)
tk.Button(
self.fenetre,
text="Quitter",
font=("Arial", 11),
fg="white",
bg="black",
width=12,
command=self.fenetre.destroy
).pack(pady=10)
self.fenetre.mainloop()
def mettre_a_jour_score(self):
self.label_score.config(
text=f"Vos cartes : {self.joueur.taille()} | Cartes ordinateur : {self.ordi.taille()}"
)
def jouer_tour(self):
pile = []
if self.joueur.est_vide():
self.label_info.config(text="Vous avez perdu")
return
if self.ordi.est_vide():
self.label_info.config(text="Vous avez gagné")
return
c1 = self.joueur.defiler()
c2 = self.ordi.defiler()
pile.extend([c1, c2])
self.label_joueur.config(text=f"Carte du joueur : {c1}")
self.label_ordi.config(text=f"Carte de l'ordinateur : {c2}")
res = c1.compare(c2)
while res == 0:
self.label_info.config(text="BATAILLE !")
if not self.joueur.est_vide():
pile.append(self.joueur.defiler())
if not self.ordi.est_vide():
pile.append(self.ordi.defiler())
# Vérifie que les joueurs ont encore une carte pour comparer
if self.joueur.est_vide():
self.label_info.config(text="Vous avez perdu")
self.mettre_a_jour_score()
return
if self.ordi.est_vide():
self.label_info.config(text="Vous avez gagné")
self.mettre_a_jour_score()
return
# Carte face visible
c1 = self.joueur.defiler()
c2 = self.ordi.defiler()
pile.extend([c1, c2])
self.label_joueur.config(text=f"Carte du joueur : {c1}")
self.label_ordi.config(text=f"Carte de l'ordinateur : {c2}")
res = c1.compare(c2)
# Distribue la pile au gagnant
if res == 1:
for carte in pile:
self.joueur.enfiler(carte)
self.label_info.config(text=f"Vous gagnez le pli avec {len(pile)} cartes")
else:
for carte in pile:
self.ordi.enfiler(carte)
self.label_info.config(text=f"L'ordinateur gagne le pli avec {len(pile)} cartes")
self.mettre_a_jour_score()
Bataille()
Loading…
Cancel
Save