Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- from random import randint
- root = Tk()
- field = [[None] * 4 for i in range(4)]
- for i in range(4):
- Label(root, text = " ", font = "Arial 48", bg = "yellow").grid(row = 4, column = i)
- Label(root, text = " ", font = "Arial 48", bg = "red").grid(row = i, column = 4)
- def add_tile(event):
- i = randint(0,3)
- j = randint(0,3)
- if not field[i][j]:
- field[i][j] = Label(root, text = "2", font = "Arial 48", bg="lightblue")
- field[i][j].grid(row = i, column = j)
- else:
- add_tile(event)
- def left(event):
- for i in range(4):
- for j in range(1,4):
- if field[i][j]:
- k = j - 1
- while k >= 0 and field[i][k] == None:
- k -= 1
- if k == -1:
- field[i][j], field[i][0] = field[i][0], field[i][j]
- field[i][0].grid(row = i, column = 0)
- elif field[i][j]["text"] == field[i][k]["text"]:
- field[i][k]["text"] = str(int(field[i][k]["text"]) * 2)
- field[i][j].destroy()
- field[i][j] = None
- else:
- field[i][j], field[i][k + 1] = field[i][k + 1], field[i][j]
- field[i][k + 1].grid(row = i, column = k + 1)
- add_tile(event)
- def top(event):
- for j in range(4):
- for i in range(1,4):
- if field[i][j]:
- k = i - 1
- while k >= 0 and field[k][j] == None:
- k -= 1
- if k == -1:
- field[i][j], field[0][j] = field[0][j], field[i][j]
- field[0][j].grid(row = 0, column = j)
- elif field[i][j]["text"] == field[k][j]["text"]:
- field[k][j]["text"] = str(int(field[k][j]["text"]) * 2)
- field[i][j].destroy()
- field[i][j] = None
- else:
- field[i][j], field[k + 1][j] = field[k + 1][j], field[i][j]
- field[k + 1][j].grid(row = k + 1, column = j)
- add_tile(event)
- def right(event):
- for i in range(4):
- for j in range(4):
- if field[i][3 - j]:
- k = 3 - j + 1
- while k <= 3 and field[i][k] == None:
- k += 1
- if k == 4:
- field[i][3 - j], field[i][3] = field[i][3], field[i][3 - j]
- field[i][3].grid(row = i, column = 3)
- elif field[i][3 - j]["text"] == field[i][k]["text"]:
- field[i][k]["text"] = str(int(field[i][k]["text"]) * 2)
- field[i][3 - j].destroy()
- field[i][3 - j] = None
- else:
- field[i][3 - j], field[i][k - 1] = field[i][k - 1], field[i][3 - j]
- field[i][k - 1].grid(row = i, column = k - 1)
- add_tile(event)
- def down(event):
- for j in range(4):
- for i in range(4):
- if field[3 - i][j]:
- k = 3 - i + 1
- while k <= 3 and field[k][j] == None:
- k += 1
- if k == 4:
- field[3 - i][j], field[3][j] = field[3][j], field[3 - i][j]
- field[3][j].grid(row = 3, column = j)
- elif field[3 - i][j]["text"] == field[k][j]["text"]:
- field[k][j]["text"] = str(int(field[k][j]["text"]) * 2)
- field[3 - i][j].destroy()
- field[3 - i][j] = None
- else:
- field[3 - i][j], field[k - 1][j] = field[k - 1][j], field[3 - i][j]
- field[k - 1][j].grid(row = k - 1, column = j)
- add_tile(event)
- root.bind("<Left>", left)
- root.bind("<Up>", top)
- root.bind("<Right>", right)
- root.bind("<Down>", down)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment