|
import random |
|
import streamlit as st |
|
import pandas as pd |
|
|
|
|
|
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) |
|
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) |
|
|
|
|
|
def generar_personaje(): |
|
personaje = Personaje() |
|
return personaje |
|
|
|
|
|
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() |
|
|
|
|
|
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) |
|
|
|
|
|
st.write("### Atributos:") |
|
atributos_df = pd.DataFrame(personaje.atributos.items(), columns=["Atributo", "Valor"]) |
|
st.write(atributos_df) |
|
|
|
|
|
st.write("### Habilidades:") |
|
habilidades_df = pd.DataFrame(personaje.habilidades.items(), columns=["Habilidad", "Valor"]) |
|
st.write(habilidades_df) |
|
|
|
|
|
st.write("### Ventajas:") |
|
st.write(", ".join(personaje.ventajas)) |
|
|
|
|
|
st.write("### Trasfondo:") |
|
st.write(personaje.background) |
|
|
|
if __name__ == "__main__": |
|
main() |