Гравитация в консольном тетрисе и ООП
я новичок и решил написать самый простой тетрис в консоли, и столкнулся с проблемой ,которая как я понимаю связана с ООП, я могу написать гравитацию( функция при вызове должна сдвигать летящие фигуры на клетку вниз) которая будет учитывать каждую клетку, но это будет не тетрис, будут такие баги:

Вообщем я хочу понять как перейти от обработки каждой клетки к обработке фигур (гравитация и столкновения) Вот код , пока что особо ничего нет, только две функции , одна закрашивает пиксель по координатам , другая очищает. В моем код клетка , это два символа, экран хранится в списке списков. Код работает только в консоли из за cls||clear
import time
import os
screen = [[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."]]
defaltscreen = screen
def printscreen():
for line_words in screen:
for word in line_words:
print(word, end="")
print("\n", end="")
def pixelfill(x, y):
stroka = screen[- y]
stroka[x * 2 - 2] = "["
stroka[x * 2 - 1] = "]"
os.system("cls||clear")
printscreen()
def pixelclear(x, y):
stroka = screen[- y]
stroka[x * 2 - 2] = "."
stroka[x * 2 - 1] = "."
os.system("cls||clear")
printscreen()