Гравитация в консольном тетрисе и ООП

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

Вообщем я хочу понять как перейти от обработки каждой клетки к обработке фигур (гравитация и столкновения) Вот код , пока что особо ничего нет, только две функции , одна закрашивает пиксель по координатам , другая очищает. В моем код клетка , это два символа, экран хранится в списке списков. Код работает только в консоли из за 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()

Ответы (0 шт):