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() class Bataille:
fenetre.title("Jeu de la Bataille") def __init__(self):
fenetre.geometry('1500x800') self.jeu = Jeux(32)
fenetre.configure(bg='green') self.joueur, self.ordi = self.jeu.distribue()
label = tk.Label(fenetre, text="JEU DE LA BATAILLE", font=("Arial", 25, "bold"), fg="black") self.fenetre = tk.Tk()
label.pack() self.fenetre.title("Jeu de la Bataille")
label_joueur = tk.Label(fenetre, text="Carte du joueur : ") self.fenetre.geometry("1500x800")
label_joueur.pack(pady=5) self.fenetre.configure(bg="green")
label_ordi = tk.Label(fenetre, text="Carte de l'ordinateur : ") tk.Label(
label_ordi.pack(pady=5) 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'") self.label_joueur = tk.Label(
label_info.pack(pady=10) 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" self.label_ordi = tk.Label(
"Le joueur ayant la carte de plusgrande valeur récupère les deux cartes et les remets sous son paquet.\n" self.fenetre,
"En cas d’égalité, chaque joueur ajoute une carte à l’envers, puis une autre carte àl’endroit," text="Carte de l'ordinateur : ",
"et on compare ànouveau les valeurs.\n En cas de nouvelle égalité, on réitère le processus." font=("Arial", 16),
"Le gagnant remporte l’ensemble descartes jouées.\n", bg="red") bg="green"
label.pack() )
self.label_ordi.pack(pady=10)
bouton_quitter = tk.Button(fenetre,text="Quitter",font=("Arial", 11),fg="white",width=12,command=fenetre.destroy) self.label_info = tk.Label(
bouton_quitter.pack(pady=10) 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