Forezz

2048

Aug 31st, 2019
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.92 KB | None | 0 0
  1. from tkinter import *
  2. from random import randint
  3.  
  4. root = Tk()
  5.  
  6. field = [[None] * 4 for i in range(4)]
  7.  
  8. for i in range(4):
  9.     Label(root, text = "        ", font = "Arial 48", bg = "yellow").grid(row = 4, column = i)
  10.     Label(root, text = " ", font = "Arial 48", bg = "red").grid(row = i, column = 4)
  11.    
  12.  
  13. def add_tile(event):
  14.     i = randint(0,3)
  15.     j = randint(0,3)
  16.     if not field[i][j]:
  17.         field[i][j] = Label(root, text = "2", font = "Arial 48", bg="lightblue")
  18.         field[i][j].grid(row = i, column = j)
  19.     else:
  20.         add_tile(event)
  21.        
  22. def left(event):
  23.     for i in range(4):
  24.         for j in range(1,4):
  25.             if field[i][j]:
  26.                 k = j - 1
  27.                 while k >= 0 and field[i][k] == None:
  28.                     k -= 1
  29.                 if k == -1:
  30.                     field[i][j], field[i][0] = field[i][0], field[i][j]
  31.                     field[i][0].grid(row = i, column = 0)
  32.                 elif field[i][j]["text"] == field[i][k]["text"]:
  33.                     field[i][k]["text"] = str(int(field[i][k]["text"]) * 2)
  34.                     field[i][j].destroy()
  35.                     field[i][j] = None
  36.                 else:
  37.                     field[i][j], field[i][k + 1] = field[i][k + 1], field[i][j]
  38.                     field[i][k + 1].grid(row = i, column = k + 1)
  39.            
  40.     add_tile(event)
  41.    
  42.    
  43. def top(event):
  44.     for j in range(4):
  45.         for i in range(1,4):
  46.             if field[i][j]:
  47.                 k = i - 1
  48.                 while k >= 0 and field[k][j] == None:
  49.                     k -= 1
  50.                 if k == -1:
  51.                     field[i][j], field[0][j] = field[0][j], field[i][j]
  52.                     field[0][j].grid(row = 0, column = j)
  53.                 elif field[i][j]["text"] == field[k][j]["text"]:
  54.                     field[k][j]["text"] = str(int(field[k][j]["text"]) * 2)
  55.                     field[i][j].destroy()
  56.                     field[i][j] = None
  57.                 else:
  58.                     field[i][j], field[k + 1][j] = field[k + 1][j], field[i][j]
  59.                     field[k + 1][j].grid(row = k + 1, column = j)
  60.            
  61.     add_tile(event)
  62.        
  63.        
  64. def right(event):
  65.     for i in range(4):
  66.         for j in range(4):
  67.             if field[i][3 - j]:
  68.                 k = 3 - j + 1
  69.                 while k <= 3 and field[i][k] == None:
  70.                     k += 1
  71.                 if k == 4:
  72.                     field[i][3 - j], field[i][3] = field[i][3], field[i][3 - j]
  73.                     field[i][3].grid(row = i, column = 3)
  74.                 elif field[i][3 - j]["text"] == field[i][k]["text"]:
  75.                     field[i][k]["text"] = str(int(field[i][k]["text"]) * 2)
  76.                     field[i][3 - j].destroy()
  77.                     field[i][3 - j] = None
  78.                 else:
  79.                     field[i][3 - j], field[i][k - 1] = field[i][k - 1], field[i][3 - j]
  80.                     field[i][k - 1].grid(row = i, column = k - 1)
  81.     add_tile(event)
  82. def down(event):
  83.     for j in range(4):
  84.         for i in range(4):
  85.             if field[3 - i][j]:
  86.                 k = 3 - i + 1
  87.                 while k <= 3 and field[k][j] == None:
  88.                     k += 1
  89.                 if k == 4:
  90.                     field[3 - i][j], field[3][j] = field[3][j], field[3 - i][j]
  91.                     field[3][j].grid(row = 3, column = j)
  92.                 elif field[3 - i][j]["text"] == field[k][j]["text"]:
  93.                     field[k][j]["text"] = str(int(field[k][j]["text"]) * 2)
  94.                     field[3 - i][j].destroy()
  95.                     field[3 - i][j] = None
  96.                 else:
  97.                     field[3 - i][j], field[k - 1][j] = field[k - 1][j], field[3 - i][j]
  98.                     field[k - 1][j].grid(row = k - 1, column = j)
  99.            
  100.     add_tile(event)
  101.  
  102.  
  103. root.bind("<Left>", left)
  104. root.bind("<Up>", top)
  105. root.bind("<Right>", right)
  106. root.bind("<Down>", down)
  107. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment