|
|
|
from File import File_chaine
|
|
|
|
import tkinter as tk
|
|
|
|
from PIL import Image, ImageTk
|
|
|
|
import sqlite3
|
|
|
|
|
|
|
|
|
|
|
|
class Carte:
|
|
|
|
def __init__(self, couleur, valeur, img_path):
|
|
|
|
self.valeur = valeur
|
|
|
|
self.couleur = couleur
|
|
|
|
print(img_path)
|
|
|
|
image = Image.open(img_path)
|
|
|
|
self.image = ImageTk.PhotoImage((image))
|
|
|
|
# self.image = img_path
|
|
|
|
|
|
|
|
def compare(self, other):
|
|
|
|
self.other = other.valeur
|
|
|
|
if self.valeur > self.other :
|
|
|
|
return 1
|
|
|
|
elif self.valeur < self.other :
|
|
|
|
return -1
|
|
|
|
elif self.valeur == self.other :
|
|
|
|
return 0
|
|
|
|
return None
|
|
|
|
|
|
|
|
def __str__(self) -> str:
|
|
|
|
return str(self.valeur) + ' de ' + self.couleur
|
|
|
|
|
|
|
|
|
|
|
|
class Jeux:
|
|
|
|
def __init__(self, nb) -> None:
|
|
|
|
self.paquet = []
|
|
|
|
self.nombre_carte = nb
|
|
|
|
if self.nombre_carte != 32 and self.nombre_carte != 52:
|
|
|
|
raise ValueError("Saissisez 32 ou 52 cartes")
|
|
|
|
|
|
|
|
# Création du paquet de carte en fonction du nombre de carte
|
|
|
|
conn = sqlite3.connect('bdd.db')
|
|
|
|
c = conn.cursor()
|
|
|
|
if self.nombre_carte == 32:
|
|
|
|
c.execute('SELECT * FROM Cartes WHERE belote=True')
|
|
|
|
else:
|
|
|
|
c.execute('SELECT * FROM Carte')
|
|
|
|
data = c.fetchall()
|
|
|
|
for i, carte in enumerate(data):
|
|
|
|
self.paquet.append(Carte(data[i][0], data[i][1], data[i][3]))
|
|
|
|
|
|
|
|
|
|
|
|
def distribute(self) : #-> File_chaine:
|
|
|
|
for i in range(nbcarte):
|
|
|
|
|
|
|
|
while not paquet.taille() == paquet.taille() // 2 :
|
|
|
|
paquet.defiler()
|
|
|
|
# taille
|
|
|
|
mcarte2 = paquet # le reste du paquet
|
|
|
|
if joueur == j1 :
|
|
|
|
return File_chaine(mcarte1)
|
|
|
|
elif joueur == j2 :
|
|
|
|
return File_chaine(mcarte2)
|
|
|
|
|
|
|
|
# reflexion sur repartition des cartes
|
|
|
|
# for i in range(self.nombre_carte): # problème lien entre fonction et class
|
|
|
|
#
|
|
|
|
# while not paquet.taille() == paquet.taille() // 2 :
|
|
|
|
# paquet.defiler()
|
|
|
|
#
|
|
|
|
# return paquet
|
|
|
|
|
|
|
|
def jeu(self):
|
|
|
|
j1 = distribute()
|
|
|
|
j2 = distribute()
|
|
|
|
while not j1.estvide() or j2.estvide() :
|
|
|
|
|
|
|
|
#j1tete = j1.tete()
|
|
|
|
#j2tete = j2.tete()
|
|
|
|
|
|
|
|
while not j1.compare(j2) == 0 : #j1.tete().compare(j2.tete()) == 0 :
|
|
|
|
# envers
|
|
|
|
j1.enfiler(j1.defiler())
|
|
|
|
j2.enfiler(j2.defiler())
|
|
|
|
# endroit
|
|
|
|
j1.enfiler(j1.defiler())
|
|
|
|
j2.enfiler(j2.defiler())
|
|
|
|
|
|
|
|
if j1.compare(j2) == 1 :#j1.tete().compare(j2.tete()) == 1 :
|
|
|
|
j1.enfiler(j1.defiler())
|
|
|
|
j1.enfiler(j2.defiler())
|
|
|
|
|
|
|
|
elif j1.compare(j2) == -1 :#j1.tete().compare(j2.tete()) == -1 :
|
|
|
|
j2.enfiler(j1.defiler())
|
|
|
|
j2.enfiler(j2.defiler())
|
|
|
|
|
|
|
|
j1.defiler()
|
|
|
|
j2.defiler()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if j1.estvide() == True :
|
|
|
|
# j1 a perdu donc j2 gagne toutes les cartes
|
|
|
|
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
# j2 a perdu
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
class App:
|
|
|
|
def __init__(self) -> None:
|
|
|
|
self.win = tk.Tk()
|
|
|
|
|
|
|
|
self.jeu = Jeux(32)
|
|
|
|
self.images = []
|
|
|
|
|
|
|
|
self.display_card(self.jeu.paquet[12])
|
|
|
|
|
|
|
|
self.win.mainloop()
|
|
|
|
|
|
|
|
def display_card(self, carte :Carte) -> None:
|
|
|
|
self.images.append(tk.Label(image=carte.image))
|
|
|
|
self.images[-1].pack()
|
|
|
|
|
|
|
|
|
|
|
|
gui = App()
|