我想写一个代码,将显示从板上的俄罗斯方块的形状。我不断收到这个错误,不知道如何解决它:Python:显示从俄罗斯方块游戏的形状
TypeError: unbound method can_move() must be called with O_shape instance as first argument (got Board instance instead)
这里是我的代码:
class Board():
def __init__(self, win, width, height):
self.width = width
self.height = height
# create a canvas to draw the tetris shapes on
self.canvas = CanvasFrame(win, self.width * Block.BLOCK_SIZE + Block.OUTLINE_WIDTH,
self.height * Block.BLOCK_SIZE + Block.OUTLINE_WIDTH)
self.canvas.setBackground('light gray')
# create an empty dictionary
# currently we have no shapes on the board
self.grid = {}
def draw_shape(self, shape):
''' Parameters: shape - type: Shape
Return value: type: bool
draws the shape on the board if there is space for it
and returns True, otherwise it returns False
'''
if shape.can_move(self, 0, 0):
shape.draw(self.canvas)
return True
return False
class Tetris():
SHAPES = [I_shape, J_shape, L_shape, O_shape, S_shape, T_shape, Z_shape]
DIRECTION = {'Left':(-1, 0), 'Right':(1, 0), 'Down':(0, 1)}
BOARD_WIDTH = 10
BOARD_HEIGHT = 20
def __init__(self, win):
self.board = Board(win, self.BOARD_WIDTH, self.BOARD_HEIGHT)
self.win = win
self.delay = 1000 #ms
# sets up the keyboard events
# when a key is called the method key_pressed will be called
self.win.bind_all('<Key>', self.key_pressed)
# set the current shape to a random new shape
self.current_shape = self.create_new_shape()
# Draw the current_shape oan the board
self.board.draw_shape(self.current_shape)
def create_new_shape(self):
''' Return value: type: Shape
Create a random new shape that is centered
at y = 0 and x = int(self.BOARD_WIDTH/2)
return the shape
'''
# YOUR CODE HERE
y = 0
x = int(self.BOARD_WIDTH/2)
the_shape = random.choice(self.SHAPES)
return the_shape
我相信我的问题存在于self.board.draw_shape(self.current_shape)行的某处。我和一位朋友一起去了解了这个问题,他们暗示我在那里或者在create_new_shape函数中查找了我的问题,但我无法弄清楚如何使其工作。 – user1162643