| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- # -*-coding:Latin-1 -*
- """personnages du jeu, joueurs ou non"""
- import accessvg
- from armes import Arme
- from armures import Armure
- class Personnage():
- """personnage generique"""
- def __init__(self):
- """nouveau personnage"""
- #nom du personnage
- self.nom = "non defini"
- #race du personnage:
- self.race = ""
- #taille du personnage
- self.taille = ""
- #espace occupe sur la carte de combat:
- self.espace = (1,1)
- #points d'action:
- self.pA = 0
- #condition physique:
- self.cP = 0
- #force mentale:
- self.fM = 0
- #peut utiliser la magie:
- self.magie = False
- #maitrise des armes, armures, sorts et compétences
- self.maitrise = {}
- #equipements
- self.equipement = {'arme 1': '', 'arme 2': '', 'armure': '', 'autre': []}
- def enregistrer(self):
- """enregistre le personnage dans le fichier"""
- accessvg.sauver(self.nom, self)
- print("'{}' sauvegarde dans '{}'".format(self.nom, self.__class__.__name__))
- def charger(self, nom):
- """si le personnage existe dans la bdd, on recupere ses infos"""
- self.nom = nom
- try:
- tmp = accessvg.recup(self.__class__.__name__, self.nom)
- except:
- print("echec du chargement du personnage")
- tmp = None
- return tmp
- def nouveau(self, nom):
- """on créé un nouveau perso"""
- self.nom = nom
- print("### Creation de {} ###".format(self.nom))
- modele = ("Saisissez les informations sur le modele suivant: \n "\
- "Race;Taille;Espace occupe x,y;Points d'actions;"\
- "Condition physique;Force mentale;Pratique la magie(o/n) \n")
- valide = "n"
- #on commence par les carac principales
- while valide != "o":
- chaine = raw_input(modele)
- self.race = chaine.split(";")[0]
- self.taille = chaine.split(";")[1]
- self.espace = (int((chaine.split(";")[2]).split(",")[0]), int((chaine.split(";")[2]).split(",")[1]))
- self.pA = int(chaine.split(";")[3])
- self.cP = int(chaine.split(";")[4])
- self.fM = int(chaine.split(";")[5])
- if chaine.split(";")[6] == "o":
- self.magie = True
- else:
- self.magie = False
- print(self)
- valide = raw_input("Continuer et saisir l'equipement? (o/n) \n")
- modele = "Arme 1;Arme 2;Armure;Autre1;Autre2;...\n"
- valide = "n"
- #ensuite l'equipement
- lst = []
- while valide != "o":
- chaine = raw_input(modele)
- arme1 = Arme().charger(chaine.split(";")[0])
- self.equipement['arme 1'] = arme1
- arme2 = Arme().charger(chaine.split(";")[1])
- self.equipement['arme 2'] = arme2
- armure = Armure().charger(chaine.split(";")[2])
- self.equipement['armure'] = armure
- for part in chaine.split(";")[3:]:
- lst.append(part)
- self.equipement['autre'] = lst
- print(self.equipement)
- valide = raw_input("Continuer? (o/n)\n")
-
- #ensuite les maitrises
-
- def __repr__(self):
- """retourne une chaine decrivant le pesonnage"""
- chaine = ("** Nom: {} - Race: {} - Taille: {} - Espace occupe: {} - "\
- "Points d'actions: {} - Condition physique: {} - "\
- "Force mentale: {} - Pratique la magie: {} - Equipement: {} **\n]"\
- "".format(self.nom, self.race, self.taille, self.espace,
- self.pA, self.cP, self.fM, self.magie, self.equipement))
- return chaine
-
- def modifier(self):
- """Modification d'un objet enregistre"""
- saisie = ""
- while not saisie == "ok":
- saisie = raw_input("Effectuez vos modifications (ex: 'race=elfe')"\
- "- 'ok' pour finir\n")
- #print(saisie.split(" "))
- if saisie.split("=")[0].lower() == "nom":
- print("le nom ne peut être modifie\n")
- elif saisie.split("=")[0].lower() == "race":
- self.race = saisie.split("=")[1]
- elif saisie.split("=")[0].lower() == "taille":
- self.taille = saisie.split("=")[1]
- elif saisie.split("=")[0].lower() == "espace":
- self.espace = (int((saisie.split("=")[1]).split(",")[0]),int((saisie.split("=")[1]).split(",")[1]))
- elif saisie.split("=")[0].lower() == "pa":
- self.pA = int(saisie.split("=")[1])
- elif saisie.split("=")[0].lower() == "cp":
- self.cP = int(saisie.split("=")[1])
- elif saisie.split("=")[0].lower() == "fm":
- self.fM = saisie.split("=")[1]
- elif saisie.split("=")[0].lower() == "magie":
- if saisie.split("=")[1] == "o":
- self.magie = True
- else:
- self.magie = False
- elif saisie.split("=")[0].lower() == "equipement":
- if (saisie.split("=")[1]).split(":")[0].lower() == "autre":
- lst = self.equipement[autre]
- lst.append((saisie.split("=")[1]).split(":")[1])
- self.equipement[autre] = lst
- elif "arme" in (saisie.split("=")[1]).split(":")[0].lower():
- arme = Arme().charger((saisie.split("=")[1]).split(":")[1])
- self.equipement[(saisie.split("=")[1]).split(":")[0]] = arme
- elif "armure" in (saisie.split("=")[1]).split(":")[0].lower():
- armure = Armure().charger((saisie.split("=")[1]).split(":")[1])
- self.equipement[(saisie.split("=")[1]).split(":")[0]] = armure
- else:
- print("erreur equipement")
- elif saisie == "ok":
- pass
- else:
- print("Mots cles: race, taille, espace(x,y), pa, cp, fm, magie(o/n), equipement(arme 1:epee)\n")
- if raw_input("Modifications effectuees \n 'r': remplacer l'actuel / 'c': creer {}1 \n".format(self.nom)) == "r":
- accessvg.supprSvg(self.__class__.__name__, self.nom)
- print(accessvg.sauver("{}".format(self.nom), self))
-
-
- if __name__ == "__main__":
- # si lancement direct:
- #on ouvre le dictionnaire actuellement charge:
-
- while True:
- saisie = ""
- print(accessvg.afficheSvg("Personnage"))
- saisie = raw_input("\n 'd- xxxx' -> supprimer xxxx / 'n- xxxx'"\
- "-> creer xxxx / 'm- xxxx' -> modifier xxxx / 'q' -> quitter\n")
- try:
- if saisie[:2] == "d-":
- print(accessvg.supprSvg("Personnage", saisie[3:]))
- elif saisie[:2] == "n-":
- p = Personnage()
- p.nouveau("{}".format(saisie[3:]))
- p.enregistrer()
- #print(accessvg.sauver("{}".format(saisie[3:]), p))
- elif saisie[:2] == "m-":
- #p = accessvg.recup(saisie[3:])
- p = Personnage()
- p.charger("{}".format(saisie[3:]))
- print(p)
- saisie = ""
- print("\n Objet 'p' recupere.")
- p.modifier()
- elif saisie[0] == "q":
- break
- except IOError:
- print("erreur de saisie")
- pass
-
-
|