diff --git a/File.py b/File.py new file mode 100644 index 0000000..64919e6 --- /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/main.py b/main.py index 63a66e2..6523f29 100644 --- a/main.py +++ b/main.py @@ -1,3 +1,4 @@ +from File import File_chaine import tkinter as tk from urllib.request import urlopen import PIL @@ -17,6 +18,59 @@ class Carte: elif self.valeur == self.other : return 0 return None +class Jeux: + def __init__(self, nb): + paquet = [] + nb = len(self.paquet) + if nb == 32 : + nbcarte = nb + elif nb == 54 : + nbcarte = nb + else : + raise ValueError("Saissisez 32 ou 54 cartes") + + for i in range(nbcarte): + carte = Carte() + paquet = [] + + + def distribute(self, joueur): + for i in range(nbcarte): + mcarte1 = paquet - 1 #enlever moitie val + mcarte2 = paquet # le reste du paquet + if joueur == j1 : + return File_chaine(mcarte1) + elif joueur == j2 : + return File_chaine(mcarte2) + + def jeu(self): + j1 = distribute(1) + j2 = distribute(2) + while not j1.estvide() or j2.estvide() : + + j1tete = j1.tete() + j2tete = j2.tete() + + if j1tete.valeur() > j2tete.valeur() : + j1.enfiler(j1tete) + j1.enfiler(j2tete) + + elif j1tete.valeur() < j2tete.valeur() : + j2.enfiler(j1tete) + j2.enfiler(j2tete) + + elif j1tete.valeur() == j2tete.valeur() : + + + + j1.depiler() + j2.depiler() + + + if j1.estvide() == True : + # j1 a perdu + else: + # j2 a perdu class Gui: