import tkinter as tk
import random
# Datos de los animales con su especie y ambiente
animales = {
"León": ("Mamífero", "Sabana"),
"Tiburón": ("Pez", "Océano"),
"Águila": ("Ave", "Montañas"),
"Elefante": ("Mamífero", "Sabana"),
"Pingüino": ("Ave", "Regiones polares"),
"Serpiente": ("Reptil", "Selva"),
"Cocodrilo": ("Reptil", "Ríos y pantanos"),
"Ballena": ("Mamífero", "Océano"),
"Lobo": ("Mamífero", "Bosques"),
"Camaleón": ("Reptil", "Selva"),
"Caballo": ("Mamífero", "Praderas"),
"Gorila": ("Mamífero", "Selva"),
"Delfín": ("Mamífero", "Océano"),
"Cóndor": ("Ave", "Montañas"),
"Rana": ("Anfibio", "Humedales"),
"Pulpo": ("Molusco", "Océano"),
"Jaguar": ("Mamífero", "Selva"),
"Canguro": ("Mamífero", "Desierto"),
"Tortuga": ("Reptil", "Océano"),
"Zorro": ("Mamífero", "Bosques")
}
# Generar preguntas
def generar_preguntas():
preguntas_especie = []
preguntas_ambiente = []
animales_lista = list(animales.keys())
for _ in range(30):
animal = random.choice(animales_lista)
especie_correcta, ambiente_correcto = animales[animal]
opciones_especie = list(set(especie for especie, _ in animales.values()))
opciones_especie.remove(especie_correcta)
alternativas_especie = random.sample(opciones_especie, 2) + [especie_correcta]
random.shuffle(alternativas_especie)
opciones_ambiente = list(set(ambiente for _, ambiente in animales.values()))
opciones_ambiente.remove(ambiente_correcto)
alternativas_ambiente = random.sample(opciones_ambiente, 2) + [ambiente_correcto]
random.shuffle(alternativas_ambiente)
preguntas_especie.append((animal, especie_correcta, alternativas_especie))
preguntas_ambiente.append((animal, ambiente_correcto, alternativas_ambiente))
return preguntas_especie, preguntas_ambiente
# Función para verificar respuestas
def verificar_respuesta(indice, seleccion, tipo):
global correctas, incorrectas, fase
correcta = preguntas_especie[indice][1] if tipo == "especie" else preguntas_ambiente[indice][1]
for boton in botones:
if boton["text"] == correcta:
boton.config(bg="lightgreen") # Respuesta correcta en verde
elif boton["text"] == seleccion:
boton.config(bg="lightcoral") # Respuesta incorrecta en rojo
if seleccion == correcta:
correctas += 1
else:
incorrectas += 1
ventana.after(1000, lambda: siguiente_pregunta(indice + 1, tipo)) # Espera 1 segundo antes de la siguiente pregunta
# Mostrar siguiente pregunta
def siguiente_pregunta(indice, tipo):
global fase
for boton in botones:
boton.config(bg="SystemButtonFace") # Restablecer color de los botones
if tipo == "especie":
if indice < len(preguntas_especie):
pregunta_label.config(text=f"¿A qué especie pertenece {preguntas_especie[indice][0]}?")
for i, boton in enumerate(botones):
boton.config(text=preguntas_especie[indice][2][i], command=lambda i=i: verificar_respuesta(indice, preguntas_especie[indice][2][i], "especie"))
else:
fase = "ambiente"
siguiente_pregunta(0, "ambiente")
elif tipo == "ambiente":
if indice < len(preguntas_ambiente):
pregunta_label.config(text=f"¿En qué ambiente se desarrolla {preguntas_ambiente[indice][0]}?")
for i, boton in enumerate(botones):
boton.config(text=preguntas_ambiente[indice][2][i], command=lambda i=i: verificar_respuesta(indice, preguntas_ambiente[indice][2][i], "ambiente"))
else:
pregunta_label.config(text=f"Juego terminado.\nCorrectas: {correctas}\nIncorrectas: {incorrectas}")
for boton in botones:
boton.pack_forget()
# Configuración de la ventana
ventana = tk.Tk()
ventana.title("Quiz de Animales by orlas.cl mayo 2025")
pregunta_label = tk.Label(ventana, text="", font=("Arial", 50))
pregunta_label.pack(pady=10)
botones = [tk.Button(ventana, text="", font=("Arial", 50), width=20) for _ in range(3)]
for boton in botones:
boton.pack(pady=5)
# Iniciar el juego
preguntas_especie, preguntas_ambiente = generar_preguntas()
correctas = 0
incorrectas = 0
fase = "especie"
siguiente_pregunta(0, "especie")
ventana.mainloop()
