Archivo de Python:
Ejecución del programa:
Código:
from Tkinter import * from PIL import Image,ImageTk import os import random import tkMessageBox import time import threading carpetaraiz=os.path.dirname(__file__) #print carpetaraiz DirCartas = carpetaraiz+"/Poker Cards/PNG/" continuar = 1 #----------------------------Variables Globales------------------------------- imagendeck = [] allcards = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"] allsymbols = ["H","S","C","D"] labelsarray = [] imagenes = [] indice = 0 #numerocolumna = 1 puntajetotal = 0 contadorposicion = 0 #print DirCartas #----------Metodo para mostrar imagenes en Pantalla--------------------- 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 return ImageTk.PhotoImage(img) #imagen = ImageTk.PhotoImage(img) #la convierto a un formato soportado por los widgets de tkinter #return imagen def ReiniciarJuego(): opcion = tkMessageBox.askyesno("Retry?", "Quisieras volver a Intentarlo?") if(opcion==True): global indice, puntajetotal, contadorposicion, totalmarcador del labelsarray[:] del imagenes[:] indice = 0 puntajetotal = 0 contadorposicion = 0 totalmarcador.config(text = "0") else: exit() def TerminarJugada(): opcion=tkMessageBox.askokcancel("Terminar Jugada", "Si sales ahora perderas el juego...") if(opcion==True): ReiniciarJuego() def InicioJuego(): global TextoBoton, contenedor, numerocolumna, indice, puntajetotal, contadorposicion global Botoniniciar, totalmarcador Botoniniciar.config(width = 43) finishButton = Button(contenedor, text="Terminar", font=("Arial", 10), width=15, command = TerminarJugada) finishButton.place(x=567, y=376) card = random.choice(allcards) palo = random.choice(allsymbols) carta = card+palo imagenes.append(setimagen(DirCartas+carta+".png", 150, 180)) labelcartas = Label(framecartas, image = imagenes[indice]) #labelcartas.grid(row = 1, column = numerocolumna, padx = 10, pady = 10) labelcartas.place(x=contadorposicion, y=0) contadorposicion+=130 #numerocolumna+= 1 indice+=1 labelsarray.append(labelcartas) if(card == "10" or card == "J" or card == "Q" or card == "K"): puntajetotal+=10 elif(card == "A"): opcion = tkMessageBox.askquestion("Elija el valor del As", "Quiere que valga 11?\nYes = 11 | No = 1") if opcion=="yes": puntajetotal+=11 else: puntajetotal+=1 else: puntajetotal+= int(card) totalmarcador.config(text = str(puntajetotal)) if(puntajetotal==21): tkMessageBox.showinfo("BLACKJACK!! FELICIDADES!", "Has hecho un BLACKJACK!\nTotal: 21") ReiniciarJuego() elif(puntajetotal>21): tkMessageBox.showerror("HAS PERDIDO!",'Te has pasado! Vuelve a Intentarlo') ReiniciarJuego() #--------------Metodo para mostrar el Marcador al Ingresar el Nombre-------------------- def Marcador(nombre): global labelentry, BotonOK, entrynombre, Botoniniciar global nombrejugador, TextoBoton, totalmarcador #nombrejugador = nombre BotonOK.destroy() entrynombre.destroy() TextoBoton.set("Pedir Carta") Botoniniciar = Button(contenedor, textvariable=TextoBoton, font=("Arial", 10), width=45, command = InicioJuego) Botoniniciar.place(x=200, y=376) framemarcador = Frame(contenedor, bg="grey") framemarcador.config(bd=3, relief="ridge") framemarcador.place(width=154, height=316, x=18, y=90) titulomarcador = Label(framemarcador, text = "Marcador",font = ("Arial",20, "bold"), bg = "grey") titulomarcador.grid(row=1, column=1, padx = 10, pady = 10, columnspan=3) j1marcador = Label(framemarcador, text = "Jugador 1:", font = ("Arial",10), bg="grey") j1marcador.grid(row=2, column=1, sticky = "E") nombremarcador = Label(framemarcador, text = nombre, font = ("Arial",10), bg = "grey") nombremarcador.grid(row=2, column=2, sticky = "W") totallabel = Label(framemarcador, text = "Total:", font = ("Arial",10,"bold"), bg = "grey") totallabel.grid(row=3, column = 1, sticky = "E" ) totalmarcador = Label(framemarcador, text= str(puntajetotal), font=("Arial", 10, "bold"), bg="grey") totalmarcador.grid(row=3, column=2, sticky="W") # Creacion de un Hilo para que tenga un minimo retraso entre cambio de texto #hilo=threading.Thread(target=mensaje, args=("Buenas, Jugadores, Vamos a empezar la Partida de BlackJack",)) #hilo.start() labelentry.config(text = "Buenas, Jugadores, Vamos a empezar la Partida de BlackJack") #----------------Metodo que contiene la funcionalidad del Hilo------------------------------ """def mensaje(msg): global labelentry time.sleep(3) labelentry.config(text=msg)""" #--------Metodo para mostrar la baraja y los componentes para Ingresar el nombre---------- def IniciarComponentes(): global contenedor, nombrejugador, labelentry, TextoBoton global entrynombre, BotonOK DeckDir = carpetaraiz + "/Poker Cards/Images/Deck.png" imagendeck.append(setimagen(DeckDir,180,230)) Decklabel = Label(contenedor, image = imagendeck[0]) Decklabel.place(x=275,y=120) labelentry = Label(contenedor, text = "Ingrese el nombre del Jugador: ", font = ("Arial",10)) labelentry.place(x=200, y=350) nombre = StringVar() entrynombre = Entry(contenedor, textvariable = nombre) entrynombre.place(x=200, y=380) entrynombre.config(width = 40, font = ("Arial",10)) nombrejugador.set(nombre.get()) print nombrejugador.get() TextoBoton = StringVar() TextoBoton.set("OK") BotonOK = Button(contenedor, textvariable = TextoBoton, font = ("Arial", 10), width = 10) BotonOK.place(x=489, y=376) #if(nombrejugador.get()!=""): BotonOK.config(command = lambda :Marcador(str(nombre.get()))) #----------------------Creacion de Ventana------------------------ ventana = Tk() ventana.title("BlackJack Game v 0.1") ventana.config(bg="grey") ventana.iconbitmap(carpetaraiz+"\Poker Cards\Images\Poker Icon 1.ico") contenedor = Frame(ventana, width = 720, height = 640) contenedor.pack(fill = "y", expand = True) """bgimagen = Image.open(carpetaraiz + "/Poker Cards/Images/Poker Table (1).png") ph = ImageTk.PhotoImage(bgimagen) background_image = Label(contenedor, image = ph) background_image.place(x=0,y=0)""" framecartas = Frame(contenedor) framecartas.place(width=680, height=210, x=18, y=417) #framecartas.config(bd=3, relief="ridge") Etitulo =Label(contenedor,text="BlackJack", font=("Arial",40,"bold")) Etitulo.place(x=235,y=20) BotonStart = Button(contenedor, text = "Start Game", font = ("Arial", 10), width = 30, bg = "grey",command=IniciarComponentes) BotonStart.place(x=240, y=90) nombrejugador= StringVar() nombrejugador.set("") #----------------------Metodo para saber las cordenadas de la pantalla haciendo un Click-------- def getorigin(eventorigin): global x0,y0 x0 = eventorigin.x y0 = eventorigin.y print(x0,y0) #mouseclick event contenedor.bind("
No hay comentarios:
Publicar un comentario