armures.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. # -*-coding:Latin-1 -*
  2. """objets: armes"""
  3. import accessvg
  4. class Armure():
  5. """definition d'une armure"""
  6. def __init__(self):
  7. """initialisation de l'objet armure"""
  8. #nom de l'armure
  9. self.nom = "indefini"
  10. #poids de l'armure
  11. self.poids = 1
  12. #protection de l'armure
  13. self.protection = 0
  14. #description de l'armure
  15. self.description = ""
  16. def enregistrer(self):
  17. """enregistre l'armure dans le fichier"""
  18. accessvg.sauver(self.nom, self)
  19. print("'{}' sauvegarde dans '{}'".format(self.nom, self.__class__.__name__))
  20. def charger(self, nom):
  21. """si l'armure existe dans la bdd, on recupere ses infos"""
  22. self.nom = nom
  23. try:
  24. tmp = accessvg.recup(self.__class__.__name__, self.nom)
  25. except:
  26. print("echec du chargement de: {}".format(self.__class__.__name__))
  27. tmp = None
  28. return tmp
  29. def nouveau(self, nom):
  30. """on cree une nouvelle armure"""
  31. self.nom = nom
  32. print("### Creation de {} ###".format(self.nom))
  33. modele = ("Saisissez les informations sur le modele suivant: \n "\
  34. "Poids;Protection;Description \n")
  35. valide = "n"
  36. while valide != "o":
  37. chaine = raw_input(modele)
  38. self.poids = int(chaine.split(";")[0])
  39. self.protection = int(chaine.split(";")[1])
  40. self.description = chaine.split(";")[2]
  41. print(self)
  42. valide = raw_input("Continuer? (o/n) \n")
  43. def __repr__(self):
  44. """retourne une chaine decrivant l'armure"""
  45. chaine = ("** Nom: {} - Poids: {} - Protection: {} - "\
  46. "Description: {} **\n]"\
  47. "".format(self.nom, self.poids, self.protection, self.description))
  48. return chaine
  49. def modifier(self):
  50. """Modification d'un objet enregistre"""
  51. saisie = ""
  52. while not saisie == "ok":
  53. saisie = raw_input("Effectuez vos modifications (ex: 'poids=3')"\
  54. "- 'ok' pour finir\n")
  55. saisie = saisie.lower()
  56. #print(saisie.split(" "))
  57. if saisie.split("=")[0] == "nom":
  58. print("le nom ne peut être modifie\n")
  59. elif saisie.split("=")[0] == "poids":
  60. self.poids = int(saisie.split("=")[1])
  61. elif saisie.split("=")[0] == "protection":
  62. self.protection = int(saisie.split("=")[1])
  63. elif saisie.split("=")[0] == "decription":
  64. self.decription = saisie.split("=")[1]
  65. elif saisie == "ok":
  66. pass
  67. else:
  68. print("Mots cles: poids, protection, description\n")
  69. if raw_input("Modifications effectuees \n 'r': remplacer l'actuel / 'c': creer {}1 \n".format(self.nom)) == "r":
  70. accessvg.supprSvg(self.__class__.__name__, self.nom)
  71. print(accessvg.sauver("{}".format(self.nom), self))
  72. if __name__ == "__main__":
  73. # si lancement direct:
  74. #on ouvre le dictionnaire actuellement charge:
  75. while True:
  76. saisie = ""
  77. print(accessvg.afficheSvg("Armure"))
  78. saisie = raw_input("\n 'd- xxxx' -> supprimer xxxx / 'n- xxxx'"\
  79. "-> creer xxxx / 'm- xxxx' -> modifier xxxx / 'q' -> quitter\n")
  80. try:
  81. if saisie[:2] == "d-":
  82. print(accessvg.supprSvg("Armure", saisie[3:]))
  83. elif saisie[:2] == "n-":
  84. ar = Armure()
  85. ar.nouveau("{}".format(saisie[3:]))
  86. ar.enregistrer()
  87. #print(accessvg.sauver("{}".format(saisie[3:]), a))
  88. elif saisie[:2] == "m-":
  89. #a = accessvg.recup(saisie[3:])
  90. ar = Armure()
  91. ar.charger(saisie[3:])
  92. print(a)
  93. saisie = ""
  94. print("\n Objet 'ar' recupere.")
  95. ar.modifier()
  96. elif saisie[0] == "q":
  97. break
  98. except IOError:
  99. print("erreur de saisie")
  100. pass