Есть ли способ получить несколько входов одновременно с помощью модуля черепахи - PullRequest
0 голосов
/ 06 августа 2020

поэтому я последовал руководству по изучению черепахи, затем сделал игру в пинг-понг для 2 игроков, но, похоже, я не могу заставить двух игроков двигаться одновременно с помощью listen ()

window.listen()
window.onkeypress(player_1_move_up, 'w')
window.onkeypress(player_1_move_down, 's')
window.onkeypress(player_2_move_up, "Up")
window.onkeypress(player_2_move_down, "Down")

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Вы можете проверить этот пример, который отлично работает: https://trinket.io/python/16e316e69f

Глядя на код, я заметил эту строку, вы тоже используете Screen?

# Create a variable `screen`, a Screen() object, that will handle keys
screen = turtle.Screen()

А позже они используют onkey вместо onkeypress , это может быть так:

# Tell the program when to move Tina
screen.onkey(tina_left, 'Left')
screen.onkey(tina_right, 'Right')
screen.onkey(tina_forward, 'Up')
screen.onkey(tina_backward, 'Down')

# Tell the program when to move Tommy
screen.onkey(tommy_left, 'a')
screen.onkey(tommy_right, 'd')
screen.onkey(tommy_forward, 'w')
screen.onkey(tommy_backward, 's')
0 голосов
/ 06 августа 2020

Я думаю, что у вас все перевернуто, поэтому, когда вы звоните listen(), onkeypress() еще не был зарегистрирован программой. Вместо этого вы можете попробовать следующее:

window.onkeypress(player_1_move_up, 'w')
window.onkeypress(player_1_move_down, 's')
window.onkeypress(player_2_move_up, "Up")
window.onkeypress(player_2_move_down, "Down")
window.listen()

Если вам нужно активировать 2 функции одновременно, вы можете использовать функцию-оболочку:

def all_move_up(): 
    player_1_move_up() 
    player_2_move_up() 
    
window.onkeypress(all_move_up, 'w')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...