From 950b1ee96882479d427d5ac2c90785d34c0fd04a Mon Sep 17 00:00:00 2001 From: "vandepoele.e" Date: Wed, 14 Dec 2022 10:56:52 +0100 Subject: [PATCH] Modif --- util/File.py | 114 +++++++++++++++++++++++++++++++++++++++++++++++ util/bataille.py | 25 +++++++---- 2 files changed, 131 insertions(+), 8 deletions(-) create mode 100644 util/File.py diff --git a/util/File.py b/util/File.py new file mode 100644 index 0000000..64919e6 --- /dev/null +++ b/util/File.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +class File_lst: + """Implémentation d'une file par une liste.""" + def __init__(self): + """Crée une file vide.""" + self.__file = [] + + def est_vide(self): + """Indique si la file est vide.""" + return self.__file == [] + + def enfiler(self, valeur): + """Enfile l'élément valeur.""" + self.__file.append(valeur) + + def defiler(self): + """Défile la tête de la file et la renvoie.""" + return self.__file.pop(0) + + def taille(self): + """Renvoie la taille de la file.""" + return len(self.__file) + + def tete(self): + """Renvoie la tête de la file (sans la défiler).""" + return self.__file[0] + + def __str__(self): + s = "tete->" + for val in self.__file: + s += str(val) + "->" + return s + "queue" + + +class Maillon: + """Un maillon d'une liste doublement chaînée.""" + def __init__(self, precedent, valeur, suivant): + self.valeur = valeur + self.precedent = precedent + self.suivant = suivant + + def __str__(self): + return str(self.valeur) + + +class File_chaine: + """Implémentation d'une file par une liste doublement chaînée.""" + def __init__(self): + """Crée une file vide.""" + self.__debut = self.__fin = None + self.__taille = 0 + + def est_vide(self): + """Indique si la file est vide.""" + return self.__taille == 0 + + def enfiler(self, valeur): + """Enfile l'élément valeur.""" + maillon = Maillon(self.__fin, valeur, None) + if self.est_vide(): + self.__debut = self.__fin = maillon + else: + self.__fin.suivant = maillon + self.__fin = maillon + self.__taille += 1 + + def defiler(self): + """Défile la tête de la file et la renvoie.""" + if self.est_vide(): + raise IndexError("Impossible de défiler une file vide.") + valeur = self.__debut.valeur + self.__taille -= 1 + if self.est_vide(): + self.__debut = self.__fin = None + else: + self.__debut = self.__debut.suivant + self.__debut.precedent = None + return valeur + + def taille(self): + """Renvoie la taille de la file.""" + return self.__taille + + def tete(self): + """Renvoie la tête de la file (sans la défiler).""" + if self.est_vide(): + raise IndexError("Une file vide n'a pas de tête.") + return self.__debut.valeur + + def __str__(self): + s = "tete->" + maillon = self.__debut + while maillon is not None: + s += str(maillon) + "->" + maillon = maillon.suivant + return s + "queue" + + +if __name__ == "__main__": + f = File_lst() + print(f.est_vide()) + f.enfiler('A') + f.enfiler('B') + f.enfiler('C') + print(f.est_vide()) + print(f.tete()) + print(f) + print(f.taille()) + print(f.defiler()) + print(f.defiler()) + print(f.defiler()) + print(f.est_vide()) diff --git a/util/bataille.py b/util/bataille.py index f7deb02..5a86dfe 100644 --- a/util/bataille.py +++ b/util/bataille.py @@ -1,5 +1,5 @@ from random import * -from lib.File import File_lst as File +from File import File_lst as File class Carte: def __init__(self, valeur, couleur): @@ -13,13 +13,21 @@ class Carte: return -1 else: return 0 - + class Jeux: def __init__(self, nbcartes): self.paquet = File() if nbcartes == 32: - pq = [1, 7, 8, 9, 10, 'Valet', 'Dame', 'Roi'] + pq = File() + crt = [1, 7, 8, 9, 10, 'Valet', 'Dame', 'Roi'] + couleur = ['Coeur', 'Pique', 'Carreaux', 'Trefle'] + for i in range(len(crt)): + pq.enfiler(crt) + for i in range(3): + x = Carte(pq.defiler(),couleur[i]) + print(pq) + #x.empiler(pq.defiler()) else: pq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'Valet', 'Dame', 'Roi'] @@ -29,13 +37,14 @@ class Jeux: pq.pop(rd) def distribue(self): - print(self.paquet) + cp = self.paquet f1 = File() f2 = File() - for val in range(self.paquet.taille()): - f1.enfiler(self.paquet[1]) - #f2.enfiler(self.paquet[val]) - print(f1, f2) + while not cp.est_vide(): + f1.enfiler(cp.defiler()) + f2.enfiler(cp.defiler()) + return f1, f2 + class Joueur: def __init__(self, paquet_j, nom):