Browse Source

Modif

master
vandepoele.e 2 years ago
parent
commit
950b1ee968
  1. 114
      util/File.py
  2. 25
      util/bataille.py

114
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())

25
util/bataille.py

@ -1,5 +1,5 @@
from random import * from random import *
from lib.File import File_lst as File from File import File_lst as File
class Carte: class Carte:
def __init__(self, valeur, couleur): def __init__(self, valeur, couleur):
@ -13,13 +13,21 @@ class Carte:
return -1 return -1
else: else:
return 0 return 0
class Jeux: class Jeux:
def __init__(self, nbcartes): def __init__(self, nbcartes):
self.paquet = File() self.paquet = File()
if nbcartes == 32: 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: else:
pq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'Valet', 'Dame', 'Roi'] pq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'Valet', 'Dame', 'Roi']
@ -29,13 +37,14 @@ class Jeux:
pq.pop(rd) pq.pop(rd)
def distribue(self): def distribue(self):
print(self.paquet) cp = self.paquet
f1 = File() f1 = File()
f2 = File() f2 = File()
for val in range(self.paquet.taille()): while not cp.est_vide():
f1.enfiler(self.paquet[1]) f1.enfiler(cp.defiler())
#f2.enfiler(self.paquet[val]) f2.enfiler(cp.defiler())
print(f1, f2) return f1, f2
class Joueur: class Joueur:
def __init__(self, paquet_j, nom): def __init__(self, paquet_j, nom):

Loading…
Cancel
Save