Juego de Black Jack Grafico

codigo:


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from tkinter import *
import tkMessageBox
import random
import Imagenes
import os

class app():

    dirImagenes=os.path.dirname(__file__)+"/Imagenes/"
    imagenes=[]
    mazos=["C","E","T","D"]
    numeros=["0","1","2","3","4","5","6","7","8","9","J","Q","K"]
    lables=[]
    c=0 #control de posicion X de los labels
    indice=0
    cuenta=0 #lleva el control de los puntos acumulados

    def __init__(self):
        self.ventana=Tk()
        self.ventana.geometry("400x500")
        self.ventana.title("Black Jack")
        self.load()
        self.ventana.mainloop()

    def load(self):
        self.ET=Label(self.ventana,text="Black Jack",font=("Arial",12,"bold")).pack()
        self.ET1=Label(self.ventana,text="Hola Bienvenido al juego de Black Jack\n"
                                         "Reglas: \n"
                                         "1.Intenta Ganar al sumar 21 puntos no mas no menos\n"
                                         "2.Si obtienes un as puedes transformarlo en valores de 1 u 11\n"
                                         "3.Diviertete", font=("Arial",10)).pack()
        self.BT1=Button(self.ventana,text="Pedir Carta",command=self.button).pack(pady=10, fill=X)
        self.BT2=Button(self.ventana,text="Terminar Partida", command=self.terminar).pack(fill=X)
        self.Lpuntaje=Label(self.ventana,text="Puntaje: "+str(self.cuenta),font=("Arial",12,"bold"))
        self.Lpuntaje.place(x=10,y=200)

    def button(self):
        mazo=random.choice(self.mazos)
        numero=random.choice(self.numeros)
        carta=mazo+numero
        self.imagenes.append(Imagenes.get_imagen(self.dirImagenes+carta+".png", 80, 80))
        label=Label(self.ventana, image=self.imagenes[self.indice])
        label.place(x=self.c,y=300)
        self.lables.append(label)
        self.c=self.c+60
        if numero=="0" or numero=="K" or numero=="Q" or numero=="J":
            self.cuenta=self.cuenta+10
        elif numero=="1":
            self.suventana=Toplevel()
            self.suventana.geometry("180x70")
            self.ET2=Label(self.suventana,text="¿Quieres que tu As valga 1 u 11?").grid(column=0,row=0,columnspan=2)
            self.BT3=Button(self.suventana,text="valor: 1",command=lambda : self.valor_as(1)).grid(column=0,row=1,padx=10,pady=10)
            self.BT4=Button(self.suventana,text="valor: 11",command=lambda :self.valor_as(2)).grid(column=1,row=1,padx=10,pady=10)
        else:
            self.cuenta=self.cuenta+int(numero)
        self.Lpuntaje.config(text="Puntaje: "+str(self.cuenta))
        self.indice = self.indice + 1
        self.check_win(self.cuenta)


    def check_win(self,valor):
        if valor==21:
            tkMessageBox.showinfo("Ganador","Has ganado")
            self.continuar()
        elif valor>21:
            tkMessageBox.showinfo("Perdedor","Has perdido")
            self.continuar()

    def continuar(self):
        continuar = tkMessageBox.askyesno("Salir", "¿Deseas jugar otra partida?")

        if continuar:
            self.indice = 0
            self.cuenta=0
            self.c = 0
            self.Lpuntaje.config(text="Puntaje: 0")
            for i in range(0,len(self.imagenes), 1):
                label=self.lables[i]
                label.destroy()
            del self.lables[:]
            del self.imagenes[:]
        else:
            self.ventana.destroy()

    def valor_as(self,valor):
        if valor==1:
            self.cuenta=self.cuenta+1
        if valor==2:
            self.cuenta=self.cuenta+11
        self.Lpuntaje.config(text="Puntaje: " + str(self.cuenta))
        self.suventana.destroy()

    def terminar(self):
        tkMessageBox.showinfo("Perdedor", "Has perdido")
        self.continuar()

app=app()

Salida:


Material de descarga: click aqui

Nota: Los links incluyen el uso de un acortador, favor de resolver el captcha y esperar los 3 segundos que indica el acortador, se recomienda desabilitar el uso de bloqueadores de publicidad

Comentarios