import random
import time
from tkinter import *
from tkinter import messagebox
# Função para bloquear os RadioButtons após a seleção e iniciar a corrida
def iniciar_corrida():
for rb in radiobuttons:
rb.config(state=DISABLED) # Bloqueia os RadioButtons
cavalo_selecionado = opcao.get()
if cavalo_selecionado:
simulador_corrida(cavalo_selecionado)
else:
messagebox.showwarning("Atenção", "Por favor, selecione um cavalo!")
# Função para simular a corrida
def simulador_corrida(cavalo_apostado):
progresso = [0] * len(cavalos) # Progresso inicial dos cavalos
distancia = 50 # Distância total da corrida
vencedor = ""
# Criando a janela popup da corrida
popup = Toplevel(root)
popup.title("Corrida de Cavalos")
popup.geometry("600x400")
popup.config(bg="#103030")
# Labels para mostrar o progresso dos cavalos
progresso_labels = []
for cavalo in cavalos:
lbl = Label(popup, text=f"{cavalo}: ", font=("Arial", 12), bg="#103030", fg="#49e3e3")
lbl.pack(anchor="w")
progresso_labels.append(lbl)
# Iniciando a corrida
while max(progresso) < distancia:
popup.update() # Atualiza a janela
time.sleep(0.1) # Pequena pausa para simular a corrida
for i in range(len(cavalos)):
progresso[i] += random.randint(1, 6) # Movimento aleatório
barra = "=" * (progresso[i] // 2) # Barra de progresso
progresso_labels[i].config(text=f"{cavalos[i]}: {barra} {progresso[i]}m")
# Definir o vencedor
vencedor_index = progresso.index(max(progresso))
vencedor = cavalos[vencedor_index]
# Mostrar o resultado final
resultado = f"O cavalo vencedor é: {vencedor}! "
if vencedor == cavalo_apostado:
resultado += "\nParabéns! Você apostou no cavalo vencedor! "
else:
resultado += f"\nQue pena... O cavalo {cavalo_apostado} perdeu. Melhor sorte na próxima vez!"
messagebox.showinfo("Resultado da Corrida", resultado)
popup.destroy()
# Exibir o botão "Novo Jogo"
btn_novo_jogo.place(relx=0.5, rely=0.9, anchor="center")
# Função para reiniciar o jogo
def novo_jogo():
opcao.set(None) # Limpa a seleção do RadioButton
for rb in radiobuttons:
rb.config(state=NORMAL) # Reativa os RadioButtons
btn_novo_jogo.place_forget() # Esconde o botão "Novo Jogo"
# Janela principal
root = Tk()
root.geometry("800x500")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Corrida de Cavalos")
# Título principal
titulo = Label(root, text="Corrida de Cavalos",
font=("Arial", "30", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.25, rely=0.05)
# Subtítulo
texto_sub1 = Label(root, text="Nome dos Cavalos",
font=("Arial", "25", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.3, rely=0.2)
# Lista de cavalos
cavalos = ["Relâmpago", "Veloz", "Trovão", "Pé-de-Vento", "Fêgulha"]
opcao = StringVar()
opcao.set(None) # Nenhuma opção selecionada inicialmente
# Lista para armazenar os RadioButtons
radiobuttons = []
# Frame centralizado para os RadioButtons
frame_radiobuttons = Frame(root, bg="#103030")
frame_radiobuttons.place(relx=0.5, rely=0.5, anchor="center")
# Criando os RadioButtons
for cavalo in cavalos:
rb = Radiobutton(frame_radiobuttons, text=cavalo, variable=opcao, value=cavalo,
font=("Arial", 14), bg="#103030", fg="#49e3e3",
activebackground="#103030", activeforeground="#49e3e3",
selectcolor="#103030")
rb.pack(anchor="w", pady=5)
radiobuttons.append(rb)
# Botão para iniciar a corrida
btn_iniciar = Button(root, text="Iniciar Corrida", command=iniciar_corrida,
font=("Arial", 16), bg="#49e3e3", fg="#103030", activebackground="#49e3e3")
btn_iniciar.place(relx=0.5, rely=0.8, anchor="center")
# Botão para reiniciar o jogo (inicialmente escondido)
btn_novo_jogo = Button(root, text="Novo Jogo", command=novo_jogo,
font=("Arial", 16), bg="#49e3e3", fg="#103030", activebackground="#49e3e3")
root.mainloop()