2016-01-04 2 views
2

Я пишу код в Pygame, где пользователь может удерживать несколько клавиш одновременно, однако я испытываю какое-то странное поведение с помощью следующей строки кода:выпуск с Pygame и проведение нескольких ключей

print(pygame.key.get_pressed()[273:277]) 

Цель этой строки - определить, какие клавиши со стрелками удерживаются в данный момент (используется этот диапазон, поскольку элементы pygame.key.get_pressed() с позиций [273:277] соответствуют 4 клавишам со стрелками).

Когда я нажимаю любую из 4 клавиш со стрелками по отдельности, она печатается правильно, но я считаю, что если я удерживаю более двух клавиш со стрелками одновременно, некоторые клавиши перестают появляться. Например, удерживание «Вверх», «Вправо», а затем нажатие «Влево», похоже, ничего не делает

Сначала я подумал, что, возможно, моя клавиатура не смогла обнаружить более двух нажатий клавиш одновременно, но я не знаю Думаю, это то, что происходит, поскольку я заметил, что если бы я держал Вверх и Вниз, то нажал налево, он не зарегистрировал бы, что я держал Левых. Однако, если бы я держал Up и Down, затем нажал Right, он зарегистрировал бы третью кнопку нажатием.

Любая помощь приветствуется, спасибо!

ответ

0

На самом деле, это ваша клавиатура на работе.

Хорошо известно игровым дизайнерам, есть комбинации нажатий клавиш, которые будут работать, а некоторые не будут. Согласно этому link, в их игре есть несколько ошибок, связанных с комбинацией клавиш, которые они использовали для стрельбы оружием и перемещения танка. Лучше всего использовать более узнаваемые ключи, если вы можете или просто найти комбинации ключей, которые будут работать, в этом случае это будет 4 раза 4 раза 4 раза 4 по крайней мере 256 комбинаций, которые вы можете пройти ... Я рекомендую создавать программа для этого.

:
0

Попробуйте использовать событие keyup/keydown и вместо этого сохраните переменные состояния. if event.type == KEYUP: if event.key == (insert key id here): uparrow_pressed = False elif event.type == KEYDOWN: if event.key == (insert key id here): uparrow_pressed = True

+0

Он должен быть как 'uparrow_pressed = True' для' KEYDOWN', так и 'uparrow_pressed = False' для' KEYUP' – furas

+0

Извините im на мобильном устройстве и его трудно ввести код и отформатировать его должным образом. – Oisin

+0

Это похоже на работу dosnt, так как это было на самом деле тем, что я пытался вначале, используя KEYDOWN, чтобы проверить, когда клавиши были нажаты, и я использовал KEYUP, чтобы увидеть, когда они были выпущены. Но когда я тестировал эту версию кода, у меня были те же результаты, что и описанные выше. Я подумал, может быть, я делал что-то неправильно или делал то, что мне не было, поэтому я написал эту строку кода, как показано выше, чтобы попытаться добраться до корня проблемы, но меня встретили только с такими же запутанными результатами , –

Смежные вопросы