Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Tkinter as Tk
- from ttk import *
- import tkFont
- import time
- import threading
- import Image
- import itertools
- carddeck, values = [''.join(card) for card in itertools.product("SDHC", "123456789JQK")], [i for i in range(1, 13)] * 4
- cards = dict(zip(carddeck, values)) # Card : Value pairs
- class MainWindow:
- def __init__(self):
- self.root = Tk.Tk()
- self.root.resizable(width=False, height=False)
- self.root.geometry("700x500")
- self.mainFrames = []
- self.createPlay()
- def unpack_all_frames(self, frames): # Frames is an object array
- try:
- for i in frames:
- i.pack_forget()
- except:
- pass
- def format_card(self, card): # Exclusively for the card area in bottom right
- try:
- self.temp = Image.open("Cards/" + card + ".png")
- self.temp = self.temp.resize((int(self.temp.size[0]*0.75), int(self.temp.size[1]*0.75)), Image.ANTIALIAS)
- self.temp.save("temp.png")
- except:
- # return None
- print "Card not found"
- def createMainMenu(self):
- self.unpack_all_frames(self.mainFrames)
- try:
- if self.Menu:
- self.Menu.pack()
- self.killmenuthread = False
- except:
- self.Menu = Frame(self.root, width=700, height=500)
- self.Menu.pack_propagate(0)
- self.Menu.pack()
- self.mainFrames.append(self.Menu)
- self.killmenuthread = False
- self.MMtext = ""
- self.MC = Tk.Canvas(self.Menu, width=700, height=500, highlightthickness=0, relief='ridge')
- self.MC.pack()
- self.MMLabel = self.MC.create_text((350, 100), text=self.MMtext, font=("Helvetica", 45))
- self.BGLabel = self.MC.create_text((350, 100), text=self.MMtext, font=("Helvetica", 45), fill="grey")
- self.start = Tk.Button(self.Menu, text="Play", width=10, command=self.createPlay)
- self.start['font'] = tkFont.Font(size=15)
- self.start.place(relx=0.5, rely=0.6, anchor=Tk.S)
- self.stats = Tk.Button(self.Menu, text="Statistics", width=10)
- self.stats['font'] = tkFont.Font(size=17)
- self.stats.place(relx=0.5, rely=0.72, anchor=Tk.S)
- def MainMenuFlare():
- self.killmenuthread = False
- self.MMtext = ""
- self.MC.itemconfig(2, text="")
- text = list("BLACKJACK")
- for i in range(len(text)):
- self.MMtext = list(self.MMtext)
- self.MMtext.append(text[i])
- self.MMtext = ''.join(self.MMtext)
- self.MC.itemconfig(1, text=self.MMtext)
- time.sleep(0.2)
- if self.MMtext == "BLACKJACK":
- break
- time.sleep(0.5)
- while self.killmenuthread == False:
- self.MC.itemconfig(2, text="BLACKJACK")
- for i in range(3):
- self.MMtext = ""
- self.MC.itemconfig(1, text=self.MMtext)
- time.sleep(0.4)
- self.MMtext = "BLACKJACK"
- self.MC.lower(2)
- self.MC.itemconfig(1, text=self.MMtext)
- time.sleep(0.5)
- break
- self.charlo = threading.Thread(target=MainMenuFlare)
- self.charlo.daemon = True
- self.charlo.start()
- def createPlay(self):
- self.unpack_all_frames(self.mainFrames)
- try:
- if self.Play:
- self.Play.pack()
- except:
- self.killmenuthread = True
- #self.Menu.pack_forget()
- self.Play = Tk.Frame(self.root, width=700, height=500)
- self.Play.pack()
- self.mainFrames.append(self.Play)
- self.PlayCanvas = Tk.Canvas(self.Play, width=700, height=500, highlightthickness=0)
- self.PlayCanvas.place(relx=0, rely=0)
- self.PlayCanvas.create_rectangle(0,0,501,380, fill="snow")
- self.InfoPane = Tk.Frame(self.Play, width=195, height=386, bg='grey', highlightbackground="black", bd=3, relief=Tk.RIDGE)
- self.InfoPane.lift()
- self.InfoPane.place(relx=0.7208, rely=0)
- self.InfoPane.pack_propagate(0)
- self.ActionPane = Tk.Frame(self.Play, width=700, height=117, bg='grey', highlightbackground="black", bd=3, relief=Tk.RIDGE)
- self.ActionPane.lift()
- self.ActionPane.place(relx=0, rely=0.765)
- self.ActionPane.pack_propagate(0)
- self.Hit = Tk.Button(self.ActionPane, text="Hit", width=8, highlightbackground="black", state=Tk.DISABLED)
- self.Hit['font'] = tkFont.Font(size=15)
- self.Hit.place(relx=0.02, rely=0.08)
- self.Stand = Tk.Button(self.ActionPane, text="Stand", width=8, highlightbackground="black", state=Tk.DISABLED)
- self.Stand['font'] = tkFont.Font(size=15)
- self.Stand.place(relx=0.02, rely=0.55)
- self.DoubleD = Tk.Button(self.ActionPane, text="DD", width=8, highlightbackground="black", state=Tk.DISABLED)
- self.DoubleD['font'] = tkFont.Font(size=15)
- self.DoubleD.place(relx=0.22, rely=0.55)
- self.Push = Tk.Button(self.ActionPane, text="Push", width=8, highlightbackground="black", state=Tk.DISABLED, fg="red")
- self.Push['font'] = tkFont.Font(size=15)
- self.Push.place(relx=0.22, rely=0.08)
- self.BetSlider = Tk.Scale(self.ActionPane, to=500, from_=2, orient=Tk.HORIZONTAL, highlightbackground="black", state=Tk.DISABLED, width=20)
- self.BetSlider.place(relx=0.8, rely=0.1)
- self.Bet = Tk.Button(self.ActionPane, text="Bet", width=8, highlightbackground="black", state=Tk.DISABLED, fg="red")
- self.Bet['font'] = tkFont.Font(size=14)
- self.Bet.place(relx=0.8, rely=0.6)
- def createTable(): # P Denotes "Physical" ie exclusively visual elements
- self.temp = Image.open("index3.png")
- self.temp = self.temp.resize((int(self.temp.size[0]*1.39), int(self.temp.size[1]*1.505)), Image.ANTIALIAS)
- self.temp.save("temp.png")
- self.texture = Tk.PhotoImage(file="temp.png")
- self.PlayCanvas.create_image(251,191, image=self.texture)
- self.PTable = self.PlayCanvas.create_oval(100,80,401,301.45)
- # Dynamic variable creation is bad, but the below code is also bad
- self.PP1 = self.PlayCanvas.create_text((115,110), text="D", font=("Helvetica", 30), angle=50)
- self.PP2 = self.PlayCanvas.create_text((125,285), text="X", font=("Helvetica", 30), angle=-45)
- self.PP = self.PlayCanvas.create_text((335,308), text="P", font=("Helvetica", 30), angle=29)
- self.PP4 = self.PlayCanvas.create_text((423,188), text="X", font=("Helvetica", 30), angle=-91)
- self.PP5 = self.PlayCanvas.create_text((315,70), text="X", font=("Helvetica", 30), angle=-20)
- self.PPlayerArray = [self.PP1, self.PP2, self.PP, self.PP4, self.PP5]
- self.PP1H = self.PlayCanvas.create_text((142,135), text="X", font=("Helvetica", 12)) # Physical Player 1 Hand (Value)
- self.PP2H = self.PlayCanvas.create_text((155,255), text="X", font=("Helvetica", 12))
- self.PPH = self.PlayCanvas.create_text((310,270), text="X", font=("Helvetica", 12)) # Will eventually read directly from player hand
- self.PP4H = self.PlayCanvas.create_text((378,188), text="X", font=("Helvetica", 12))
- self.PP5H = self.PlayCanvas.create_text((295,105), text="X", font=("Helvetica", 12))
- #self.Pot = self.PlayCanvas.create_text((245,160), text="X", font=("Helvetica", 17))
- # For poker
- """
- self.temp = Image.open("coins.png")
- self.temp = self.temp.resize((int(self.temp.size[0]*0.15), int(self.temp.size[1]*0.15)), Image.ANTIALIAS)
- self.temp.save("temp.png")
- self.PImage = Tk.PhotoImage(file="temp.png")
- self.PotImage = self.PlayCanvas.create_image(245,190, image=self.PImage)
- """
- def createCardArea():
- self.CardFrame = Tk.Frame(self.ActionPane, width=219, height=int(1.557*65), bg='grey60', highlightbackground="black", bd=4, relief=Tk.RIDGE)
- # 240 pixels / 6 cards max = 40, the distance between every edge of every card (they will overlap)
- # Shrunken cards will instead probably be 30
- self.CardFrame.lift()
- self.CardFrame.pack_propagate(0)
- self.CardFrame.place(relx=0.43, rely=0.04)
- self.CardCanvas = Tk.Canvas(self.CardFrame, width=240, height=(1.557*65)-7, highlightthickness=1, highlightbackground="tan4")
- self.CardCanvas.pack()
- self.format_card("Hole")
- self.C1 = Tk.PhotoImage(file="temp.png") # Must have a reference to Photoimage object, mandatory
- self.card1 = self.CardCanvas.create_image(30,46, image=self.C1, state=Tk.HIDDEN) # Can't just make it shorter and put it here
- self.format_card("Hole")
- self.C2 = Tk.PhotoImage(file="temp.png")
- self.card2 = self.CardCanvas.create_image(60,46, image=self.C2, state=Tk.HIDDEN)
- self.format_card("Hole")
- self.C3 = Tk.PhotoImage(file="temp.png")
- self.card3 = self.CardCanvas.create_image(90,46, image=self.C3, state=Tk.HIDDEN)
- self.format_card("Hole")
- self.C4 = Tk.PhotoImage(file="temp.png")
- self.card4 = self.CardCanvas.create_image(120,46, image=self.C4, state=Tk.NORMAL)
- #self.CardCanvas.itemconfig(4, state=Tk.HIDDEN)
- self.format_card("Hole")
- self.C5 = Tk.PhotoImage(file="temp.png")
- self.card5 = self.CardCanvas.create_image(150,46, image=self.C5, state=Tk.HIDDEN)
- self.format_card("Hole")
- self.C6 = Tk.PhotoImage(file="temp.png")
- self.card6 = self.CardCanvas.create_image(180,46, image=self.C6, state=Tk.HIDDEN)
- self.PCards = [self.card1, self.card2, self.card3, self.card4, self.card5, self.card6]
- def createInfoPane():
- # Oh boy another canvas
- self.InfoPaneCanvas = Tk.Canvas(self.InfoPane, width=186, height=700, bg='grey', highlightbackground="tan4", bd=2)
- self.InfoPaneCanvas.pack()
- self.TotalFundsLabel = self.InfoPaneCanvas.create_text(55,20, text="Total Funds", font=("Helvetica", 13))
- self.TotalFundsValueLabel = self.InfoPaneCanvas.create_text(55,40, text="$4055", font=("Helvetica", 10))
- createTable()
- createCardArea()
- createInfoPane()
- self.root.mainloop()
- window = MainWindow()
- window.CardCanvas.itemconfig(4, state=Tk.HIDDEN)
- class Player:
- def __init__(self):
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement