jeuxdeau2009 0 Newbie Poster

Im writing a blackjack program to train one to count cards using the Hi-Lo System.

I found the engine online ( it was open sourced.) Instead of the code here using only numbers and Letters, i want to add only pictures of the cards instead of the numbers and card values. I need help. I recently downloaded pygame to help me import images. but i am having no luck.. Please take a look

#!/usr/bin/python

import Tkinter
import sys
import tkMessageBox
from random import shuffle
import pygame.image
import pygame.display

class cardTrainer:

    def __init__(self, master):

        #Define the deck of cards by list of representative strings
        self.deck = ['A', '2','3','4','5','6','7','8','9','10','J','K']            
        #Holds the current count
        self.current_count = 0

        #Holds the position in the deck of cards we got to
        self.current_card_position = 0

        #Boolean to hold weather the count loop is running
        self.count_running = False

        #Shuffle the cards
        shuffle(self.deck)

        #Define the Tkinter frame to hold the main interface
        frame = Tkinter.Frame(master)
        frame.pack(fill=Tkinter.X, expand=.5)

        #Define the interface


        self.label = Tkinter.Label(frame, text='BlackJack Card Counter')
        self.label.pack()


        self.slider = Tkinter.Scale(frame, from_=100, to=2000, orient=Tkinter.HORIZONTAL,
                                    showvalue=0, command=self.new_timerspeed)
        self.slider.set(2100)
        self.slider.pack(fill=Tkinter.X, expand=1)

        self.start = Tkinter.Button(frame, text='Deal', command=self.startDeal)
        self.start.pack()

        self.stop = Tkinter.Button(frame, text="Show count", command=self.stopDeal)
        self.stop.pack()

        self.exit = Tkinter.Button(frame, text="Quit", command=top.quit)
        self.exit.pack()

        self.label = Tkinter.Button(frame, text="Images", command=self.pic)
        self.label.pack()

    def startDeal(self):

        #Ignore button press if count is running
        if self.count_running == True:
            pass

        #Make the program know it's running
        self.count_running = True

        #Call the function that holds the main loop
        self.Deal()

    def pic(self):
         import pygame.display
         picture = pygame.image.load("ace.jpg")


    def Deal(self):

        if self.count_running == True:
            #Update label to show current card value
            self.label.config(text=self.deck[self.current_card_position])

            #Update the count value
            self.updateCount(self.deck[self.current_card_position])

            #Update the position in the deck we are at
            self.current_card_position += 1

            #if we have reached the end of the deck, shuffle and continue
            if self.current_card_position == len(self.deck):
                shuffle(self.deck)
                self.current_card_position = 0

            #Run this process again after a time period designated by the slider
            self.label.after(self.timerspeed, self.Deal)
        else:
            #update label to show that we finished and the last card value
            self.label.config(text = "The count has been stopped\n" +
                                self.deck[self.current_card_position])

            #Tell the user the count
            tkMessageBox.showinfo("The Count", "The count is:\n" + str(self.current_count))

            self.current_count = 0

    def updateCount(self, card):
        #Take the actual numerical value of the card
        card = card[1:]

        #Deine which Conditions make the count go up/down/stay the same
        self.conditions_up = ("A", "K", "Q", "J", "10")
        self.conditions_same=("7", "8", "9")
        self.conditions_down=("6", "5", "4", "3", "2")

        #Alter the count depending on which condition the card matches
        for value in self.conditions_up:
            if card == value:
                self.current_count -= 1
                break
        for value in self.conditions_same:
            if card == value:
                break
        for value in self.conditions_down:
            if card == value:
                self.current_count +=1
                break

    def stopDeal(self):
        #Make the main loop finish
        self.count_running = False

    def new_timerspeed(self, x):
        self.timerspeed = x

if __name__ == "__main__":
    top = Tkinter.Tk()
    top.geometry('500x500')
    app = cardTrainer(top)
    top.mainloop()
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.