1 changed files with 143 additions and 22 deletions
@ -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…
Reference in new issue