Mundo em Python

Simulador de Dado Mágico

import random
import time
from tkinter import *
from tkinter import messagebox root = Tk()
root.geometry("700x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Simulador de Dado Mágico") titulo = Label(text="Simulador de Dado Mágico",
font=("Arial", 28, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.15, rely=0.05)
texto_sub1 = Label(text="Pergunta:",
font=("Arial", 20, "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.05, rely=0.32)
Pergunta = StringVar()
Pergunta_entrada = Entry(textvariable=Pergunta,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Pergunta_entrada.place(relx=0.25, rely=0.33, relwidth=0.65) respostas = [
"Sim, com toda a certeza!",
"Sem dúvida alguma!",
"Podes confiar nisso.",
"Provavelmente sim.",
"Acho que sim.",
"Melhor não dizer agora...",
"Concentra-te e pergunta novamente.",
"Não posso prever neste momento.",
"Não contes com isso.",
"As minhas fontes dizem que não.",
"Muito improvável.",
"Definitivamente não!"
] palavras_proibidas = [
# Autoagressão e suicídio
"suicidio", "suicídio", "matar-me", "matar me", "morte", "morrer",
"tirar a vida", "ferir-me", "ferir me", "magoar-me", "machucar-me", "autoagredir",
# Drogas e álcool
"droga", "drogas", "álcool", "alcool", "bebida", "bêbado", "embriagar",
"beber vinho", "beber cerveja", "ficar bêbado", "ficar embriagado",
# Crimes e violência
"homicidio", "homicídio", "assassinar", "matar alguém", "cometer crime",
"crime", "roubar", "roubo", "bater em", "agredir", "violência", "violento",
"sequestro", "traficar", "trafico", "tráfico", "terrorismo", "arma", "envenenar",
"fazer mal a", "causar dano", "explodir", "incendiar", "vandalizar"
] def limpar():
resultado_texto.config(text="", bg="#cfe2f3")
Pergunta.set("") def app(event=None):
pergunta = Pergunta.get().lower().strip() if pergunta == "":
resultado_texto.config(text="Por favor, escreve uma pergunta primeiro! 🙃")
return

for palavra in palavras_proibidas:
if palavra in pergunta:
resultado_texto.config(
bg="#ffcccc",
text="Desculpa, não posso responder a esse tipo de pergunta.\n"
"A segurança e o bem-estar são muito importantes.\n"
"Em Portugal, se precisares de apoio emocional,\n "
"contacta o SOS Voz Amiga: 213 544 545 (das 15h às 24h)."
)
return

resultado_texto.config(bg="#cfe2f3", text="A consultar o universo...")
root.update()
time.sleep(2) resposta = random.choice(respostas)
resultado_texto.config(text=f"O Dado Mágico responde:\n\n{resposta}") def sair():
messagebox.showinfo("Adeus...", "O Dado Mágico agradece a tua visita...\n\nAté à próxima viagem pelo destino!")
root.destroy() but1 = Button(text="Mostrar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.5, relwidth=0.25, relheight=0.1) but_limpar = Button(text="Limpar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.4, rely=0.5, relwidth=0.25, relheight=0.1) but_sair = Button(text="Sair", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=sair)
but_sair.place(relx=0.7, rely=0.5, relwidth=0.25, relheight=0.1) resultado_texto = Label(text="",
font=("Arial", 12, "bold"), bg="#cfe2f3", justify='center')
resultado_texto.place(relx=0.05, rely=0.7, relwidth=0.9, relheight=0.25) root.bind('<Return>', app)
Pergunta_entrada.focus() root.mainloop()
0