Inventaire.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. class Inventaire(dict):
  4. """inventaire des objets portes par une creature ou un joueur"""
  5. def __init__(self):
  6. super(Inventaire, self).__init__()
  7. def ajouter(self, objet, nbre = 1):
  8. """ajoute un ou plusieurs objets a l'inventaire"""
  9. if objet in self:
  10. self[objet] += nbre
  11. else:
  12. self.[objet] = nbre
  13. def retirer(self, objet, nbre = 1):
  14. """retire le nombre en parametre au nombre de l'objet
  15. la quantite restante ne peut pas etre negative"""
  16. if objet in self:
  17. self[objet] -= nbre
  18. if self[objet] < 0:
  19. self[objet] = 0
  20. def defQuantite(self, objet, nombre):
  21. """definit la quantite de l'objet"""
  22. self[objet] = nombre
  23. def utiliser(objet):
  24. """utilise un objet de l'inventaire"""
  25. if objet in self:
  26. if self[objet] > 0:
  27. objet.utiliser()
  28. if objet.estConsomme():
  29. self[objet].retirer(1)
  30. def poidsTotal(self):
  31. retour = 0
  32. for objet in self:
  33. retour += (self[objet]*objet.poids)
  34. return retour
  35. def trier(self):
  36. """retourne un dictionnaire de listes,
  37. le dictionnaire recense les objets par type
  38. les objets sont tries par ordre alphabétique"""
  39. retour = {}
  40. for objet in self:
  41. if not objet.typeObjet in retour:
  42. retour[objet.typeObjet] = []
  43. retour[objet.typeObjet].append((objet, nombre))
  44. for tO in retour:
  45. retour[tO].sort()
  46. return retour