erynur

3 in a row(v1)

Apr 1st, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.79 KB | None | 0 0
  1. try:
  2.     from tkinter import *
  3.     from tkinter import messagebox
  4. except ImportError:
  5.     from tkinter import *
  6.     from tkinter import messagebox
  7.  
  8.  
  9. # For menubar to quit
  10. def quit_application():
  11.     quit()
  12.  
  13.  
  14. # Check if three X or O in a row
  15. def is_won():
  16.     if (l1.cget('text') == 'X') & (l2.cget('text') == 'X') & (l3.cget('text') == 'X'):
  17.         l1.config(bg='green')
  18.         l2.config(bg='green')
  19.         l3.config(bg='green')
  20.         show_winner('X')
  21.     elif (l4.cget('text') == 'X') & (l5.cget('text') == 'X') & (l6.cget('text') == 'X'):
  22.         l4.config(bg='green')
  23.         l5.config(bg='green')
  24.         l6.config(bg='green')
  25.         show_winner('X')
  26.     elif (l7.cget('text') == 'X') & (l8.cget('text') == 'X') & (l9.cget('text') == 'X'):
  27.         l7.config(bg='green')
  28.         l8.config(bg='green')
  29.         l9.config(bg='green')
  30.         show_winner('X')
  31.     elif (l1.cget('text') == 'X') & (l4.cget('text') == 'X') & (l7.cget('text') == 'X'):
  32.         l1.config(bg='green')
  33.         l4.config(bg='green')
  34.         l7.config(bg='green')
  35.         show_winner('X')
  36.     elif (l2.cget('text') == 'X') & (l5.cget('text') == 'X') & (l8.cget('text') == 'X'):
  37.         l2.config(bg='green')
  38.         l5.config(bg='green')
  39.         l8.config(bg='green')
  40.         show_winner('X')
  41.     elif (l3.cget('text') == 'X') & (l6.cget('text') == 'X') & (l9.cget('text') == 'X'):
  42.         l3.config(bg='green')
  43.         l6.config(bg='green')
  44.         l9.config(bg='green')
  45.         show_winner('X')
  46.     elif (l1.cget('text') == 'X') & (l5.cget('text') == 'X') & (l9.cget('text') == 'X'):
  47.         l1.config(bg='green')
  48.         l5.config(bg='green')
  49.         l9.config(bg='green')
  50.         show_winner('X')
  51.     elif (l3.cget('text') == 'X') & (l5.cget('text') == 'X') & (l7.cget('text') == 'X'):
  52.         l3.config(bg='green')
  53.         l5.config(bg='green')
  54.         l7.config(bg='green')
  55.         show_winner('X')
  56.     elif (l1.cget('text') == 'O') & (l2.cget('text') == 'O') & (l3.cget('text') == 'O'):
  57.         l1.config(bg='green')
  58.         l2.config(bg='green')
  59.         l3.config(bg='green')
  60.         show_winner('O')
  61.     elif (l4.cget('text') == 'O') & (l5.cget('text') == 'O') & (l6.cget('text') == 'O'):
  62.         l4.config(bg='green')
  63.         l5.config(bg='green')
  64.         l6.config(bg='green')
  65.         show_winner('O')
  66.     elif (l7.cget('text') == 'O') & (l8.cget('text') == 'O') & (l9.cget('text') == 'O'):
  67.         l7.config(bg='green')
  68.         l8.config(bg='green')
  69.         l9.config(bg='green')
  70.         show_winner('O')
  71.     elif (l1.cget('text') == 'O') & (l4.cget('text') == 'O') & (l7.cget('text') == 'O'):
  72.         l1.config(bg='green')
  73.         l4.config(bg='green')
  74.         l7.config(bg='green')
  75.         show_winner('O')
  76.     elif (l2.cget('text') == 'O') & (l5.cget('text') == 'O') & (l8.cget('text') == 'O'):
  77.         l2.config(bg='green')
  78.         l5.config(bg='green')
  79.         l8.config(bg='green')
  80.         show_winner('O')
  81.     elif (l3.cget('text') == 'O') & (l6.cget('text') == 'O') & (l9.cget('text') == 'O'):
  82.         l3.config(bg='green')
  83.         l6.config(bg='green')
  84.         l9.config(bg='green')
  85.         show_winner('O')
  86.     elif (l1.cget('text') == 'O') & (l5.cget('text') == 'O') & (l9.cget('text') == 'O'):
  87.         l1.config(bg='green')
  88.         l5.config(bg='green')
  89.         l9.config(bg='green')
  90.         show_winner('O')
  91.     elif (l3.cget('text') == 'O') & (l5.cget('text') == 'O') & (l7.cget('text') == 'O'):
  92.         l3.config(bg='green')
  93.         l5.config(bg='green')
  94.         l7.config(bg='green')
  95.         show_winner('O')
  96.     elif (
  97.         ((l1.cget('text') == 'O') or (l1.cget('text') == 'X')) and
  98.         ((l2.cget('text') == 'O') or (l2.cget('text') == 'X')) and
  99.         ((l3.cget('text') == 'O') or (l3.cget('text') == 'X')) and
  100.         ((l4.cget('text') == 'O') or (l4.cget('text') == 'X')) and
  101.         ((l5.cget('text') == 'O') or (l5.cget('text') == 'X')) and
  102.         ((l6.cget('text') == 'O') or (l6.cget('text') == 'X')) and
  103.         ((l7.cget('text') == 'O') or (l7.cget('text') == 'X')) and
  104.         ((l8.cget('text') == 'O') or (l8.cget('text') == 'X')) and
  105.         ((l9.cget('text') == 'O') or (l9.cget('text') == 'X'))
  106.     ):
  107.         show_winner('No one')
  108.  
  109.  
  110. # Show winner window
  111. def show_winner(winner):
  112.     messagebox.showinfo(title='Game is finished', message=f'{winner} has won the game. Congratulation')
  113.     root.destroy()
  114.  
  115.  
  116. # If pressed, change label to X and make buttons disappear
  117. def hide_button_x(button_x, button_o, label):
  118.     button_x.pack_forget()
  119.     button_o.pack_forget()
  120.     if label == l1:
  121.         label_text1.set('X')
  122.     elif label == l2:
  123.         label_text2.set('X')
  124.     elif label == l3:
  125.         label_text3.set('X')
  126.     elif label == l4:
  127.         label_text4.set('X')
  128.     elif label == l5:
  129.         label_text5.set('X')
  130.     elif label == l6:
  131.         label_text6.set('X')
  132.     elif label == l7:
  133.         label_text7.set('X')
  134.     elif label == l8:
  135.         label_text8.set('X')
  136.     elif label == l9:
  137.         label_text9.set('X')
  138.     is_won()
  139.  
  140.  
  141. # If pressed, change label to O and make buttons disappear
  142. def hide_button_o(button_x, button_o, label):
  143.     button_x.pack_forget()
  144.     button_o.pack_forget()
  145.     if label == l1:
  146.         label_text1.set('O')
  147.     elif label == l2:
  148.         label_text2.set('O')
  149.     elif label == l3:
  150.         label_text3.set('O')
  151.     elif label == l4:
  152.         label_text4.set('O')
  153.     elif label == l5:
  154.         label_text5.set('O')
  155.     elif label == l6:
  156.         label_text6.set('O')
  157.     elif label == l7:
  158.         label_text7.set('O')
  159.     elif label == l8:
  160.         label_text8.set('O')
  161.     elif label == l9:
  162.         label_text9.set('O')
  163.     is_won()
  164.  
  165.  
  166. root = Tk()
  167.  
  168.  
  169. # Menubar to Quit the game
  170. menuBar = Menu(root)
  171. root.config(menu=menuBar)
  172.  
  173. subMenuFile = Menu(menuBar, tearoff=0)
  174. menuBar.add_cascade(label='File', menu=subMenuFile)
  175. subMenuFile.add_command(label='Quit', command=quit_application)
  176.  
  177.  
  178. # Creating a 3x3 grid
  179. f1 = Frame(root)
  180. f1.grid(row=0, column=0)
  181. f2 = Frame(root)
  182. f2.grid(row=0, column=1)
  183. f3 = Frame(root)
  184. f3.grid(row=0, column=2)
  185. f4 = Frame(root)
  186. f4.grid(row=1, column=0)
  187. f5 = Frame(root)
  188. f5.grid(row=1, column=1)
  189. f6 = Frame(root)
  190. f6.grid(row=1, column=2)
  191. f7 = Frame(root)
  192. f7.grid(row=2, column=0)
  193. f8 = Frame(root)
  194. f8.grid(row=2, column=1)
  195. f9 = Frame(root)
  196. f9.grid(row=2, column=2)
  197.  
  198.  
  199. # Label to show X or O if clicked, ? if unselected
  200. label_text1 = StringVar()
  201. label_text1.set('?')
  202. label_text2 = StringVar()
  203. label_text2.set('?')
  204. label_text3 = StringVar()
  205. label_text3.set('?')
  206. label_text4 = StringVar()
  207. label_text4.set('?')
  208. label_text5 = StringVar()
  209. label_text5.set('?')
  210. label_text6 = StringVar()
  211. label_text6.set('?')
  212. label_text7 = StringVar()
  213. label_text7.set('?')
  214. label_text8 = StringVar()
  215. label_text8.set('?')
  216. label_text9 = StringVar()
  217. label_text9.set('?')
  218.  
  219.  
  220. # Pack label to grid, above buttons
  221. l1 = Label(f1, textvariable=label_text1)
  222. l1.pack(side='top')
  223. l2 = Label(f2, textvariable=label_text2)
  224. l2.pack(side='top')
  225. l3 = Label(f3, textvariable=label_text3)
  226. l3.pack(side='top')
  227. l4 = Label(f4, textvariable=label_text4)
  228. l4.pack(side='top')
  229. l5 = Label(f5, textvariable=label_text5)
  230. l5.pack(side='top')
  231. l6 = Label(f6, textvariable=label_text6)
  232. l6.pack(side='top')
  233. l7 = Label(f7, textvariable=label_text7)
  234. l7.pack(side='top')
  235. l8 = Label(f8, textvariable=label_text8)
  236. l8.pack(side='top')
  237. l9 = Label(f9, textvariable=label_text9)
  238. l9.pack(side='top')
  239.  
  240.  
  241. # Buttons to change label to X in grid
  242. buttonX00 = Button(f1, text='X', command=lambda: hide_button_x(buttonX00, buttonO00, l1))
  243. buttonX00.pack(side='left')
  244.  
  245. buttonX01 = Button(f2, text='X', command=lambda: hide_button_x(buttonX01, buttonO01, l2))
  246. buttonX01.pack(side='left')
  247.  
  248. buttonX02 = Button(f3, text='X', command=lambda: hide_button_x(buttonX02, buttonO02, l3))
  249. buttonX02.pack(side='left')
  250.  
  251. buttonX10 = Button(f4, text='X', command=lambda: hide_button_x(buttonX10, buttonO10, l4))
  252. buttonX10.pack(side='left')
  253.  
  254. buttonX11 = Button(f5, text='X', command=lambda: hide_button_x(buttonX11, buttonO11, l5))
  255. buttonX11.pack(side='left')
  256.  
  257. buttonX12 = Button(f6, text='X', command=lambda: hide_button_x(buttonX12, buttonO12, l6))
  258. buttonX12.pack(side='left')
  259.  
  260. buttonX20 = Button(f7, text='X', command=lambda: hide_button_x(buttonX20, buttonO20, l7))
  261. buttonX20.pack(side='left')
  262.  
  263. buttonX21 = Button(f8, text='X', command=lambda: hide_button_x(buttonX21, buttonO21, l8))
  264. buttonX21.pack(side='left')
  265.  
  266. buttonX22 = Button(f9, text='X', command=lambda: hide_button_x(buttonX22, buttonO22, l9))
  267. buttonX22.pack(side='left')
  268.  
  269.  
  270. # Buttons to chance label to O in grid
  271. buttonO00 = Button(f1, text='O', command=lambda: hide_button_o(buttonX00, buttonO00, l1), state='disabled')
  272. buttonO00.pack(side='left')
  273.  
  274. buttonO01 = Button(f2, text='O', command=lambda: hide_button_o(buttonX01, buttonO01, l2), state='disabled')
  275. buttonO01.pack(side='left')
  276.  
  277. buttonO02 = Button(f3, text='O', command=lambda: hide_button_o(buttonX02, buttonO02, l3), state='disabled')
  278. buttonO02.pack(side='left')
  279.  
  280. buttonO10 = Button(f4, text='O', command=lambda: hide_button_o(buttonX10, buttonO10, l4), state='disabled')
  281. buttonO10.pack(side='left')
  282.  
  283. buttonO11 = Button(f5, text='O', command=lambda: hide_button_o(buttonX11, buttonO11, l5), state='disabled')
  284. buttonO11.pack(side='left')
  285.  
  286. buttonO12 = Button(f6, text='O', command=lambda: hide_button_o(buttonX12, buttonO12, l6), state='disabled')
  287. buttonO12.pack(side='left')
  288.  
  289. buttonO20 = Button(f7, text='O', command=lambda: hide_button_o(buttonX20, buttonO20, l7), state='disabled')
  290. buttonO20.pack(side='left')
  291.  
  292. buttonO21 = Button(f8, text='O', command=lambda: hide_button_o(buttonX21, buttonO21, l8), state='disabled')
  293. buttonO21.pack(side='left')
  294.  
  295. buttonO22 = Button(f9, text='O', command=lambda: hide_button_o(buttonX22, buttonO22, l9), state='disabled')
  296. buttonO22.pack(side='left')
  297.  
  298. # Create the window
  299. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment