Python 3 Turtle — одновременное нажатиеPython

Программы на Python
Ответить
Anonymous
 Python 3 Turtle — одновременное нажатие

Сообщение Anonymous »

Поэтому я следовал инструкциям здесь о том, как одновременно выполнить два ввода для выполнения функции, отличной от нажатия каждой клавиши по отдельности.
Мой код не хочет работать, а работает только функция, которая требует двух нажатий клавиш ('w', 'a'): upLeft, и я не могу понять, почему. Я протестировал свою функцию в предоставленном решении, и она сработала. Я не вижу каких-либо ощутимых различий между тем, что у меня есть здесь, и тем, что представлено по ссылке.

Код: Выделить всё

import turtle
import time

# Draw initial screen
wn = turtle.Screen()
wn.title("Cool Game Bro")
wn.bgcolor("grey")
wn.setup(width=800, height=600)
wn.tracer(0)

# main player character
character = turtle.Turtle()
character.speed(0)
character.shape("circle")
character.color("yellow")
character.penup()
character.goto(0, 0)

def process_events():
events = tuple(sorted(key_events))

if events and events in key_event_handlers:
(key_event_handlers[events])()

key_events.clear()

wn.ontimer(process_events, 200)

def Up():
key_events.add('w')
def Left():
key_events.add('a')
def Down():
key_events.add('s')
def Right():
key_events.add('d')

def charUp():
y = character.ycor()
y += 10
character.sety(y)

def charLeft():
x = character.xcor()
x -= 10
character.setx(x)

def charRight():
x = character.xcor()
x += 10
character.setx(x)

def charDown():
y = character.ycor()
y -= 10
character.sety(y)

def upLeft():
y = character.ycor()
y+=10
character.sety(y)
x = character.xcor()
x -=10
character.setx(x)

key_event_handlers = { \
('w',): charUp,\
('a',): charLeft,\
('d',): charRight,\
('s',): charDown,\
('w', 'a'): upLeft,\
}

key_events = set()

wn.onkeypress(Up, 'w')
wn.onkeypress(Left, 'a')
wn.onkeypress(Right, 'd')
wn.onkeypress(Down, 's')

wn.listen()
process_events()

while True:
wn.update()
Благодарю за помощь!

Подробнее здесь: https://stackoverflow.com/questions/676 ... eous-press
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»