-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
131 lines (106 loc) · 4.71 KB
/
Copy pathapp.py
File metadata and controls
131 lines (106 loc) · 4.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import streamlit as st
import random
from PIL import Image
from lists import locais_dragoes, detalhes_dragoes, detalhes_personagens
# Configuração da Página
st.set_page_config(page_title="Ingeborger RPG", layout="wide")
# Sidebar para Navegação
st.sidebar.title("Menu de Navegação")
pagina = st.sidebar.radio("Ir para:", ["Teste de Habilidade", "Gerador de Encontros", "Dragonário", "Fichas"])
# --- PÁGINA: TESTE DE HABILIDADE ---
if pagina == "Teste de Habilidade":
st.header("🎲 Teste de Habilidade")
char_sel = st.selectbox("Selecione o Personagem", list(detalhes_personagens.keys()))
c = detalhes_personagens[char_sel]
attrs = c.get("Atributos")
col1, col2 = st.columns(2)
with col1:
forca = st.number_input("Força", value = attrs.get("FOR", 0))
resistencia = st.number_input("Resistência", value= attrs.get("RES", 0))
destreza = st.number_input("Destreza", value= attrs.get("DES", 0))
with col2:
intel = st.number_input("Inteligência", value=attrs.get("INT", 0))
percepcao = st.number_input("Percepção", value=attrs.get("PER", 0))
comando = st.number_input("Comando", value=attrs.get("COM", 0))
st.divider()
atr_map = {"Força": forca, "Resistência": resistencia, "Destreza": destreza,
"Inteligência": intel, "Percepção": percepcao, "Comando": comando}
sel_atr = st.selectbox("Atributo do Teste", list(atr_map.keys()))
dificuldade = st.number_input("Dificuldade (DC)", value=10)
if st.button("Rolar Dados"):
rolagem = random.randint(1, 20)
total = rolagem + atr_map[sel_atr]
if total >= dificuldade:
st.success(f"Sucesso! Rolagem: {rolagem} (+{atr_map[sel_atr]}) = {total} vs DC {dificuldade}")
else:
st.error(f"Falha! Rolagem: {rolagem} (+{atr_map[sel_atr]}) = {total} vs DC {dificuldade}")
# --- PÁGINA: GERADOR DE ENCONTROS ---
elif pagina == "Gerador de Encontros":
st.header("🐉 Gerador de Encontros")
local = st.selectbox("Selecione o Local", list(locais_dragoes.keys()))
if st.button("Gerar Dragão"):
dragao = random.choice(locais_dragoes[local])
st.subheader(f"Um {dragao} apareceu!")
try:
img = Image.open(f"img/{dragao}.png")
st.image(img, width=400)
except:
st.warning("Imagem não encontrada na pasta /img")
# --- PÁGINA: DRAGONÁRIO ---
elif pagina == "Dragonário":
st.header("📖 Dragonário")
drag_sel = st.selectbox("Consultar Dragão", list(detalhes_dragoes.keys()))
d = detalhes_dragoes[drag_sel]
col1, col2 = st.columns([1, 2])
with col1:
try:
st.image(f"img/{drag_sel}.png")
except:
st.info("Sem imagem")
with col2:
st.subheader(drag_sel)
st.write(f"**Classificação:** {d['Classificação']}")
st.write(f"**Habitat:** {d['Habitat']}")
st.write(f"**Poder:** {d['Poder']}")
st.write(f"**Alimentação:** {d['Alimentação']}")
# --- PÁGINA: FICHAS ---
elif pagina == "Fichas":
st.header("🛡️ Fichas de Personagens")
char_sel = st.selectbox("Selecione o Personagem", list(detalhes_personagens.keys()))
c = detalhes_personagens[char_sel]
col1, col2 = st.columns([1, 2])
with col1:
try:
st.image(c["Foto"], use_container_width=True)
except:
st.error("Foto não encontrada")
with col2:
st.subheader(char_sel)
st.write(f"**Esquadrão:** {c['Esquadrão']}")
st.write(f"**Patente:** {c['Patente']}")
st.markdown("### 📊 Atributos Base")
# Usando .get() para evitar erros e debugando as chaves
attrs = c.get("Atributos")
if attrs:
m1, m2, m3 = st.columns(3)
m4, m5, m6 = st.columns(3)
# Garantindo que as chaves existam dentro de 'Atributos'
m1.metric("FOR", attrs.get("FOR", 0))
m2.metric("RES", attrs.get("RES", 0))
m3.metric("INT", attrs.get("INT", 0))
m4.metric("DES", attrs.get("DES", 0))
m5.metric("PER", attrs.get("PER", 0))
m6.metric("COM", attrs.get("COM", 0))
else:
# Debug: Isso vai mostrar o que o Python REALMENTE está vendo dentro do dicionário
st.error(f"Erro: Chave 'Atributos' não encontrada para {char_sel}.")
st.write("Chaves disponíveis neste personagem:", list(c.keys()))
st.divider()
st.subheader("Dragões do Personagem")
d_cols = st.columns(3)
for i, d in enumerate(c["Dragões"]):
with d_cols[i]:
try:
st.image(d["Imagem"], caption=d["Nome"], width=150)
except:
st.write(f"{d['Nome']}")