8869
5698
from tkinter import * # графическая библиотека
from random import shuffle # перемешать список suffle(A)
column = 4 # столбцы
row = 4 # строки
btn = [] # список кнопок
playGround = [0] * 14
playGround += [2, 2]
shuffle(playGround)
def play(n): # функция
paCopy = playGround.copy()
if n in [7, 11]: # движение вправо
for j in range(3):
for i in range(14, -1, -1):
if playGround[i+1] == 0 and (i+1)%4 != 0:
playGround[i+1] = playGround[i]
playGround[i] = 0
for i in range(14, -1, -1):
if playGround[i+1] == playGround[i] and (i+1)%4 != 0:
playGround[i+1] = playGround[i] * 2
playGround[i] = 0
for i in range(14, -1, -1):
if playGround[i+1] == 0 and (i+1)%4 != 0:
playGround[i+1] = playGround[i]
playGround[i] = 0
elif n in [4, 8]: # движение влево
for j in range(3):
for i in range(1, 16):
if playGround[i-1] == 0 and (i)%4 != 0:
playGround[i-1] = playGround[i]
playGround[i] = 0
for i in range(1, 16):
if playGround[i-1] == playGround[i] and (i)%4 != 0:
playGround[i-1] = playGround[i] * 2
playGround[i] = 0
for i in range(1, 16):
if playGround[i-1] == 0 and (i)%4 != 0:
playGround[i-1] = playGround[i]
playGround[i] = 0
elif n in [1, 2]: # движение вверх
for j in range(3):
for i in range(4, 16):
if playGround[i-4] == 0:
playGround[i-4] = playGround[i]
playGround[i] = 0
for i in range(4, 16):
if playGround[i-4] == playGround[i]:
playGround[i-4] = playGround[i] * 2
playGround[i] = 0
for i in range(4, 16):
if playGround[i-4] == 0:
playGround[i-4] = playGround[i]
playGround[i] = 0
elif n in [13, 14]: # движение вниз
for j in range(3):
for i in range(11, -1, -1):
if playGround[i+4] == 0:
playGround[i+4] = playGround[i]
playGround[i] = 0
for i in range(11, -1, -1):
if playGround[i+4] == playGround[i]:
playGround[i+4] = playGround[i] * 2
playGround[i] = 0
for i in range(11, -1, -1):
if playGround[i+4] == 0:
playGround[i+4] = playGround[i]
playGround[i] = 0
else: return
if paCopy == playGround:
return
a = []
for i in range(16):
if playGround[i] == 0:
a += [i]
if len(a) != 0:
shuffle(a)
b = [2,2,2,4]
shuffle(b)
playGround[a[0]] = b[0]
for i in range(16):
btn[i].config(text = playGround[i] if playGround[i] != 0 else " ")
def kbd(event):
d = {'Up':1, 'Down':14, 'Left':4, 'Right':7}
play(d[event.keysym])
tk = Tk()
for i in range(row):
f = Frame()
f.pack(expand=YES, fill=BOTH)
for j in range(column):
n=i*column+j
btn += [Button(f, font =("mono", 16, "bold"), width = 4, height=2)]
btn[-1].pack(expand=YES, fill=BOTH, side=LEFT)
btn[-1].config(text = playGround[n] if playGround[n] != 0 else " ")
btn[-1].config(command=lambda n=n:play(n))
tk.bind('<Key>', kbd)
mainloop()
Ggv
from tkinter import * # графическая библиотека
from random import shuffle # перемешать список suffle(A)
column = 4 # столбцы
row = 4 # строки
btn = [] # список кнопок
playGround = [0] * 14
playGround += [2, 2]
shuffle(playGround)
def play(n): # функция
paCopy = playGround.copy()
if n in [7, 11]: # движение вправо
for j in range(3):
for i in range(14, -1, -1):
if playGround[i+1] == 0 and (i+1)%4 != 0:
playGround[i+1] = playGround[i]
playGround[i] = 0
for i in range(14, -1, -1):
if playGround[i+1] == playGround[i] and (i+1)%4 != 0:
playGround[i+1] = playGround[i] * 2
playGround[i] = 0
for i in range(14, -1, -1):
if playGround[i+1] == 0 and (i+1)%4 != 0:
playGround[i+1] = playGround[i]
playGround[i] = 0
elif n in [4, 8]: # движение влево
for j in range(3):
for i in range(1, 16):
if playGround[i-1] == 0 and (i)%4 != 0:
playGround[i-1] = playGround[i]
playGround[i] = 0
for i in range(1, 16):
if playGround[i-1] == playGround[i] and (i)%4 != 0:
playGround[i-1] = playGround[i] * 2
playGround[i] = 0
for i in range(1, 16):
if playGround[i-1] == 0 and (i)%4 != 0:
playGround[i-1] = playGround[i]
playGround[i] = 0
elif n in [1, 2]: # движение вверх
for j in range(3):
for i in range(4, 16):
if playGround[i-4] == 0:
playGround[i-4] = playGround[i]
playGround[i] = 0
for i in range(4, 16):
if playGround[i-4] == playGround[i]:
playGround[i-4] = playGround[i] * 2
playGround[i] = 0
for i in range(4, 16):
if playGround[i-4] == 0:
playGround[i-4] = playGround[i]
playGround[i] = 0
elif n in [13, 14]: # движение вниз
for j in range(3):
for i in range(11, -1, -1):
if playGround[i+4] == 0:
playGround[i+4] = playGround[i]
playGround[i] = 0
for i in range(11, -1, -1):
if playGround[i+4] == playGround[i]:
playGround[i+4] = playGround[i] * 2
playGround[i] = 0
for i in range(11, -1, -1):
if playGround[i+4] == 0:
playGround[i+4] = playGround[i]
playGround[i] = 0
else: return
if paCopy == playGround:
return
a = []
for i in range(16):
if playGround[i] == 0:
a += [i]
if len(a) != 0:
shuffle(a)
b = [2,2,2,4]
shuffle(b)
playGround[a[0]] = b[0]
for i in range(16):
btn[i].config(text = playGround[i] if playGround[i] != 0 else " ")
def kbd(event):
d = {'Up':1, 'Down':14, 'Left':4, 'Right':7}
if event.keysym in d:
play(d[event.keysym])
tk = Tk()
for i in range(row):
f = Frame()
f.pack(expand=YES, fill=BOTH)
for j in range(column):
n=i*column+j
btn += [Button(f, font =("mono", 16, "bold"), width = 4, height=2)]
btn[-1].pack(expand=YES, fill=BOTH, side=LEFT)
btn[-1].config(text = playGround[n] if playGround[n] != 0 else " ")
btn[-1].config(command=lambda n=n:play(n))
tk.bind('<Key>', kbd)
mainloop()
Ррп