Archivo de Python:
Ejecución del programa:
Código:
import os
import random
import threading
from Tkinter import *
import PIL
from PIL import Image, ImageTk
import time
import pygame
"""Variables globales"""
imagen=0
stop=0
dir = os.path.dirname(__file__)
Ccartas=dir+"/Cartas/" #establece la ruta hacia las imagenes de cartas
Csonido=dir+"/Sonidos/" #establece la ruta hacia los sonidos
play=1
"""--------------------------------------------------------"""
def setimagen(nombre,x,y): #carga la imagen
global imagen #Declaro el uso de una variable global
img = Image.open(nombre) #cargo la imagen mandada como parametro
img.thumbnail((x, y), Image.ANTIALIAS) #establezco sus dimensiones y la propiedad antialiasado
imagen = ImageTk.PhotoImage(img) #la convierto a un formato soportado por los widgets de tkinter
return imagen #retorno el objeto con la imagen
def play():
global stop,play,TBoton #Declaro el uso de las variables stop y play
"""play: sirve para controlar la pulsasion del boton, si se pulsa una vez el boton jugar en pantalla deberia iniciar el juego
pero si se vuelve a pulsar deberia detenerse y dado que se usa el mismo boton para ambas acciones la uso para controlar las acciones
stop: se usa para controlar el hilo de ejecucion declarado, si stop vale 1 debera terminar el hilo, si vale 0 debera continuar hasta que se le indique"""
if play==1:
TBoton.set("Pausar")
t=threading.Thread(target=hilo)
t.start()
stop=0 #El hilo continua con normalidad
play=0 #La proxima vez que se pulse el boton debera entrar en el else
else:
TBoton.set("Jugar")
play=1 #La proxima vez que se pulse el boton debera entrar en el if
stop=1 #Se detiene el hilo
def reproducirsonido(nombre):
pygame.init()
pygame.mixer.music.load(nombre)
pygame.mixer.music.play()
def hilo():
global tiempo, cartas, Limagen,stop,Tetiqueta,spin
cartas = ["EL GALLO", "EL DIABLITO", "LA DAMA", "EL CATRIN", "EL PARAGUAS", "LA SIRENA", "LA ESCALERA",
"LA BOTELLA", "EL BARRIL", "EL ARBOL", "EL MELON",
"EL VALIENTE", "EL GORRITO", "LA MUERTE", "LA PERA", "LA BANDERA", "EL BANDOLON", "EL VIOLINCELLO",
"LA GARZA", "EL PAJARO", "LA MANO", "LA BOTA",
"LA LUNA", "EL COTORRO", "EL BORRACHO", "EL NEGRITO", "EL CORAZON", "LA SANDIA", "EL TAMBOR",
"EL CAMARON", "LAS JARAS", "EL MUSICO", "LA ARANA",
"EL SOLDADO", "LA ESTRELLA", "EL CAZO", "EL MUNDO", "EL APACHE", "EL NOPAL", "EL ALACRAN", "LA ROSA",
"LA CALAVERA", "LA CAMPANA", "EL CANTARITO",
"EL VENADO", "EL SOL", "LA CORONA", "LA CHALUPA", "EL PINO", "EL PESCADO", "LA PALMA", "LA MACETA",
"EL ARPA", "LA RANA"]
# tiempo=time*1000
x = 0
reproducirsonido(Csonido + "inicio.ogg")
time.sleep(3)
while True:
nombre=str(cartas.index(random.choice(cartas))+1)
carta = Ccartas + nombre + ".png"
Limagen.config(image=setimagen(carta,400,400))
Tetiqueta.set("Salio: "+cartas[int(nombre)-1])
sonido=Csonido+"s_("+nombre+").ogg"
reproducirsonido(sonido)
time.sleep(float(spin.get()))
x = x + 1
if stop==1:
break
ventana=Tk()
ventana.config(bg="gray")
contenedor=Frame(ventana,width=700,height=700)
contenedor.pack()
Etitulo=Label(contenedor,text="Loteria Mexicana",font=("Arial",40,"bold")).place(x=120,y=20)
Etiempo=Label(contenedor,text="Tiempo entre cartas: ",font=("Arial",12,"bold"))
Etiempo.place(x=130,y=100)
spin=Spinbox(contenedor,values=[2,3,4,5,6,7,8,9,10,11,12],font=("Arial",12,"bold"))
spin.place(x=295,y=101)
Limagen=Label(contenedor)
Limagen.place(x=300,y=180)
TBoton=StringVar()
TBoton.set("Jugar")
Bplay=Button(contenedor,textvariable=TBoton,command=play)
Bplay.place(x=500,y=98)
Tetiqueta=StringVar()
Enombre=Label(contenedor,textvariable=Tetiqueta,font=("Arial",40,"bold"))
Enombre.place(x=80,y=400)
pygame.init()
ventana.mainloop()