Python: проблемы с нажатием клавиш для работы - PullRequest
0 голосов
/ 03 марта 2019

Я играю в игру с 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...