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() |
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…
Reference in new issue