from __future__ import unicode_literals # -*- coding: utf-8 -*- def attributOrdreJeu(): """renvoie l'attribut utilise pour definir l'ordre de jeu, None s'il n'existe pas""" return "init" def sensTriOrdreJeu(): """renvoie le type de tri pour l'ordre de jeu: 0 = croissant / 1 = decroissant""" return 1 def ordreAttributs(): """renvoie la liste des attributs avec leur position relative (pour l'affichage en combat)""" lst = ["init", "PV", "TotalPV", "CA", "BBA", "Ref", "Vig", "Vol", "F", "D", "C", "I", "S", "Ch", "B_init"] return lst def ordreAttributsFichePerso(): """renvoie la liste des attributs avec leur position relative (pour l'affichage sur la fiche de perso) les chaines vides corresponsent a des espacements""" lst = ["Classe", "Niv", "Exp", "", \ "TotalPV", "CA", "BBA", "B_init", "", \ "F", "D", "C", "I", "S", "Ch", "", \ "Ref", "Vig", "Vol"] return lst def listeAttributs(): """renvoie un dictionnaire vide des attributs d'une creature ou joueur""" dico = {} ctrl = listeControle() for attr in ctrl: dico[attr] = ctrl[attr].defaut return dico def listeControle(): """retourne la liste de controle des attributs de la creature ou joueur""" dico = {\ "F": Attribut("Force", "F", "entier", 0, None, 10, True, False, False), \ "D": Attribut("Dexterité", "D", "entier", 0, None, 10, True, False, False), \ "C": Attribut("Constitution", "C", "entier", 0, None, 10, True, False, False), \ "I": Attribut("Intelligence", "I", "entier", 0, None, 10, True, False, False), \ "S": Attribut("Sagesse", "S", "entier", 0, None, 10, True, False, False), \ "Ch": Attribut("Charisme", "Ch", "entier", 0, None, 10, True, False, False), \ "Ref": Attribut("Réflexes", "Ref", "entier", None, None, 0, True, False, False), \ "Vig": Attribut("Vigueur", "Vig", "entier", None, None, 0, True, False, False), \ "Vol": Attribut("Volonté", "Vol", "entier", None, None, 0, True, False, False), \ "TotalPV": Attribut("Points de vie\ntotaux", "TotalPV", "entier", None, None, 0, True, False, False), \ "PV": Attribut("Points de vie", "PV", "entier", None, None, 0, True, True, False), \ "CA": Attribut("Capacité d'armure", "CA", "entier", 0, None, 10, True, False, False), \ "BBA": Attribut("Bonus de base\nà l'attaque", "BBA", "entier", 0, None, 0, True, False, False), \ "B_init": Attribut("Bonus d'initiative", "B_init", "entier", None, None, 0, True, False, False), \ "init": Attribut("Initiative", "B_init", "entier", None, None, 10, True, True, False), \ "Classe": Attribut("Classe", "Classe", "texte", None, None, "", False, False, False), \ "Niv": Attribut("Niveau", "Niv", "entier", 0, None, 0, True, False, False), \ "Exp": Attribut("Expérience", "Exp", "entier", 0, None, 0, False, False, True) } return dico def attribut(nomCourt): """renvoie l'attribut demande""" dico = listeControle() if nomCourt in dico: retour = dico[nomCourt] else: retour = None return retour def ordreAttributsAttaques(): """renvoie la liste des attributs avec leur position relative""" lst = ["BA", "Dgts", "Crit.", "DD", "svg"] return lst def listeAttributsAttaques(): """renvoie un dictionnaire vide des attributs d'une creature ou joueur""" dico = {} ctrl = listeControleAttaques() for attr in ctrl: dico[attr] = ctrl[attr].defaut return dico def listeControleAttaques(): """retourne la liste caracteristiques des attaques de la creature / joueur""" dico = {\ "BA": Attribut("Bonus d'attaque", "BA", "entier", None, None, 0, True, False, False), \ "Dgts": Attribut("Degats", "Dgts", "texte", None, None, "", True, False, False), \ "Crit.": Attribut("Critique", "Crit.", "texte", None, None, "20/x2", True, False, False), \ "DD": Attribut("DD", "DD", "entier", None, None, 10, True, False, False), \ "svg": Attribut("Type de sauvegarde", "svg", "texte", None, None, "", True, False, False), \ } return dico def attributAttaque(nomCourt): """renvoie l'attribut d'attaque demande""" dico = listeControleAttaques() if nomCourt in dico: retour = dico[nomCourt] else: retour = None return retour class Attribut(): """attribut des pions et personnages""" def __init__(self, nom, nomCourt, typ, mini, maxi, defaut, afficherCombat, combatSeulement, joueursSeulement): """initialisation de l'attribut""" self.nom = nom self.nomCourt = nomCourt self.typ = typ self.mini = mini #tests sur les valeurs pour les nombres, sur les longueurs pour les textes self.maxi = maxi self.defaut = defaut self.afficherCombat = afficherCombat #afficher dans les tables de combat self.combatSeulement = combatSeulement #afficher dans les tables de combat seulement self.joueursSeulement = joueursSeulement #n'afficher que chez les joueurs self.valeur = defaut def controler(self, val): """renvoie la la valeur entrée si celle ci est valide pour cet attribut, None sinon""" if self.typ == "entier": try: retour = long(val) except: retour = None if retour != None: if self.mini != None: if not retour >= self.mini: retour = None if self.maxi != None: if not retour <= self.maxi: retour = None elif self.typ == "booleen": try: retour = bool(val) except: retour = None else: try: retour = str(val) except: retour = None if retour != None: if self.mini != None: if not len(retour) >= self.mini: retour = None if self.maxi != None: if not len(retour) <= self.maxi: retour = None return retour #### autres donnees liees aux regles def valeurDefaut(nom): """renvoie la valeur par defaut demandee""" retour = None dico = {"depMarche": 9, "depNage": 6, "depEscalade": 3, "depVol": 0, "saut": 6} if nom in dico: retour = dico[nom] return retour def nomMonnaie(): """retourne la monnaie par defaut utilisee dans le jeu""" return "po" if __name__ == "__main__": val = "3" dico = listeControleAttaques() print(dico["svg"].controler(val))