diff --git a/File.cpython-310.pyc b/File.cpython-310.pyc new file mode 100644 index 0000000..e7c4721 Binary files /dev/null and b/File.cpython-310.pyc differ diff --git a/File.py b/File.py new file mode 100644 index 0000000..05b51dc --- /dev/null +++ b/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/projet_bataille.py b/projet_bataille.py index 21cce6c..2dfb495 100644 --- a/projet_bataille.py +++ b/projet_bataille.py @@ -15,18 +15,27 @@ class Carte: return 0 class Jeu: - def __init__(self, paquet): + def __init__(self): self.paquet = [] + def distribue(self, nombre): f1 = File() f2 = File() + for carte in range(nombre): for i in range(4): self.paquet.append(carte + 1) - shuffle(self.paquet) + + shuffle(self.paquet) + for i in range(nombre*2): + f2.enfiler(self.paquet[i]) + + for i in range(nombre*2, nombre*4): f1.enfiler(self.paquet[i]) - return f1 + + return f1, f2 + """c1 = Carte(5, "bleu") c2 = Carte(4, "vert") @@ -35,5 +44,7 @@ c4 = Carte(5, "bissap") print(c1.compare(c4))""" -jeu = Jeu(52) -print(jeu.distribue(13)) \ No newline at end of file +jeu = Jeu() +f1, f2 = jeu.distribue(13) +print ("f1 :", f1) +print ("f2 :", f2) \ No newline at end of file