Это:
Player.__init__
Player.move
tk.update()
time.sleep(0.01)
- это не то, как вы создаете экземпляр класса.Когда вы помещаете Player.__init__
, вы на самом деле не вызываете конструктор.Вы просто заявляете, что оно существует.То же самое с Player.move
.Вы должны вызвать метод.Замените эти две строки на:
playerOne = Player(canvas)
playerOne.move()
Теперь playerOne
является экземпляром класса Player
.
Помимо этого, у вас есть дополнительная проблема в конструкторе Player
,
def __init__(self, event):
self.player = self.canvas.create_rectangle(240, 240, 260, 260,
fill="blue", outline="dark blue")
Когда вы ссылаетесь на self.canvas
, self.canvas
отсутствует.Вы должны назначить его, прежде чем сможете его использовать.И вы, кажется, нигде не используете self.player
.Я не совсем уверен, что вы собираетесь с этим, но попробуйте что-то вроде этого:
def __init__(self, canvas):
self.canvas = canvas.create_rectangle(240, 240, 260, 260,
fill="blue", outline="dark blue")
А затем замените определение move
метода следующим:
def move(event=None):
if event == None:
return
if event.keysym == "Up" or event.keysym == "w":
canvas.move(1, 0, -5)
elif event.keysym == "Down" or event.keysym == "s":
canvas.move(1, 0, 5)
elif event.keysym == "Right" or event.keysym == "d":
canvas.move(1, 5, 0)
else:
canvas.move(1, -5, 0)
Определено вне вашего Player
класса.