vandepoele.e 2 years ago
parent
commit
baf89218f7
  1. 2
      lib/Pile.py
  2. 111
      lib/listeChaine.py
  3. 2
      main.py
  4. BIN
      util/50.png
  5. 20
      util/window.py

2
lib/Pile.py

@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from listeChaine import ListeChaine from lib.listeChaine import ListeChaine
class Pile_lst: class Pile_lst:
"""Implémentation d'une pile par une liste.""" """Implémentation d'une pile par une liste."""

111
lib/listeChaine.py

@ -0,0 +1,111 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 22 20:44:35 2020
@author: manu
"""
class Maillon:
"""Un maillon d'une liste chaînée."""
def __init__(self, valeur, suivant):
self.valeur = valeur
self.suivant = suivant
def __str__(self):
"""Renvoie une chane de caractères représentant le maillon."""
return str(self.valeur)
class ListeChaine:
"""Une liste chaînée."""
def __init__(self, tete=None):
"""Crée une liste vide, ou une liste dont la tete (un maillon)
est donnée."""
self.__tete = tete
def est_vide(self):
"""Indique si la liste est vide."""
return self.__tete is None
def tete(self):
"""Renvoie la valeur du premier élément de la liste."""
if self.est_vide():
raise IndexError("La liste vide n'a pas de tête")
return self.__tete.valeur
def queue(self):
"""Renvoie la queue de la liste."""
if self.est_vide():
raise IndexError("La liste vide n'a pas de queue")
return ListeChaine(self.__tete.suivant)
def ajoute(self, valeur):
"""ajoute `valeur` en tête de la liste."""
self.__tete = Maillon(valeur, self.__tete)
def __str__(self):
"""Renvoie une chaîne de caractères représentant la liste."""
maillon = self.__tete
s = ''
while maillon is not None:
s = s + str(maillon.valeur)
maillon = maillon.suivant
if maillon is not None:
s += '->'
return s
def __len__(self):
"""Renvoie la longueur de la liste."""
maillon = self.__tete
long = 0
while maillon is not None:
long = long + 1
maillon = maillon.suivant
return long
def __getitem__(self, n):
"""Renvoie l'élément d'indice n de la liste."""
maillon = self.__tete
i = 0
while i < n and maillon is not None:
i = i + 1
maillon = maillon.suivant
if maillon is None or n < 0:
raise IndexError("Indice non valide")
return maillon.valeur
def __add__(self, other):
"""Renvoie la liste correspondant à la concaténation des 2 listes."""
if self.est_vide():
return other
v = self.tete()
q = self.queue()
return ListeChaine(Maillon(v, (q + other).__tete))
def reverse(self):
"""Renvoie une liste correspondant à la liste renversée."""
res = ListeChaine()
maillon = self.__tete
while maillon is not None:
res.ajoute(maillon.valeur)
maillon = maillon.suivant
return res
if __name__ == "__main__":
lst = ListeChaine()
print(lst.est_vide())
lst.ajoute(306)
lst.ajoute(42)
lst.ajoute(205)
print(lst)
print(lst.est_vide())
print(lst[0])
print(lst[1])
print(len(lst))
lst2 = ListeChaine()
lst2.ajoute(18)
lst2.ajoute(45)
print(lst + lst2)

2
main.py

@ -1,4 +1,4 @@
from bataille import * from util.bataille import *
from lib.Pile import Pile_lst from lib.Pile import Pile_lst
def bataille(): def bataille():

BIN
util/50.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

20
util/window.py

@ -1,4 +1,4 @@
from tkinter import Tk, Label, Button from tkinter import Tk, Label, Button, PhotoImage, Canvas, NW
from PIL import Image, ImageTk from PIL import Image, ImageTk
class Window(Tk): class Window(Tk):
@ -28,15 +28,23 @@ class Window(Tk):
self.c1.destroy() self.c1.destroy()
if self.c2 is not None: if self.c2 is not None:
self.c2.destroy() self.c2.destroy()
self.c1 = Label(text=self.p1.derniere_carte, font=("Courrier", 48)) #self.c1 = Label(text=self.p1.derniere_carte, font=("Courrier", 48))
self.c2 = Label(text=self.p2.derniere_carte, font=("Courrier", 48)) #self.c2 = Label(text=self.p2.derniere_carte, font=("Courrier", 48))
img1 = ImageTk.PhotoImage(card_to_image(self.p1.derniere_carte))
self.c1 = Label(self, image=img1)
self.c1.photo = img1
img2 = ImageTk.PhotoImage(card_to_image(self.p2.derniere_carte))
self.c2 = Label(image=img2)
self.c2.photo = img2
self.c1.grid(row=2, column=0) self.c1.grid(row=2, column=0)
self.c2.grid(row=2, column=2) self.c2.grid(row=2, column=2)
def card_to_image(card): def card_to_image(card):
r = range(56-card.valeur*4, 52-card.valeur*4 , -1) card_names = list(range(56-card.valeur*4, 52-card.valeur*4 , -1))
for i in r: image = Image.open("./img/"+str(card_names[card.couleur])+".png")
print(i) print(str(card_names[card.couleur])+".png")
return image
if __name__ == "__main__": if __name__ == "__main__":
card_to_image(Carte(2, 4)) card_to_image(Carte(2, 4))

Loading…
Cancel
Save