class Personagem:
def __init__( self, nome, origem, poderes, conflitos_internos) :
self.nome = nome
self.origem = origem
self.poderes = poderes
self.conflitos_internos = conflitos_internos
self.aliados = [ ]
self.inimigos = [ ]
def adicionar_aliado( self, aliado) :
self.aliados .append ( aliado)
def adicionar_inimigo( self, inimigo) :
self.inimigos .append ( inimigo)
def descrever( self) :
return ( f"{self.nome}, de origem {self.origem}, "
f"possui os poderes de {', '.join(self.poderes)} e "
f"enfrenta conflitos como {', '.join(self.conflitos_internos)}." )
class Antagonista( Personagem) :
def __init__( self, nome, origem, motivos) :
super( ) .__init__( nome, origem, [ ] , [ ] )
self.motivos = motivos
def descrever( self) :
return f"{self.nome} é o antagonista que busca {self.motivos}."
class Historia:
def __init__( self, titulo) :
self.titulo = titulo
self.personagens = [ ]
self.eventos = [ ]
self.temas = [ ]
def adicionar_personagem( self, personagem) :
self.personagens .append ( personagem)
def adicionar_evento( self, evento) :
self.eventos .append ( evento)
def adicionar_tema( self, tema) :
self.temas .append ( tema)
def descrever( self) :
return ( f"Título: {self.titulo}\n "
f"Personagens: {[p.nome for p in self.personagens]}\n "
f"Eventos: {', '.join(self.eventos)}\n "
f"Temas: {', '.join(self.temas)}" )
# Exemplo de uso
if __name__ == "__main__" :
protagonista = Personagem(
nome= "Elaria" ,
origem= "Reino dos Elfos" ,
poderes= [ "comunicação com criaturas mágicas" , "influência no crescimento das plantas" ] ,
conflitos_internos= [ "luta contra sua identidade" , "dilemas morais" ]
)
mentor = Personagem(
nome= "Gandor" ,
origem= "Terra dos Sábios" ,
poderes= [ "sabedoria antiga" ] ,
conflitos_internos= [ ]
)
antagonista = Antagonista(
nome= "Malakar" ,
origem= "Reino Sombrio" ,
motivos= "destruir a linhagem de Elaria"
)
historia = Historia( titulo= "A Herança das Fadas" )
historia.adicionar_personagem ( protagonista)
historia.adicionar_personagem ( mentor)
historia.adicionar_personagem ( antagonista)
historia.adicionar_evento ( "Elaria descobre sua verdadeira origem." )
historia.adicionar_tema ( "A luta entre luz e escuridão" )
print( historia.descrever ( ) )
Y2xhc3MgUGVyc29uYWdlbToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub21lLCBvcmlnZW0sIHBvZGVyZXMsIGNvbmZsaXRvc19pbnRlcm5vcyk6CiAgICAgICAgc2VsZi5ub21lID0gbm9tZQogICAgICAgIHNlbGYub3JpZ2VtID0gb3JpZ2VtCiAgICAgICAgc2VsZi5wb2RlcmVzID0gcG9kZXJlcwogICAgICAgIHNlbGYuY29uZmxpdG9zX2ludGVybm9zID0gY29uZmxpdG9zX2ludGVybm9zCiAgICAgICAgc2VsZi5hbGlhZG9zID0gW10KICAgICAgICBzZWxmLmluaW1pZ29zID0gW10KCiAgICBkZWYgYWRpY2lvbmFyX2FsaWFkbyhzZWxmLCBhbGlhZG8pOgogICAgICAgIHNlbGYuYWxpYWRvcy5hcHBlbmQoYWxpYWRvKQoKICAgIGRlZiBhZGljaW9uYXJfaW5pbWlnbyhzZWxmLCBpbmltaWdvKToKICAgICAgICBzZWxmLmluaW1pZ29zLmFwcGVuZChpbmltaWdvKQoKICAgIGRlZiBkZXNjcmV2ZXIoc2VsZik6CiAgICAgICAgcmV0dXJuIChmIntzZWxmLm5vbWV9LCBkZSBvcmlnZW0ge3NlbGYub3JpZ2VtfSwgIgogICAgICAgICAgICAgICAgZiJwb3NzdWkgb3MgcG9kZXJlcyBkZSB7JywgJy5qb2luKHNlbGYucG9kZXJlcyl9IGUgIgogICAgICAgICAgICAgICAgZiJlbmZyZW50YSBjb25mbGl0b3MgY29tbyB7JywgJy5qb2luKHNlbGYuY29uZmxpdG9zX2ludGVybm9zKX0uIikKCgpjbGFzcyBBbnRhZ29uaXN0YShQZXJzb25hZ2VtKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub21lLCBvcmlnZW0sIG1vdGl2b3MpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18obm9tZSwgb3JpZ2VtLCBbXSwgW10pCiAgICAgICAgc2VsZi5tb3Rpdm9zID0gbW90aXZvcwoKICAgIGRlZiBkZXNjcmV2ZXIoc2VsZik6CiAgICAgICAgcmV0dXJuIGYie3NlbGYubm9tZX0gw6kgbyBhbnRhZ29uaXN0YSBxdWUgYnVzY2Ege3NlbGYubW90aXZvc30uIgoKCmNsYXNzIEhpc3RvcmlhOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpdHVsbyk6CiAgICAgICAgc2VsZi50aXR1bG8gPSB0aXR1bG8KICAgICAgICBzZWxmLnBlcnNvbmFnZW5zID0gW10KICAgICAgICBzZWxmLmV2ZW50b3MgPSBbXQogICAgICAgIHNlbGYudGVtYXMgPSBbXQoKICAgIGRlZiBhZGljaW9uYXJfcGVyc29uYWdlbShzZWxmLCBwZXJzb25hZ2VtKToKICAgICAgICBzZWxmLnBlcnNvbmFnZW5zLmFwcGVuZChwZXJzb25hZ2VtKQoKICAgIGRlZiBhZGljaW9uYXJfZXZlbnRvKHNlbGYsIGV2ZW50byk6CiAgICAgICAgc2VsZi5ldmVudG9zLmFwcGVuZChldmVudG8pCgogICAgZGVmIGFkaWNpb25hcl90ZW1hKHNlbGYsIHRlbWEpOgogICAgICAgIHNlbGYudGVtYXMuYXBwZW5kKHRlbWEpCgogICAgZGVmIGRlc2NyZXZlcihzZWxmKToKICAgICAgICByZXR1cm4gKGYiVMOtdHVsbzoge3NlbGYudGl0dWxvfVxuIgogICAgICAgICAgICAgICAgZiJQZXJzb25hZ2Vuczoge1twLm5vbWUgZm9yIHAgaW4gc2VsZi5wZXJzb25hZ2Vuc119XG4iCiAgICAgICAgICAgICAgICBmIkV2ZW50b3M6IHsnLCAnLmpvaW4oc2VsZi5ldmVudG9zKX1cbiIKICAgICAgICAgICAgICAgIGYiVGVtYXM6IHsnLCAnLmpvaW4oc2VsZi50ZW1hcyl9IikKCgojIEV4ZW1wbG8gZGUgdXNvCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBwcm90YWdvbmlzdGEgPSBQZXJzb25hZ2VtKAogICAgICAgIG5vbWU9IkVsYXJpYSIsCiAgICAgICAgb3JpZ2VtPSJSZWlubyBkb3MgRWxmb3MiLAogICAgICAgIHBvZGVyZXM9WyJjb211bmljYcOnw6NvIGNvbSBjcmlhdHVyYXMgbcOhZ2ljYXMiLCAiaW5mbHXDqm5jaWEgbm8gY3Jlc2NpbWVudG8gZGFzIHBsYW50YXMiXSwKICAgICAgICBjb25mbGl0b3NfaW50ZXJub3M9WyJsdXRhIGNvbnRyYSBzdWEgaWRlbnRpZGFkZSIsICJkaWxlbWFzIG1vcmFpcyJdCiAgICApCgogICAgbWVudG9yID0gUGVyc29uYWdlbSgKICAgICAgICBub21lPSJHYW5kb3IiLAogICAgICAgIG9yaWdlbT0iVGVycmEgZG9zIFPDoWJpb3MiLAogICAgICAgIHBvZGVyZXM9WyJzYWJlZG9yaWEgYW50aWdhIl0sCiAgICAgICAgY29uZmxpdG9zX2ludGVybm9zPVtdCiAgICApCgogICAgYW50YWdvbmlzdGEgPSBBbnRhZ29uaXN0YSgKICAgICAgICBub21lPSJNYWxha2FyIiwKICAgICAgICBvcmlnZW09IlJlaW5vIFNvbWJyaW8iLAogICAgICAgIG1vdGl2b3M9ImRlc3RydWlyIGEgbGluaGFnZW0gZGUgRWxhcmlhIgogICAgKQoKICAgIGhpc3RvcmlhID0gSGlzdG9yaWEodGl0dWxvPSJBIEhlcmFuw6dhIGRhcyBGYWRhcyIpCiAgICBoaXN0b3JpYS5hZGljaW9uYXJfcGVyc29uYWdlbShwcm90YWdvbmlzdGEpCiAgICBoaXN0b3JpYS5hZGljaW9uYXJfcGVyc29uYWdlbShtZW50b3IpCiAgICBoaXN0b3JpYS5hZGljaW9uYXJfcGVyc29uYWdlbShhbnRhZ29uaXN0YSkKICAgIGhpc3RvcmlhLmFkaWNpb25hcl9ldmVudG8oIkVsYXJpYSBkZXNjb2JyZSBzdWEgdmVyZGFkZWlyYSBvcmlnZW0uIikKICAgIGhpc3RvcmlhLmFkaWNpb25hcl90ZW1hKCJBIGx1dGEgZW50cmUgbHV6IGUgZXNjdXJpZMOjbyIpCgogICAgcHJpbnQoaGlzdG9yaWEuZGVzY3JldmVyKCkpCg==