armes.py 4.3 KB

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