cha0smagick commited on
Commit
102dee4
1 Parent(s): 5e4549f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +190 -178
app.py CHANGED
@@ -1,179 +1,191 @@
1
- import random
2
  import streamlit as st
3
- import pandas as pd
4
-
5
- # Definición de las características del personaje
6
- class Personaje:
7
- def __init__(self):
8
- self.nombre = self.generar_nombre()
9
- self.atributos = self.generar_atributos()
10
- self.habilidades = self.generar_habilidades()
11
- self.ventajas = self.generar_ventajas()
12
- self.tradicion = self.elegir_tradicion()
13
- self.background = self.generar_background()
14
- self.descripcion = self.generar_descripcion()
15
- self.vida = random.randint(5, 10) # Vida inicial
16
- self.puntos_de_fuerza = random.randint(0, 5)
17
- self.puntos_de_energia = random.randint(0, 5)
18
- self.maldiciones = self.generar_maldiciones()
19
- self.clase_social = self.generar_clase_social()
20
-
21
- def generar_nombre(self):
22
- nombres = ["Artemis", "Eliora", "Julian", "Maeve", "Lysander", "Cassandra", "Dorian", "Thalia"]
23
- apellidos = ["Ravenwood", "Blackthorne", "Shadowend", "Stormwatch", "Frostbite", "Starfire"]
24
- return f"{random.choice(nombres)} {random.choice(apellidos)}"
25
-
26
- def generar_atributos(self):
27
- return {
28
- "Fuerza": random.randint(1, 5),
29
- "Destreza": random.randint(1, 5),
30
- "Constitución": random.randint(1, 5),
31
- "Inteligencia": random.randint(1, 5),
32
- "Percepción": random.randint(1, 5),
33
- "Carisma": random.randint(1, 5),
34
- }
35
-
36
- def generar_habilidades(self):
37
- habilidades_base = [
38
- "Artes Marciales", "Fuego", "Persuasión", "Investigación", "Sigilo", "Tecnología",
39
- "Ciencia", "Medicina", "Misticismo", "Conocimiento Oculto", "Ocultismo", "Música",
40
- "Supervivencia", "Informática"
41
- ]
42
- habilidades_seleccionadas = random.sample(habilidades_base, 5)
43
- return {habilidad: random.randint(1, 5) for habilidad in habilidades_seleccionadas}
44
-
45
- def generar_ventajas(self):
46
- ventajas_base = ["Aliados", "Contatos", "Rituales", "Poderes", "Influencias"]
47
- return random.sample(ventajas_base, 2)
48
-
49
- def elegir_tradicion(self):
50
- tradiciones = [
51
- "Los Verbena", "Los Celestial", "Los Akashicos",
52
- "Los Herméticos", "Los Místicos de la Huida", "Los Thig"
53
- ]
54
- return random.choice(tradiciones)
55
-
56
- def generar_background(self):
57
- entornos = [
58
- "una gran ciudad donde los secretos son moneda corriente",
59
- "una pequeña aldea aislada rodeada de mitos antiguos",
60
- "un barrio marginal donde la supervivencia es el pan de cada día",
61
- "una familia de académicos que le enseñaron a cuestionar la realidad",
62
- "un monasterio oculto que le enseñó a equilibrar su mente y espíritu"
63
- ]
64
-
65
- eventos = [
66
- "descubrió un libro antiguo que le reveló los secretos de la magia",
67
- "perdió a un ser querido en circunstancias misteriosas, lo que lo llevó a la magia",
68
- "fue testigo de un evento sobrenatural que le cambió la vida",
69
- "encontró un amuleto que despertó sus habilidades ocultas",
70
- "fue parte de un culto que buscaba poder a través de rituales oscuros"
71
- ]
72
-
73
- motivaciones = [
74
- "buscar venganza por una injusticia personal",
75
- "descubrir la verdad sobre su familia y su legado",
76
- "proteger a los débiles de las fuerzas oscuras que acechan",
77
- "comprender los secretos del universo y trascender la realidad",
78
- "ayudar a otros a encontrar su propio camino en la magia"
79
- ]
80
-
81
- traumas = [
82
- "fue testigo de la traición de alguien en quien confiaba",
83
- "sobrevivió a una experiencia cercana a la muerte que lo marcó para siempre",
84
- "fue víctima de un ritual oscuro que dejó una huella permanente en su alma",
85
- "creció en un ambiente hostil que lo forzó a luchar por su supervivencia",
86
- "perdió su hogar debido a un desastre sobrenatural"
87
- ]
88
-
89
- aspiraciones = [
90
- "convertirse en un maestro de la magia",
91
- "proteger a sus seres queridos a toda costa",
92
- "desenredar los misterios de su propia existencia",
93
- "afrontar sus miedos y superar sus debilidades",
94
- "descubrir un antiguo poder que cambiará el mundo"
95
- ]
96
-
97
- return (f"Creció en {random.choice(entornos)}, "
98
- f"y {random.choice(eventos)}. "
99
- f"Motivado por {random.choice(motivaciones)}, "
100
- f"su trauma más profundo es que {random.choice(traumas)}, "
101
- f"y su mayor aspiración es {random.choice(aspiraciones)}.")
102
-
103
- def generar_descripcion(self):
104
- descripciones = [
105
- "Un buscador de la verdad, siempre con una pregunta en la mente.",
106
- "Un guerrero de las sombras, protegiendo el mundo de fuerzas oscuras.",
107
- "Un erudito que atesora conocimientos prohibidos y secretos antiguos.",
108
- "Un líder carismático, capaz de unir a las personas bajo una causa común.",
109
- "Un viajero del tiempo, buscando respuestas en el pasado y futuro."
110
- ]
111
- return random.choice(descripciones)
112
-
113
- def generar_maldiciones(self):
114
- maldiciones = [
115
- "Desconfianza permanente hacia los demás.",
116
- "Visiones aterradoras que interrumpen su paz.",
117
- "Una incapacidad para dejar el pasado atrás.",
118
- "Una conexión inquebrantable con el mundo espiritual.",
119
- "Un ciclo de mala suerte que parece perseguirle."
120
- ]
121
- return random.choice(maldiciones)
122
-
123
- def generar_clase_social(self):
124
- clases = [
125
- "Nobleza", "Clase Media", "Clase Baja", "Intelligentsia", "Marginado"
126
- ]
127
- return random.choice(clases)
128
-
129
- # Generador de personaje
130
- def generar_personaje():
131
- personaje = Personaje()
132
- return personaje
133
-
134
- # Interfaz de usuario de Streamlit
135
- def main():
136
- st.title("Generador de Personajes: Mago - La Ascensión")
137
- st.write("Haz clic en el botón para generar un personaje aleatorio.")
138
-
139
- if st.button("Generar Personaje"):
140
- personaje = generar_personaje()
141
-
142
- # Crear un DataFrame para mostrar los atributos en formato de cuadrícula
143
- data = {
144
- "Características": [
145
- "Nombre", "Tradición", "Clase Social", "Vida", "Descripción", "Puntos de Fuerza",
146
- "Puntos de Energía", "Maldición"
147
- ],
148
- "Detalles": [
149
- personaje.nombre, personaje.tradicion, personaje.clase_social, personaje.vida,
150
- personaje.descripcion, personaje.puntos_de_fuerza, personaje.puntos_de_energia,
151
- personaje.maldiciones
152
- ]
153
- }
154
-
155
- df = pd.DataFrame(data)
156
-
157
- st.subheader("Hoja de Personaje")
158
- st.write(df)
159
-
160
- # Mostrar Atributos
161
- st.write("### Atributos:")
162
- atributos_df = pd.DataFrame(personaje.atributos.items(), columns=["Atributo", "Valor"])
163
- st.write(atributos_df)
164
-
165
- # Mostrar Habilidades
166
- st.write("### Habilidades:")
167
- habilidades_df = pd.DataFrame(personaje.habilidades.items(), columns=["Habilidad", "Valor"])
168
- st.write(habilidades_df)
169
-
170
- # Mostrar Ventajas
171
- st.write("### Ventajas:")
172
- st.write(", ".join(personaje.ventajas))
173
-
174
- # Mostrar Background
175
- st.write("### Trasfondo:")
176
- st.write(personaje.background)
177
-
178
- if __name__ == "__main__":
179
- main()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
+ from PIL import Image
3
+
4
+ # Define the character sheet image
5
+ image = Image.open("mage_character_sheet.png")
6
+
7
+ # Set the page title
8
+ st.set_page_config(
9
+ page_title="Mage: The Ascension Character Sheet",
10
+ layout="wide",
11
+ initial_sidebar_state="expanded"
12
+ )
13
+
14
+ # Create the title
15
+ st.title("Mage: The Ascension Character Sheet")
16
+
17
+ # Display the image
18
+ st.image(image)
19
+
20
+ # Create input fields for character information
21
+ with st.form("character_info"):
22
+ st.subheader("Character Information")
23
+ name = st.text_input("Name:")
24
+ player = st.text_input("Player:")
25
+ chronicle = st.text_input("Chronicle:")
26
+ nature = st.text_input("Nature:")
27
+ demeanor = st.text_input("Demeanor:")
28
+ essence = st.text_input("Essence:")
29
+ affiliation = st.text_input("Affiliation:")
30
+ sect = st.text_input("Sect:")
31
+ concept = st.text_input("Concept:")
32
+
33
+ # Create a submit button
34
+ submit = st.form_submit_button("Submit")
35
+
36
+ # Create input fields for attributes
37
+ with st.form("attributes"):
38
+ st.subheader("Attributes")
39
+ st.columns(3)
40
+ with st.column(1):
41
+ st.subheader("Physical")
42
+ strength = st.slider("Strength", 0, 5, 0, key="strength")
43
+ dexterity = st.slider("Dexterity", 0, 5, 0, key="dexterity")
44
+ stamina = st.slider("Stamina", 0, 5, 0, key="stamina")
45
+ with st.column(1):
46
+ st.subheader("Social")
47
+ charisma = st.slider("Charisma", 0, 5, 0, key="charisma")
48
+ manipulation = st.slider("Manipulation", 0, 5, 0, key="manipulation")
49
+ appearance = st.slider("Appearance", 0, 5, 0, key="appearance")
50
+ with st.column(1):
51
+ st.subheader("Mental")
52
+ perception = st.slider("Perception", 0, 5, 0, key="perception")
53
+ intelligence = st.slider("Intelligence", 0, 5, 0, key="intelligence")
54
+ wits = st.slider("Wits", 0, 5, 0, key="wits")
55
+
56
+ # Create a submit button
57
+ submit = st.form_submit_button("Submit")
58
+
59
+ # Create input fields for abilities
60
+ with st.form("abilities"):
61
+ st.subheader("Abilities")
62
+ st.columns(3)
63
+ with st.column(1):
64
+ st.subheader("Talents")
65
+ alertness = st.slider("Alertness", 0, 5, 0, key="alertness")
66
+ art = st.slider("Art", 0, 5, 0, key="art")
67
+ athletics = st.slider("Athletics", 0, 5, 0, key="athletics")
68
+ awareness = st.slider("Awareness", 0, 5, 0, key="awareness")
69
+ brawl = st.slider("Brawl", 0, 5, 0, key="brawl")
70
+ empathy = st.slider("Empathy", 0, 5, 0, key="empathy")
71
+ expression = st.slider("Expression", 0, 5, 0, key="expression")
72
+ intimidation = st.slider("Intimidation", 0, 5, 0, key="intimidation")
73
+ leadership = st.slider("Leadership", 0, 5, 0, key="leadership")
74
+ streetwise = st.slider("Streetwise", 0, 5, 0, key="streetwise")
75
+ subterfuge = st.slider("Subterfuge", 0, 5, 0, key="subterfuge")
76
+ with st.column(1):
77
+ st.subheader("Skills")
78
+ crafts = st.slider("Crafts", 0, 5, 0, key="crafts")
79
+ drive = st.slider("Drive", 0, 5, 0, key="drive")
80
+ etiquette = st.slider("Etiquette", 0, 5, 0, key="etiquette")
81
+ firearms = st.slider("Firearms", 0, 5, 0, key="firearms")
82
+ martial_arts = st.slider("Martial Arts", 0, 5, 0, key="martial_arts")
83
+ meditation = st.slider("Meditation", 0, 5, 0, key="meditation")
84
+ melee = st.slider("Melee", 0, 5, 0, key="melee")
85
+ research = st.slider("Research", 0, 5, 0, key="research")
86
+ stealth = st.slider("Stealth", 0, 5, 0, key="stealth")
87
+ survival = st.slider("Survival", 0, 5, 0, key="survival")
88
+ technology = st.slider("Technology", 0, 5, 0, key="technology")
89
+ with st.column(1):
90
+ st.subheader("Knowledges")
91
+ academics = st.slider("Academics", 0, 5, 0, key="academics")
92
+ computer = st.slider("Computer", 0, 5, 0, key="computer")
93
+ cosmology = st.slider("Cosmology", 0, 5, 0, key="cosmology")
94
+ enigmas = st.slider("Enigmas", 0, 5, 0, key="enigmas")
95
+ esoterica = st.slider("Esoterica", 0, 5, 0, key="esoterica")
96
+ investigation = st.slider("Investigation", 0, 5, 0, key="investigation")
97
+ law = st.slider("Law", 0, 5, 0, key="law")
98
+ medicine = st.slider("Medicine", 0, 5, 0, key="medicine")
99
+ occult = st.slider("Occult", 0, 5, 0, key="occult")
100
+ politics = st.slider("Politics", 0, 5, 0, key="politics")
101
+ science = st.slider("Science", 0, 5, 0, key="science")
102
+
103
+ # Create a submit button
104
+ submit = st.form_submit_button("Submit")
105
+
106
+ # Create input fields for spheres
107
+ with st.form("spheres"):
108
+ st.subheader("Spheres")
109
+ st.columns(2)
110
+ with st.column(1):
111
+ correspondence = st.slider("Correspondence", 0, 5, 0, key="correspondence")
112
+ entropy = st.slider("Entropy", 0, 5, 0, key="entropy")
113
+ forces = st.slider("Forces", 0, 5, 0, key="forces")
114
+ with st.column(1):
115
+ life = st.slider("Life", 0, 5, 0, key="life")
116
+ matter = st.slider("Matter", 0, 5, 0, key="matter")
117
+ mind = st.slider("Mind", 0, 5, 0, key="mind")
118
+ prime = st.slider("Prime", 0, 5, 0, key="prime")
119
+ spirit = st.slider("Spirit", 0, 5, 0, key="spirit")
120
+ time = st.slider("Time", 0, 5, 0, key="time")
121
+
122
+ # Create a submit button
123
+ submit = st.form_submit_button("Submit")
124
+
125
+ # Create input fields for advantages
126
+ with st.form("advantages"):
127
+ st.subheader("Advantages")
128
+ st.columns(2)
129
+ with st.column(1):
130
+ st.subheader("Arete")
131
+ arete = st.slider("Arete", 0, 5, 0, key="arete")
132
+ with st.column(1):
133
+ st.subheader("Health")
134
+ bruised = st.slider("Bruised", 0, 5, 0, key="bruised")
135
+ hurt = st.slider("Hurt", 0, 5, 0, key="hurt")
136
+ injured = st.slider("Injured", 0, 5, 0, key="injured")
137
+ wounded = st.slider("Wounded", 0, 5, 0, key="wounded")
138
+ mauled = st.slider("Mauled", 0, 5, 0, key="mauled")
139
+ crippled = st.slider("Crippled", 0, 5, 0, key="crippled")
140
+ incapacitated = st.slider("Incapacitated", 0, 5, 0, key="incapacitated")
141
+
142
+ # Create a submit button
143
+ submit = st.form_submit_button("Submit")
144
+
145
+ # Create input fields for willpower
146
+ with st.form("willpower"):
147
+ st.subheader("Willpower")
148
+ willpower = st.slider("Willpower", 0, 5, 0, key="willpower")
149
+
150
+ # Create a submit button
151
+ submit = st.form_submit_button("Submit")
152
+
153
+ # Create input fields for backgrounds
154
+ with st.form("backgrounds"):
155
+ st.subheader("Backgrounds")
156
+ backgrounds = st.text_area("Backgrounds", height=100)
157
+
158
+ # Create a submit button
159
+ submit = st.form_submit_button("Submit")
160
+
161
+ # Create input fields for other traits
162
+ with st.form("other_traits"):
163
+ st.subheader("Other Traits")
164
+ other_traits = st.text_area("Other Traits", height=100)
165
+
166
+ # Create a submit button
167
+ submit = st.form_submit_button("Submit")
168
+
169
+ # Create input fields for experience
170
+ with st.form("experience"):
171
+ st.subheader("Experience")
172
+ experience = st.text_area("Experience", height=100)
173
+
174
+ # Create a submit button
175
+ submit = st.form_submit_button("Submit")
176
+
177
+ # Create input fields for quintessence
178
+ with st.form("quintessence"):
179
+ st.subheader("Quintessence")
180
+ quintessence = st.slider("Quintessence", 0, 5, 0, key="quintessence")
181
+
182
+ # Create a submit button
183
+ submit = st.form_submit_button("Submit")
184
+
185
+ # Create input fields for paradox
186
+ with st.form("paradox"):
187
+ st.subheader("Paradox")
188
+ paradox = st.slider("Paradox", 0, 5, 0, key="paradox")
189
+
190
+ # Create a submit button
191
+ submit = st.form_submit_button("Submit")