Browse Source

Creation Objet et Inventaire

olinox 10 năm trước cách đây
mục cha
commit
8261af2e64
3 tập tin đã thay đổi với 111 bổ sung7 xóa
  1. 50 2
      lib/Inventaire.py
  2. 23 5
      lib/Objet.py
  3. 38 0
      lib/ObjetAction.py

+ 50 - 2
lib/Inventaire.py

@@ -1,7 +1,55 @@
 #from __future__ import unicode_literals
 # -*- coding: utf-8 -*-
 
-class Inventaire():
+class Inventaire(dict):
     """inventaire des objets portes par une creature ou un joueur"""
     def __init__(self):
-        self.liste = {}  #objet: nombre
+        super(Inventaire, self).__init__()
+
+    def ajouter(self, objet, nbre = 1):
+        """ajoute un ou plusieurs objets a l'inventaire"""
+        if objet in self:
+            self[objet] += nbre
+        else:
+            self.[objet] = nbre
+
+    def retirer(self, objet, nbre = 1):
+        """retire le nombre en parametre au nombre de l'objet
+            la quantite restante ne peut pas etre negative"""
+        if objet in self:
+            self[objet] -= nbre
+            if self[objet] < 0:
+                self[objet] = 0
+
+    def defQuantite(self, objet, nombre):
+        """definit la quantite de l'objet"""
+        self[objet] = nombre
+            
+    def utiliser(objet):
+        """utilise un objet de l'inventaire"""
+        if objet in self:
+            if self[objet] > 0:
+                objet.utiliser()
+                if objet.estConsomme():
+                    self[objet].retirer(1)
+            
+    def poidsTotal(self):
+        retour = 0
+        for objet in self:
+            retour += (self[objet]*objet.poids)
+        return retour    
+
+    def trier(self):
+        """retourne un dictionnaire de listes,
+            le dictionnaire recense les objets par type
+            les objets sont tries par ordre alphabétique"""
+        retour = {}
+        for objet in self:
+            if not objet.typeObjet in retour:
+                retour[objet.typeObjet] = []
+            retour[objet.typeObjet].append((objet, nombre))
+
+        for tO in retour:
+            retour[tO].sort()
+
+        return retour    

+ 23 - 5
lib/Objet.py

@@ -3,8 +3,26 @@
 
 class Objet():
     """objets tels qu'ils apparaissent dans l'inventaire"""
-    def __init__(self):
-        self.id = ""
-        self.nom = ""
-        self.valeur = 0
-        self.poids = 0
+    def __init__(self, nom = "Objet", poids = 0, valeur = 0, \
+                 monnaie = "", description = "", typeObjet = "autre", \
+                 estConsommable = False, actionObjet = ActionObjet())):
+
+        self.id = nouvelId("objet")
+        self.nom = nom
+        self.poids = poids    #unite depend des regles, kg par defaut
+        self.valeur = valeur  
+        self.monnaie = monnaie   #type de monnaie issue des regles, ou au choix
+        self.description = description
+        self.typeObjet = typeObjet    #arme, consommable, defense, butin, monnaie, autre...
+        self.estConsommable = estConsommable
+        self.estConsomme = False
+        self.action = actionObjet
+
+    def utiliser(self):
+        """l'objet est utilise, il renvoie son action"""
+        self.action.executer()
+        if self.estConsommable:
+            self.estConsomme = True
+
+
+        

+ 38 - 0
lib/ObjetAction.py

@@ -0,0 +1,38 @@
+#from __future__ import unicode_literals
+# -*- coding: utf-8 -*-
+
+listeTypeAction = ["AoRien", "AoAttaque", "AoJetDes", "AoMsg"]
+
+
+class ObjetAction():
+    """action effectuee par un objet"""
+    def __init__(self, typeAction = "AoRien"):
+        self.majTypeAction(typeAction)
+
+    def majTypeAction(self, typeAction):
+        if typeAction in listeTypeAction:
+            self.typeAction = typeAction
+        else:
+            if not self.typeAction in listeTypeAction:
+                self.typeAction = "AoRien"
+
+    def executer(self):
+        """execute l'action:
+            AoMsg: affiche la boite de dialogue avec le message prevu
+            AoJetDes: affiche la boite de dialogue jet de des
+            AoAttaque: renvoie l'attaque en question"""
+    
+        if self.typeAction = "AoMsg":
+            pass
+        
+        elif self.typeAction = "AoJetDes":
+            pass
+
+        elif self.typeAction = "AoAttaque":
+            pass
+
+        elif self.typeAction = "AoRien":
+            pass
+
+        else:
+            pass