Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- Block1 = [0, 0, 0, 0]
- Block2 = [0, 0, 0, 0]
- Block3 = [0, 0, 0, 0]
- Block4 = [0, 0, 0, 0]
- blocks = [Block1, Block2, Block3, Block4]
- Blockt1 = [Block1.copy(), Block2.copy(), Block3.copy(), Block4.copy()]
- inducerlist = [0, 1, 2, 3]
- #Succesful: Revert, display, combine, reposition
- #not combining random numbers
- def is_FULL():
- flag = True
- for i in range(len(blocks)):
- for j in blocks[i]:
- if j == 0:
- flag = False
- return flag
- def spawn_number():
- global blocks
- global Blockt1
- if is_FULL() is False:
- random_row = random.choice(inducerlist)
- random_col = random.choice(inducerlist)
- print(random_row, random_col)
- if Blockt1[random_row][random_col] == 0:
- Blockt1[random_row][random_col] = 2
- blocks[random_row][random_col] = 2
- print(random_row, random_col)
- else:
- spawn_number()
- else:
- exit(0)
- def display_board():
- for i in range(len(blocks)):
- for j in blocks[i]:
- print(f"{j}", end = " ")
- print()
- def repositionBoard():
- global action
- Blockt1 = [Block1.copy(), Block2.copy(), Block3.copy(), Block4.copy()]
- if action == ('w' or 'W'):
- Block1[:] = [Blockt1[3][0], Blockt1[2][0], Blockt1[1][0], Blockt1[0][0]]
- Block2[:] = [Blockt1[3][1], Blockt1[2][1], Blockt1[1][1], Blockt1[0][1]]
- Block3[:] = [Blockt1[3][2], Blockt1[2][2], Blockt1[1][2], Blockt1[0][2]]
- Block4[:] = [Blockt1[3][3], Blockt1[2][3], Blockt1[1][3], Blockt1[0][3]]
- blocks[:] = [Block1, Block2, Block3, Block4]
- elif action == ('s' or 'S'):
- Block1[:] = [Blockt1[0][0], Blockt1[1][0], Blockt1[2][0], Blockt1[3][0]]
- Block2[:] = [Blockt1[0][1], Blockt1[1][1], Blockt1[2][1], Blockt1[3][1]]
- Block3[:] = [Blockt1[0][2], Blockt1[1][2], Blockt1[2][2], Blockt1[3][2]]
- Block4[:] = [Blockt1[0][3], Blockt1[1][3], Blockt1[2][3], Blockt1[3][3]]
- blocks[:] = [Block1, Block2, Block3, Block4]
- elif action == ('d' or 'D'):
- Block1[:] = [Blockt1[0][0], Blockt1[0][1], Blockt1[0][2], Blockt1[0][3]]
- Block2[:] = [Blockt1[1][0], Blockt1[1][1], Blockt1[1][2], Blockt1[1][3]]
- Block3[:] = [Blockt1[2][0], Blockt1[2][1], Blockt1[2][2], Blockt1[2][3]]
- Block4[:] = [Blockt1[3][0], Blockt1[3][1], Blockt1[3][2], Blockt1[3][3]]
- blocks[:] = [Block1, Block2, Block3, Block4]
- elif action == ('a' or 'A'):
- Block1[:] = [Blockt1[0][3], Blockt1[0][2], Blockt1[0][1], Blockt1[0][0]]
- Block2[:] = [Blockt1[1][3], Blockt1[1][2], Blockt1[1][1], Blockt1[1][0]]
- Block3[:] = [Blockt1[2][3], Blockt1[2][2], Blockt1[2][1], Blockt1[2][0]]
- Block4[:] = [Blockt1[3][3], Blockt1[3][2], Blockt1[3][1], Blockt1[3][0]]
- blocks[:] = [Block1, Block2, Block3, Block4]
- def revertBoard():
- global action
- global Blockt1
- if action == ('w' or 'W'):
- Block1[:] = [Blockt1[0][3], Blockt1[1][3], Blockt1[2][3], Blockt1[3][3]]
- Block2[:] = [Blockt1[0][2], Blockt1[1][2], Blockt1[2][2], Blockt1[3][2]]
- Block3[:] = [Blockt1[0][1], Blockt1[1][1], Blockt1[2][1], Blockt1[3][1]]
- Block4[:] = [Blockt1[0][0], Blockt1[1][0], Blockt1[2][0], Blockt1[3][0]]
- blocks[:] = [Block1, Block2, Block3, Block4]
- elif action == ('s' or 'S'):
- Block1[:] = [Blockt1[0][0], Blockt1[1][0], Blockt1[2][0], Blockt1[3][0]]
- Block2[:] = [Blockt1[0][1], Blockt1[1][1], Blockt1[2][1], Blockt1[3][1]]
- Block3[:] = [Blockt1[0][2], Blockt1[1][2], Blockt1[2][2], Blockt1[3][2]]
- Block4[:] = [Blockt1[0][3], Blockt1[1][3], Blockt1[2][3], Blockt1[3][3]]
- blocks[:] = [Block1, Block2, Block3, Block4]
- elif action == ('d' or 'D'):
- Block1[:] = [Blockt1[0][0], Blockt1[0][1], Blockt1[0][2], Blockt1[0][3]]
- Block2[:] = [Blockt1[1][0], Blockt1[1][1], Blockt1[1][2], Blockt1[1][3]]
- Block3[:] = [Blockt1[2][0], Blockt1[2][1], Blockt1[2][2], Blockt1[2][3]]
- Block4[:] = [Blockt1[3][0], Blockt1[3][1], Blockt1[3][2], Blockt1[3][3]]
- blocks[:] = [Block1, Block2, Block3, Block4]
- elif action == ('a' or 'A'):
- Block1[:] = [Blockt1[0][3], Blockt1[0][2], Blockt1[0][1], Blockt1[0][0]]
- Block2[:] = [Blockt1[1][3], Blockt1[1][2], Blockt1[1][1], Blockt1[1][0]]
- Block3[:] = [Blockt1[2][3], Blockt1[2][2], Blockt1[2][1], Blockt1[2][0]]
- Block4[:] = [Blockt1[3][3], Blockt1[3][2], Blockt1[3][1], Blockt1[3][0]]
- blocks[:] = [Block1, Block2, Block3, Block4]
- def reposition_Block1():
- global Blockt1
- Blockt1 = [Block1.copy(), Block2.copy(), Block3.copy(), Block4.copy()]
- for j in range(2):
- for i in reversed(range(0, 4)):
- if i == 3:
- if Blockt1[0][i] == 0:
- Blockt1[0][i] = Blockt1[0][i-1]
- Blockt1[0][i-1] = Blockt1[0][i-2]
- Blockt1[0][i-2] = Blockt1[0][i-3]
- Blockt1[0][i-3] = 0
- elif i == 2:
- if Blockt1[0][i] == 0:
- Blockt1[0][i] = Blockt1[0][i - 1]
- Blockt1[0][i - 1] = Blockt1[0][i - 2]
- Blockt1[0][i - 2] = 0
- elif i == 1:
- if Blockt1[0][i] == 0:
- Blockt1[0][i] = Blockt1[0][i - 1]
- Blockt1[0][i - 1] = 0
- def reposition_Block2():
- for j in range(2):
- for i in reversed(range(0, 4)):
- if i == 3:
- if Blockt1[1][i] == 0:
- Blockt1[1][i] = Blockt1[1][i-1]
- Blockt1[1][i-1] = Blockt1[1][i-2]
- Blockt1[1][i-2] = Blockt1[1][i-3]
- Blockt1[1][i-3] = 0
- elif i == 2:
- if Blockt1[1][i] == 0:
- Blockt1[1][i] = Blockt1[1][i - 1]
- Blockt1[1][i - 1] = Blockt1[1][i - 2]
- Blockt1[1][i - 2] = 0
- elif i == 1:
- if Blockt1[1][i] == 0:
- Blockt1[1][i] = Blockt1[1][i - 1]
- Blockt1[1][i - 1] = 0
- def reposition_Block3():
- for j in range(2):
- for i in reversed(range(0, 4)):
- if i == 3:
- if Blockt1[2][i] == 0:
- Blockt1[2][i] = Blockt1[2][i-1]
- Blockt1[2][i-1] = Blockt1[2][i-2]
- Blockt1[2][i-2] = Blockt1[2][i-3]
- Blockt1[2][i-3] = 0
- elif i == 2:
- if Blockt1[2][i] == 0:
- Blockt1[2][i] = Blockt1[2][i - 1]
- Blockt1[2][i - 1] = Blockt1[2][i - 2]
- Blockt1[2][i - 2] = 0
- elif i == 1:
- if Blockt1[2][i] == 0:
- Blockt1[2][i] = Blockt1[2][i - 1]
- Blockt1[2][i - 1] = 0
- def reposition_Block4():
- for j in range(2):
- for i in reversed(range(0, 4)):
- if i == 3:
- if Blockt1[3][i] == 0:
- Blockt1[3][i] = Blockt1[3][i-1]
- Blockt1[3][i-1] = Blockt1[3][i-2]
- Blockt1[3][i-2] = Blockt1[3][i-3]
- Blockt1[3][i-3] = 0
- elif i == 2:
- if Blockt1[3][i] == 0:
- Blockt1[3][i] = Blockt1[3][i - 1]
- Blockt1[3][i - 1] = Blockt1[3][i - 2]
- Blockt1[3][i - 2] = 0
- elif i == 1:
- if Blockt1[3][i] == 0:
- Blockt1[3][i] = Blockt1[3][i - 1]
- Blockt1[3][i - 1] = 0
- def reposition_blocks():
- reposition_Block1()
- Blockt1[:] = [Blockt1[0], Block2.copy(), Block3.copy(), Block4.copy()]
- reposition_Block2()
- Blockt1[:] = [Blockt1[0], Blockt1[1], Block3.copy(), Block4.copy()]
- reposition_Block3()
- Blockt1[:] = [Blockt1[0], Blockt1[1], Blockt1[2], Block4.copy()]
- reposition_Block4()
- def Block1_combine():
- global Blockt1
- for i in reversed(range(0, 4)):
- if i == 3:
- if (Blockt1[0][i] == Blockt1[0][i - 1]) and Blockt1[0][i] != 0:
- Blockt1[0][i] = Blockt1[0][i] + Blockt1[0][i - 1]
- Blockt1[0][i - 1] = Blockt1[0][i - 2]
- Blockt1[0][i - 2] = Blockt1[0][i - 3]
- Blockt1[0][i - 3] = 0
- elif i == 2:
- if (Blockt1[0][i] == Blockt1[0][i - 1]) and Blockt1[0][i] != 0:
- Blockt1[0][i] = Blockt1[0][i] + Blockt1[0][i - 1]
- Blockt1[0][i - 1] = Blockt1[0][i - 2]
- Blockt1[0][i - 2] = 0
- elif i == 1:
- if (Blockt1[0][i] == Blockt1[0][i - 1]) and Blockt1[0][i] != 0:
- Blockt1[0][i] = Blockt1[0][i] + Blockt1[0][i - 1]
- Blockt1[0][i - 1] = 0
- def Block2_combine():
- for i in reversed(range(0, 4)):
- if i == 3:
- if (Blockt1[1][i] == Blockt1[1][i - 1]) and Blockt1[1][i] != 0:
- Blockt1[1][i] = Blockt1[1][i] + Blockt1[1][i - 1]
- Blockt1[1][i - 1] = Blockt1[1][i - 2]
- Blockt1[1][i - 2] = Blockt1[1][i - 3]
- Blockt1[1][i - 3] = 0
- elif i == 2:
- if (Blockt1[1][i] == Blockt1[1][i - 1]) and Blockt1[1][i] != 0:
- Blockt1[1][i] = Blockt1[1][i] + Blockt1[1][i - 1]
- Blockt1[1][i - 1] = Blockt1[1][i - 2]
- Blockt1[1][i - 2] = 0
- elif i == 1:
- if (Blockt1[1][i] == Blockt1[1][i - 1]) and Blockt1[1][i] != 0:
- Blockt1[1][i] = Blockt1[1][i] + Blockt1[1][i - 1]
- Blockt1[1][i - 1] = 0
- def Block3_combine():
- for i in reversed(range(0, 4)):
- if i == 3:
- if (Blockt1[2][i] == Blockt1[2][i - 1]) and Blockt1[2][i] != 0:
- Blockt1[2][i] = Blockt1[2][i] + Blockt1[2][i - 1]
- Blockt1[2][i - 1] = Blockt1[2][i - 2]
- Blockt1[2][i - 2] = Blockt1[2][i - 3]
- Blockt1[2][i - 3] = 0
- elif i == 2:
- if (Blockt1[2][i] == Blockt1[2][i - 1]) and Blockt1[2][i] != 0:
- Blockt1[2][i] = Blockt1[2][i] + Blockt1[2][i - 1]
- Blockt1[2][i - 1] = Blockt1[2][i - 2]
- Blockt1[2][i - 2] = 0
- elif i == 1:
- if (Blockt1[2][i] == Blockt1[2][i - 1]) and Blockt1[2][i] != 0:
- Blockt1[2][i] = Blockt1[2][i] + Blockt1[2][i - 1]
- Blockt1[2][i - 1] = 0
- def Block4_combine():
- for i in reversed(range(0, 4)):
- if i == 3:
- if (Blockt1[3][i] == Blockt1[3][i - 1]) and Blockt1[3][i] != 0:
- Blockt1[3][i] = Blockt1[3][i] + Blockt1[3][i - 1]
- Blockt1[3][i - 1] = Blockt1[3][i - 2]
- Blockt1[3][i - 2] = Blockt1[3][i - 3]
- Blockt1[3][i - 3] = 0
- elif i == 2:
- if (Blockt1[3][i] == Blockt1[3][i - 1]) and Blockt1[3][i] != 0:
- Blockt1[3][i] = Blockt1[3][i] + Blockt1[3][i - 1]
- Blockt1[3][i - 1] = Blockt1[3][i - 2]
- Blockt1[3][i - 2] = 0
- elif i == 1:
- if (Blockt1[3][i] == Blockt1[3][i - 1]) and Blockt1[3][i] != 0:
- Blockt1[3][i] = Blockt1[3][i] + Blockt1[3][i - 1]
- Blockt1[3][i - 1] = 0
- def combine_blocks():
- Block1_combine()
- Blockt1[:] = [Blockt1[0], Blockt1[1].copy(), Blockt1[2].copy(), Blockt1[3].copy()]
- Block2_combine()
- Blockt1[:] = [Blockt1[0], Blockt1[1], Blockt1[2].copy(), Blockt1[3].copy()]
- Block3_combine()
- Blockt1[:] = [Blockt1[0], Blockt1[1].copy(), Blockt1[2], Blockt1[3].copy()]
- Block4_combine()
- blocks[:] = Blockt1
- spawn_number()
- while True:
- display_board()
- action = input()
- repositionBoard()
- reposition_blocks()
- combine_blocks()
- spawn_number()
- revertBoard()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement