cha0smagick's picture
Update app.py
5e4549f verified
raw
history blame
7.55 kB
import random
import streamlit as st
import pandas as pd
# Definici贸n de las caracter铆sticas del personaje
class Personaje:
def __init__(self):
self.nombre = self.generar_nombre()
self.atributos = self.generar_atributos()
self.habilidades = self.generar_habilidades()
self.ventajas = self.generar_ventajas()
self.tradicion = self.elegir_tradicion()
self.background = self.generar_background()
self.descripcion = self.generar_descripcion()
self.vida = random.randint(5, 10) # Vida inicial
self.puntos_de_fuerza = random.randint(0, 5)
self.puntos_de_energia = random.randint(0, 5)
self.maldiciones = self.generar_maldiciones()
self.clase_social = self.generar_clase_social()
def generar_nombre(self):
nombres = ["Artemis", "Eliora", "Julian", "Maeve", "Lysander", "Cassandra", "Dorian", "Thalia"]
apellidos = ["Ravenwood", "Blackthorne", "Shadowend", "Stormwatch", "Frostbite", "Starfire"]
return f"{random.choice(nombres)} {random.choice(apellidos)}"
def generar_atributos(self):
return {
"Fuerza": random.randint(1, 5),
"Destreza": random.randint(1, 5),
"Constituci贸n": random.randint(1, 5),
"Inteligencia": random.randint(1, 5),
"Percepci贸n": random.randint(1, 5),
"Carisma": random.randint(1, 5),
}
def generar_habilidades(self):
habilidades_base = [
"Artes Marciales", "Fuego", "Persuasi贸n", "Investigaci贸n", "Sigilo", "Tecnolog铆a",
"Ciencia", "Medicina", "Misticismo", "Conocimiento Oculto", "Ocultismo", "M煤sica",
"Supervivencia", "Inform谩tica"
]
habilidades_seleccionadas = random.sample(habilidades_base, 5)
return {habilidad: random.randint(1, 5) for habilidad in habilidades_seleccionadas}
def generar_ventajas(self):
ventajas_base = ["Aliados", "Contatos", "Rituales", "Poderes", "Influencias"]
return random.sample(ventajas_base, 2)
def elegir_tradicion(self):
tradiciones = [
"Los Verbena", "Los Celestial", "Los Akashicos",
"Los Herm茅ticos", "Los M铆sticos de la Huida", "Los Thig"
]
return random.choice(tradiciones)
def generar_background(self):
entornos = [
"una gran ciudad donde los secretos son moneda corriente",
"una peque帽a aldea aislada rodeada de mitos antiguos",
"un barrio marginal donde la supervivencia es el pan de cada d铆a",
"una familia de acad茅micos que le ense帽aron a cuestionar la realidad",
"un monasterio oculto que le ense帽贸 a equilibrar su mente y esp铆ritu"
]
eventos = [
"descubri贸 un libro antiguo que le revel贸 los secretos de la magia",
"perdi贸 a un ser querido en circunstancias misteriosas, lo que lo llev贸 a la magia",
"fue testigo de un evento sobrenatural que le cambi贸 la vida",
"encontr贸 un amuleto que despert贸 sus habilidades ocultas",
"fue parte de un culto que buscaba poder a trav茅s de rituales oscuros"
]
motivaciones = [
"buscar venganza por una injusticia personal",
"descubrir la verdad sobre su familia y su legado",
"proteger a los d茅biles de las fuerzas oscuras que acechan",
"comprender los secretos del universo y trascender la realidad",
"ayudar a otros a encontrar su propio camino en la magia"
]
traumas = [
"fue testigo de la traici贸n de alguien en quien confiaba",
"sobrevivi贸 a una experiencia cercana a la muerte que lo marc贸 para siempre",
"fue v铆ctima de un ritual oscuro que dej贸 una huella permanente en su alma",
"creci贸 en un ambiente hostil que lo forz贸 a luchar por su supervivencia",
"perdi贸 su hogar debido a un desastre sobrenatural"
]
aspiraciones = [
"convertirse en un maestro de la magia",
"proteger a sus seres queridos a toda costa",
"desenredar los misterios de su propia existencia",
"afrontar sus miedos y superar sus debilidades",
"descubrir un antiguo poder que cambiar谩 el mundo"
]
return (f"Creci贸 en {random.choice(entornos)}, "
f"y {random.choice(eventos)}. "
f"Motivado por {random.choice(motivaciones)}, "
f"su trauma m谩s profundo es que {random.choice(traumas)}, "
f"y su mayor aspiraci贸n es {random.choice(aspiraciones)}.")
def generar_descripcion(self):
descripciones = [
"Un buscador de la verdad, siempre con una pregunta en la mente.",
"Un guerrero de las sombras, protegiendo el mundo de fuerzas oscuras.",
"Un erudito que atesora conocimientos prohibidos y secretos antiguos.",
"Un l铆der carism谩tico, capaz de unir a las personas bajo una causa com煤n.",
"Un viajero del tiempo, buscando respuestas en el pasado y futuro."
]
return random.choice(descripciones)
def generar_maldiciones(self):
maldiciones = [
"Desconfianza permanente hacia los dem谩s.",
"Visiones aterradoras que interrumpen su paz.",
"Una incapacidad para dejar el pasado atr谩s.",
"Una conexi贸n inquebrantable con el mundo espiritual.",
"Un ciclo de mala suerte que parece perseguirle."
]
return random.choice(maldiciones)
def generar_clase_social(self):
clases = [
"Nobleza", "Clase Media", "Clase Baja", "Intelligentsia", "Marginado"
]
return random.choice(clases)
# Generador de personaje
def generar_personaje():
personaje = Personaje()
return personaje
# Interfaz de usuario de Streamlit
def main():
st.title("Generador de Personajes: Mago - La Ascensi贸n")
st.write("Haz clic en el bot贸n para generar un personaje aleatorio.")
if st.button("Generar Personaje"):
personaje = generar_personaje()
# Crear un DataFrame para mostrar los atributos en formato de cuadr铆cula
data = {
"Caracter铆sticas": [
"Nombre", "Tradici贸n", "Clase Social", "Vida", "Descripci贸n", "Puntos de Fuerza",
"Puntos de Energ铆a", "Maldici贸n"
],
"Detalles": [
personaje.nombre, personaje.tradicion, personaje.clase_social, personaje.vida,
personaje.descripcion, personaje.puntos_de_fuerza, personaje.puntos_de_energia,
personaje.maldiciones
]
}
df = pd.DataFrame(data)
st.subheader("Hoja de Personaje")
st.write(df)
# Mostrar Atributos
st.write("### Atributos:")
atributos_df = pd.DataFrame(personaje.atributos.items(), columns=["Atributo", "Valor"])
st.write(atributos_df)
# Mostrar Habilidades
st.write("### Habilidades:")
habilidades_df = pd.DataFrame(personaje.habilidades.items(), columns=["Habilidad", "Valor"])
st.write(habilidades_df)
# Mostrar Ventajas
st.write("### Ventajas:")
st.write(", ".join(personaje.ventajas))
# Mostrar Background
st.write("### Trasfondo:")
st.write(personaje.background)
if __name__ == "__main__":
main()