#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:
У меня нет для вас кода, но идея.
- Привязать нажатие клавиши, освобождение клавиши ко всем клавишам, таким как <Left>, <Right>, <a>, <s>
- Обратный вызов для всей привязки только для записи нажатых или отпущенных клавиш и некоторых других требуемых состояний.
- Синхронизация для сканирования состояния всех клавиш, чтобы решить, как насчет движения.