У вас есть две проблемы. Во-первых, это проблема масштаба, на которую указывали другие. Другая проблема заключается в том, что вы никогда не создаете экземпляр формы, а возвращаете ссылку на класс. Во-первых, давайте создадим форму:
y = 0
x = int(self.BOARD_WIDTH/2)
self.shapes = [O_shape,
T_shape,
L_shape,
J_shape,
Z_shape,
S_shape,
I_shape]
the_shape = random.choice(self.shapes)
return the_shape(Point(x, y))
Теперь создается экземпляр формы с правильной отправной точкой. Далее сфера.
self.current_shape = self.create_new_shape()
# Draw the current_shape oan the board
self.board.draw_shape(self.current_shape)
Когда вы ссылаетесь на фрагменты данных в одном и том же объекте (здесь на плате), вам необходимо получить к ним доступ через себя. вещь . Итак, мы хотим получить доступ к доске и указать форму для рисования. Мы делаем это с помощью self.board , затем добавляем метод draw_shape . Наконец, нам нужно сказать, что рисовать. the_shape находится вне области видимости, он существует только в методе create_new_shape . Этот метод возвращает форму, которую мы присвоили self.current_shape . Поэтому, если вы хотите снова обратиться к этой фигуре в любом месте внутри класса, используйте self.current_shape .