Я играю в игру с 2-мя движущимися прямоугольниками, управляемыми нажатиями клавиш, w и s, стрелки вверх и вниз.Но я только заставляю одного из них двигаться (тот, который контролируется стрелками), несмотря на то, что у них одинаковый код и просто разные имена.Я попытался выяснить это, но безуспешно, поэтому мне действительно нужна помощь в перемещении второго (я также попробовал другие способы, которые я видел на этом сайте, например, keysym, но это тоже не сработало) Спасибо!
Код прямоугольника:
class Block:
def __init__(self, canvas, color, x1, y1):
self.canvas = canvas
self.id = canvas.create_rectangle(20, 10, 35, 90, fill = color)
self.x1 = x1
self.y1 = y1
self.canvas.move(self.id, self.x1, self.y1)
self.speed_1 = 0
self.speed_2 = 0
self.canvas.bind_all('<KeyPress-w>', self.turn_up_1) #Not working
self.canvas.bind_all('<KeyPress-s>', self.turn_down_1) #Not working
self.canvas.bind_all('<KeyPress-Up>', self.turn_up_2) #working
self.canvas.bind_all('<KeyPress-Down>', self.turn_down_2) #working
def turn_up_1(self, evt): #Not working
self.speed_1 = -3
def turn_down_1(self, evt): #Not working
self.speed_1 = 3
def draw_1(self):
self.canvas.move(self.id, 0, self.speed_1) #Not working
def turn_up_2(self, evt): #working
self.speed_2 = -3
def turn_down_2(self, evt): #working
self.speed_2 = 3
def draw_2(self):
self.canvas.move(self.id, 0, self.speed_2) #working
block1 = Block(canvas, 'blue', 0, 0)
block2 = Block(canvas, 'red', 940, 540)
Цикл:
while True:
block1.draw_1() #Not working
block2.draw_2() #Working
time.sleep(0.0333333333333333333333333333333333333333333333333333)
tk.update_idletasks()
tk.update()