我想寫一個代碼,將顯示從板上的俄羅斯方塊的形狀。我不斷收到這個錯誤,不知道如何解決它: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