Я делаю игру, в которой вы перемещаете персонажа с помощью клавиш со стрелками на клавиатуре. Поскольку мой ноутбук иногда думает, что я нажал клавишу дважды, я хотел убедиться, что программа дождалась, пока я не отпущу нажатую клавишу. Я использую метод key.get_pressed()
. Проблема в том, что когда я нажимаю клавишу, действие выполняется, но цикл, ожидающий отпускания ключей, продолжает работать, потому что событие get_pressed()
считает, что я все еще нажал кнопку. Вот код:pygame get_pressed остается true
while ChangeRun == False: # main game loop
for Event in pygame.event.get():
if Event == QUIT:
pygame.quit()
sys.exit()
BUTTON = -1
if pygame.key.get_pressed()[K_UP]:
BUTTON = 0
elif pygame.key.get_pressed()[K_DOWN]:
BUTTON = 1
elif pygame.key.get_pressed()[K_RIGHT]:
BUTTON = 2
elif pygame.key.get_pressed()[K_LEFT]:
BUTTON = 3
elif pygame.key.get_pressed()[K_p]:
BUTTON = 4
elif pygame.key.get_pressed()[K_RETURN]:
BUTTON = 5
if BUTTON == 4 or BUTTON == 5:
Execute()
elif BUTTON != -1:
SetDirection()
DisplaySurface() # Displays all data on screen
# it works until these rows:
while pygame.key.get_pressed()[K_UP] or pygame.key.get_pressed()[K_DOWN] or pygame.key.get_pressed()[K_LEFT] or pygame.key.get_pressed()[K_RIGHT] or pygame.key.get_pressed()[K_p] or pygame.key.get_pressed()[K_RETURN]:
pass # Keeps running because the get_pressed() method thinks one of the buttons is still pressed...
Я проверил, что было неправильно, печатая все get_pressed()
значения. Он показал, что нажатая кнопка продолжает возвращаться, даже когда я ее выпустил.
Надеюсь, это ясно и что кто-то может помочь.
Итак, вы хотите, чтобы ваш персонаж двигался только один раз каждый раз, когда вы нажимаете и отпускаете ключ? – sshashank124
Почему бы вам не получить ключ, нажатый в 'for Event in pygame.event.get', намного легче для меня, но я согласен с Dominic, вы каждый раз устанавливаете кнопку' -1', поэтому должны работать , – KodyVanRy