Как переместить два изображения с помощью клавиш клавиатуры одновременно?

#python #tkinter #tkinter-canvas

#питон #tkinter #tkinter-холст #python #tkinter-canvas

Вопрос:

Приведенный ниже мой код относится только к началу игры, и я могу перемещать только одно изображение за раз. Как мне изменить его, чтобы я мог перемещать оба, один с помощью клавиш со стрелками, а другой с помощью клавиш WASD? Мне нужно только переместить его горизонтально.

 from tkinter import *
import threading

root = Tk()
root.title('Plane Wars Blitz')
root.geometry("1200x800")

w = 1200
h = 800
x = w/2
y = h/2

my_canvas = Canvas(root,width = w,height = h, bg = "light blue")
my_canvas.pack(pady=20)

ship1=PhotoImage(file="shipup.png")
ship2=PhotoImage(file="shipdown.png")

ship1image = my_canvas.create_image(600,700,image=ship1)
ship2image = my_canvas.create_image(600,100,image=ship2)

def left1(event):
    x = -20
    y = 0
    my_canvas.move(ship1image,x,y)

def right1(event):
    x = 20
    y = 0
    my_canvas.move(ship1image,x,y)

def left2(event):
    x = -20
    y = 0
    my_canvas.move(ship2image,x,y)

def right2(event):
    x = 20
    y = 0
    my_canvas.move(ship2image,x,y)


root.bind("<Left>",left1)
root.bind("<Right>",right1)
root.bind("<a>",left2)
root.bind("<s>",right2)
    

root.mainloop() 
  

Ответ №1:

У меня нет для вас кода, но идея.

  1. Привязать нажатие клавиши, освобождение клавиши ко всем клавишам, таким как <Left>, <Right>, <a>, <s>
  2. Обратный вызов для всей привязки только для записи нажатых или отпущенных клавиш и некоторых других требуемых состояний.
  3. Синхронизация для сканирования состояния всех клавиш, чтобы решить, как насчет движения.