You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
5.1 KiB
151 lines
5.1 KiB
import tkinter as tk
|
|
from projet_bataille import *
|
|
from time import sleep
|
|
|
|
nom1 = ""
|
|
nom2 = ""
|
|
mon_jeu = Jeu(nom1, nom2)
|
|
mon_jeu.distribue(52) # Ou le nombre que tu souhaites
|
|
|
|
fenetre = tk.Tk()
|
|
fenetre.title("Fenêtre verte")
|
|
fenetre.geometry("1280x720")
|
|
fenetre.configure(bg="green")
|
|
|
|
for i in range(5):
|
|
fenetre.grid_rowconfigure(i, weight=1)
|
|
fenetre.grid_columnconfigure(i, weight=1)
|
|
|
|
compteur = 0
|
|
|
|
label_carte1 = tk.Label(fenetre, bg="white", fg="black", font=("Arial", 14), width=9, height=8)
|
|
label_carte1.grid(row=1, column=2)
|
|
label_paquet1 = tk.Label(fenetre, text=mon_jeu.f1.taille(), bg="green", fg="white", font=("Aria", 20))
|
|
label_paquet1.grid(row=1, column=3)
|
|
|
|
label_carte2 = tk.Label(fenetre, bg="white", fg="black", font=("Arial", 14), width=9, height=8)
|
|
label_carte2.grid(row=3, column=2)
|
|
label_paquet2 = tk.Label(fenetre, text=mon_jeu.f2.taille(), bg="green", fg="white", font=("Aria", 20))
|
|
label_paquet2.grid(row=3, column=3)
|
|
|
|
label_nom1 = tk.Label(fenetre, text=nom1, bg="green", fg="white", font=("Aria", 20))
|
|
label_nom2 = tk.Label(fenetre, text=nom2, bg="green", fg="white", font=("Aria", 20))
|
|
label_nom1.grid(row=1, column=1)
|
|
label_nom2.grid(row=3, column=1)
|
|
|
|
def valider_noms():
|
|
global nom1, nom2
|
|
nom1 = entree1.get()
|
|
nom2 = entree2.get()
|
|
|
|
if nom1 == "": nom1 = "Joueur 1"
|
|
if nom2 == "": nom2 = "Joueur 2"
|
|
|
|
# On met à jour les noms sur le tapis vert
|
|
label_nom1.config(text=nom1)
|
|
label_nom2.config(text=nom2)
|
|
|
|
# On ferme la petite fenêtre
|
|
fenetre_noms.destroy()
|
|
|
|
def incrementer():
|
|
global compteur
|
|
|
|
if mon_jeu.f1.est_vide() or mon_jeu.f2.est_vide():
|
|
return
|
|
|
|
compteur += 1
|
|
label_compteur.config(text="Tour " + str(compteur))
|
|
|
|
c1 = mon_jeu.f1.defiler()
|
|
label_carte1.config(text=str(c1))
|
|
label_paquet1.config(text=str(mon_jeu.f1.taille()))
|
|
c2 = mon_jeu.f2.defiler()
|
|
label_carte2.config(text=str(c2))
|
|
label_paquet2.config(text=str(mon_jeu.f2.taille()))
|
|
|
|
score = c1.compare(c2)
|
|
|
|
if score == 1:
|
|
# Joueur 1 gagne
|
|
mon_jeu.f1.enfiler(c1)
|
|
mon_jeu.f1.enfiler(c2)
|
|
elif score == -1:
|
|
# Joueur 2 gagne
|
|
mon_jeu.f2.enfiler(c1)
|
|
mon_jeu.f2.enfiler(c2)
|
|
else:
|
|
label_compteur.config(text="BATAILLE !")
|
|
pot = [c1, c2]
|
|
c1_og = str(c1)
|
|
c2_og = str(c2)
|
|
|
|
while True:
|
|
# On vérifie s'ils ont assez de cartes (besoin de 2 cartes chacun minimum)
|
|
if mon_jeu.f1.taille() < 2 and mon_jeu.f2.taille() < 2:
|
|
label_compteur.config(text=" égalité au bout de " + str(compteur) + " tour")
|
|
return
|
|
elif mon_jeu.f1.taille() < 2:
|
|
label_compteur.config(text=nom2 + " gagne au bout de " + str(compteur) + " tour car " + nom1 + " n'a plus assez de cartes")
|
|
return
|
|
elif mon_jeu.f2.taille() < 2:
|
|
label_compteur.config(text=nom1 + " gagne au bout de " + str(compteur) + " tour car " + nom2 + " n'a plus assez de cartes")
|
|
return
|
|
|
|
# On tire une carte face cachée (on l'ajoute juste au pot)
|
|
pot.append(mon_jeu.f1.defiler())
|
|
pot.append(mon_jeu.f2.defiler())
|
|
|
|
# On tire la nouvelle carte de combat
|
|
c1 = mon_jeu.f1.defiler()
|
|
c2 = mon_jeu.f2.defiler()
|
|
pot.extend([c1, c2])
|
|
|
|
# On met à jour l'affichage avec les nouvelles cartes
|
|
label_carte1.config(text=str(c1_og) + "\n" + str(c1))
|
|
label_carte2.config(text=str(c2_og) + "\n" + str(c2))
|
|
|
|
score = c1.compare(c2)
|
|
|
|
# Qui gagne le pot ?
|
|
if score == 1: # Si J1 gagne
|
|
for carte in pot: mon_jeu.f1.enfiler(carte)
|
|
break
|
|
elif score == -1: # Si J2 gagne
|
|
for carte in pot: mon_jeu.f2.enfiler(carte)
|
|
break
|
|
label_paquet1.config(text=str(mon_jeu.f1.taille()))
|
|
label_paquet2.config(text=str(mon_jeu.f2.taille()))
|
|
|
|
if mon_jeu.f1.est_vide():
|
|
label_compteur.config(text=nom2 + " gagne car " + nom1 + " n'a plus de carte")
|
|
bouton.config(state="disabled")
|
|
elif mon_jeu.f2.est_vide():
|
|
label_compteur.config(text=nom1 + " gagne car " + nom2 + " n'a plus de carte")
|
|
bouton.config(state="disabled")
|
|
|
|
label_compteur = tk.Label( fenetre, text="Tour 0", bg="green", fg="white", font=("Arial", 20))
|
|
label_compteur.grid(row=2, column=3, sticky="e", padx=20)
|
|
|
|
bouton = tk.Button(fenetre, bg="red", width=10, height=5, command=incrementer)
|
|
bouton.grid(row=2, column=4, padx=30)
|
|
|
|
fenetre_noms = tk.Toplevel(fenetre)
|
|
fenetre_noms.title("Noms des joueurs")
|
|
fenetre_noms.geometry("300x200")
|
|
fenetre_noms.config(bg="white")
|
|
|
|
tk.Label(fenetre_noms, text="Nom Joueur 1 :", bg="white").pack(pady=5)
|
|
entree1 = tk.Entry(fenetre_noms)
|
|
entree1.pack()
|
|
|
|
tk.Label(fenetre_noms, text="Nom Joueur 2 :", bg="white").pack(pady=5)
|
|
entree2 = tk.Entry(fenetre_noms)
|
|
entree2.pack()
|
|
|
|
tk.Button(fenetre_noms, text="Commencer la partie", command=valider_noms).pack(pady=20)
|
|
|
|
# On empêche de cliquer sur la fenêtre principale tant qu'on n'a pas validé
|
|
fenetre_noms.grab_set()
|
|
|
|
fenetre.mainloop()
|