Advertisement
Guest User

Untitled

a guest
Apr 6th, 2016
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.56 KB | None | 0 0
  1. import Tkinter as Tk
  2. from ttk import *
  3. import tkFont
  4. import time
  5. import threading
  6. import Image
  7. import itertools
  8.  
  9. carddeck, values = [''.join(card) for card in itertools.product("SDHC", "123456789JQK")], [i for i in range(1, 13)] * 4
  10. cards = dict(zip(carddeck, values)) # Card : Value pairs
  11.  
  12. class MainWindow:
  13.  
  14. def __init__(self):
  15.  
  16. self.root = Tk.Tk()
  17. self.root.resizable(width=False, height=False)
  18. self.root.geometry("700x500")
  19. self.mainFrames = []
  20. self.createPlay()
  21.  
  22. def unpack_all_frames(self, frames): # Frames is an object array
  23. try:
  24. for i in frames:
  25. i.pack_forget()
  26. except:
  27. pass
  28.  
  29. def format_card(self, card): # Exclusively for the card area in bottom right
  30. try:
  31. self.temp = Image.open("Cards/" + card + ".png")
  32. self.temp = self.temp.resize((int(self.temp.size[0]*0.75), int(self.temp.size[1]*0.75)), Image.ANTIALIAS)
  33. self.temp.save("temp.png")
  34. except:
  35. # return None
  36. print "Card not found"
  37.  
  38. def createMainMenu(self):
  39. self.unpack_all_frames(self.mainFrames)
  40. try:
  41. if self.Menu:
  42. self.Menu.pack()
  43. self.killmenuthread = False
  44. except:
  45. self.Menu = Frame(self.root, width=700, height=500)
  46. self.Menu.pack_propagate(0)
  47. self.Menu.pack()
  48. self.mainFrames.append(self.Menu)
  49. self.killmenuthread = False
  50. self.MMtext = ""
  51.  
  52. self.MC = Tk.Canvas(self.Menu, width=700, height=500, highlightthickness=0, relief='ridge')
  53. self.MC.pack()
  54.  
  55. self.MMLabel = self.MC.create_text((350, 100), text=self.MMtext, font=("Helvetica", 45))
  56. self.BGLabel = self.MC.create_text((350, 100), text=self.MMtext, font=("Helvetica", 45), fill="grey")
  57.  
  58. self.start = Tk.Button(self.Menu, text="Play", width=10, command=self.createPlay)
  59. self.start['font'] = tkFont.Font(size=15)
  60. self.start.place(relx=0.5, rely=0.6, anchor=Tk.S)
  61.  
  62. self.stats = Tk.Button(self.Menu, text="Statistics", width=10)
  63. self.stats['font'] = tkFont.Font(size=17)
  64. self.stats.place(relx=0.5, rely=0.72, anchor=Tk.S)
  65.  
  66. def MainMenuFlare():
  67. self.killmenuthread = False
  68. self.MMtext = ""
  69. self.MC.itemconfig(2, text="")
  70. text = list("BLACKJACK")
  71. for i in range(len(text)):
  72. self.MMtext = list(self.MMtext)
  73. self.MMtext.append(text[i])
  74. self.MMtext = ''.join(self.MMtext)
  75. self.MC.itemconfig(1, text=self.MMtext)
  76. time.sleep(0.2)
  77. if self.MMtext == "BLACKJACK":
  78. break
  79. time.sleep(0.5)
  80.  
  81. while self.killmenuthread == False:
  82. self.MC.itemconfig(2, text="BLACKJACK")
  83. for i in range(3):
  84. self.MMtext = ""
  85. self.MC.itemconfig(1, text=self.MMtext)
  86. time.sleep(0.4)
  87. self.MMtext = "BLACKJACK"
  88. self.MC.lower(2)
  89. self.MC.itemconfig(1, text=self.MMtext)
  90. time.sleep(0.5)
  91. break
  92.  
  93. self.charlo = threading.Thread(target=MainMenuFlare)
  94. self.charlo.daemon = True
  95. self.charlo.start()
  96.  
  97. def createPlay(self):
  98. self.unpack_all_frames(self.mainFrames)
  99. try:
  100. if self.Play:
  101. self.Play.pack()
  102. except:
  103. self.killmenuthread = True
  104. #self.Menu.pack_forget()
  105.  
  106. self.Play = Tk.Frame(self.root, width=700, height=500)
  107. self.Play.pack()
  108. self.mainFrames.append(self.Play)
  109.  
  110. self.PlayCanvas = Tk.Canvas(self.Play, width=700, height=500, highlightthickness=0)
  111. self.PlayCanvas.place(relx=0, rely=0)
  112. self.PlayCanvas.create_rectangle(0,0,501,380, fill="snow")
  113.  
  114. self.InfoPane = Tk.Frame(self.Play, width=195, height=386, bg='grey', highlightbackground="black", bd=3, relief=Tk.RIDGE)
  115. self.InfoPane.lift()
  116. self.InfoPane.place(relx=0.7208, rely=0)
  117. self.InfoPane.pack_propagate(0)
  118.  
  119. self.ActionPane = Tk.Frame(self.Play, width=700, height=117, bg='grey', highlightbackground="black", bd=3, relief=Tk.RIDGE)
  120. self.ActionPane.lift()
  121. self.ActionPane.place(relx=0, rely=0.765)
  122. self.ActionPane.pack_propagate(0)
  123.  
  124. self.Hit = Tk.Button(self.ActionPane, text="Hit", width=8, highlightbackground="black", state=Tk.DISABLED)
  125. self.Hit['font'] = tkFont.Font(size=15)
  126. self.Hit.place(relx=0.02, rely=0.08)
  127.  
  128. self.Stand = Tk.Button(self.ActionPane, text="Stand", width=8, highlightbackground="black", state=Tk.DISABLED)
  129. self.Stand['font'] = tkFont.Font(size=15)
  130. self.Stand.place(relx=0.02, rely=0.55)
  131.  
  132. self.DoubleD = Tk.Button(self.ActionPane, text="DD", width=8, highlightbackground="black", state=Tk.DISABLED)
  133. self.DoubleD['font'] = tkFont.Font(size=15)
  134. self.DoubleD.place(relx=0.22, rely=0.55)
  135.  
  136. self.Push = Tk.Button(self.ActionPane, text="Push", width=8, highlightbackground="black", state=Tk.DISABLED, fg="red")
  137. self.Push['font'] = tkFont.Font(size=15)
  138. self.Push.place(relx=0.22, rely=0.08)
  139.  
  140. self.BetSlider = Tk.Scale(self.ActionPane, to=500, from_=2, orient=Tk.HORIZONTAL, highlightbackground="black", state=Tk.DISABLED, width=20)
  141. self.BetSlider.place(relx=0.8, rely=0.1)
  142.  
  143. self.Bet = Tk.Button(self.ActionPane, text="Bet", width=8, highlightbackground="black", state=Tk.DISABLED, fg="red")
  144. self.Bet['font'] = tkFont.Font(size=14)
  145. self.Bet.place(relx=0.8, rely=0.6)
  146.  
  147.  
  148. def createTable(): # P Denotes "Physical" ie exclusively visual elements
  149. self.temp = Image.open("index3.png")
  150. self.temp = self.temp.resize((int(self.temp.size[0]*1.39), int(self.temp.size[1]*1.505)), Image.ANTIALIAS)
  151. self.temp.save("temp.png")
  152. self.texture = Tk.PhotoImage(file="temp.png")
  153. self.PlayCanvas.create_image(251,191, image=self.texture)
  154. self.PTable = self.PlayCanvas.create_oval(100,80,401,301.45)
  155.  
  156. # Dynamic variable creation is bad, but the below code is also bad
  157. self.PP1 = self.PlayCanvas.create_text((115,110), text="D", font=("Helvetica", 30), angle=50)
  158. self.PP2 = self.PlayCanvas.create_text((125,285), text="X", font=("Helvetica", 30), angle=-45)
  159. self.PP = self.PlayCanvas.create_text((335,308), text="P", font=("Helvetica", 30), angle=29)
  160. self.PP4 = self.PlayCanvas.create_text((423,188), text="X", font=("Helvetica", 30), angle=-91)
  161. self.PP5 = self.PlayCanvas.create_text((315,70), text="X", font=("Helvetica", 30), angle=-20)
  162.  
  163. self.PPlayerArray = [self.PP1, self.PP2, self.PP, self.PP4, self.PP5]
  164.  
  165. self.PP1H = self.PlayCanvas.create_text((142,135), text="X", font=("Helvetica", 12)) # Physical Player 1 Hand (Value)
  166. self.PP2H = self.PlayCanvas.create_text((155,255), text="X", font=("Helvetica", 12))
  167. self.PPH = self.PlayCanvas.create_text((310,270), text="X", font=("Helvetica", 12)) # Will eventually read directly from player hand
  168. self.PP4H = self.PlayCanvas.create_text((378,188), text="X", font=("Helvetica", 12))
  169. self.PP5H = self.PlayCanvas.create_text((295,105), text="X", font=("Helvetica", 12))
  170.  
  171. #self.Pot = self.PlayCanvas.create_text((245,160), text="X", font=("Helvetica", 17))
  172.  
  173. # For poker
  174. """
  175. self.temp = Image.open("coins.png")
  176. self.temp = self.temp.resize((int(self.temp.size[0]*0.15), int(self.temp.size[1]*0.15)), Image.ANTIALIAS)
  177. self.temp.save("temp.png")
  178. self.PImage = Tk.PhotoImage(file="temp.png")
  179. self.PotImage = self.PlayCanvas.create_image(245,190, image=self.PImage)
  180. """
  181. def createCardArea():
  182. self.CardFrame = Tk.Frame(self.ActionPane, width=219, height=int(1.557*65), bg='grey60', highlightbackground="black", bd=4, relief=Tk.RIDGE)
  183. # 240 pixels / 6 cards max = 40, the distance between every edge of every card (they will overlap)
  184. # Shrunken cards will instead probably be 30
  185. self.CardFrame.lift()
  186. self.CardFrame.pack_propagate(0)
  187. self.CardFrame.place(relx=0.43, rely=0.04)
  188.  
  189. self.CardCanvas = Tk.Canvas(self.CardFrame, width=240, height=(1.557*65)-7, highlightthickness=1, highlightbackground="tan4")
  190. self.CardCanvas.pack()
  191.  
  192. self.format_card("Hole")
  193. self.C1 = Tk.PhotoImage(file="temp.png") # Must have a reference to Photoimage object, mandatory
  194. self.card1 = self.CardCanvas.create_image(30,46, image=self.C1, state=Tk.HIDDEN) # Can't just make it shorter and put it here
  195.  
  196. self.format_card("Hole")
  197. self.C2 = Tk.PhotoImage(file="temp.png")
  198. self.card2 = self.CardCanvas.create_image(60,46, image=self.C2, state=Tk.HIDDEN)
  199.  
  200. self.format_card("Hole")
  201. self.C3 = Tk.PhotoImage(file="temp.png")
  202. self.card3 = self.CardCanvas.create_image(90,46, image=self.C3, state=Tk.HIDDEN)
  203.  
  204. self.format_card("Hole")
  205. self.C4 = Tk.PhotoImage(file="temp.png")
  206. self.card4 = self.CardCanvas.create_image(120,46, image=self.C4, state=Tk.NORMAL)
  207. #self.CardCanvas.itemconfig(4, state=Tk.HIDDEN)
  208.  
  209. self.format_card("Hole")
  210. self.C5 = Tk.PhotoImage(file="temp.png")
  211. self.card5 = self.CardCanvas.create_image(150,46, image=self.C5, state=Tk.HIDDEN)
  212.  
  213. self.format_card("Hole")
  214. self.C6 = Tk.PhotoImage(file="temp.png")
  215. self.card6 = self.CardCanvas.create_image(180,46, image=self.C6, state=Tk.HIDDEN)
  216.  
  217. self.PCards = [self.card1, self.card2, self.card3, self.card4, self.card5, self.card6]
  218.  
  219. def createInfoPane():
  220. # Oh boy another canvas
  221. self.InfoPaneCanvas = Tk.Canvas(self.InfoPane, width=186, height=700, bg='grey', highlightbackground="tan4", bd=2)
  222. self.InfoPaneCanvas.pack()
  223.  
  224. self.TotalFundsLabel = self.InfoPaneCanvas.create_text(55,20, text="Total Funds", font=("Helvetica", 13))
  225. self.TotalFundsValueLabel = self.InfoPaneCanvas.create_text(55,40, text="$4055", font=("Helvetica", 10))
  226.  
  227. createTable()
  228. createCardArea()
  229. createInfoPane()
  230. self.root.mainloop()
  231.  
  232. window = MainWindow()
  233.  
  234. window.CardCanvas.itemconfig(4, state=Tk.HIDDEN)
  235.  
  236. class Player:
  237. def __init__(self):
  238. pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement