Соглашение о ключах Pygame

#python #pygame

#python #pygame

Вопрос:

Я хочу использовать клавиши w a s d для перемещения, а не клавиши со стрелками, но я не могу понять, как это сделать со следующим фрагментом кода. Я хочу заменить pygame.KEYDOWN на кнопку для s, но я не могу понять, как это сделать.

 if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_LEFT:
        Pacman.changespeed(-30, 0)
    if event.key == pygame.K_RIGHT:
        Pacman.changespeed(30, 0)
    if event.key == pygame.K_UP:
        Pacman.changespeed(0, -30)
    if event.key == pygame.K_DOWN:
        Pacman.changespeed(0, 30)
  

Комментарии:

1. Я предлагаю использовать keys = pygame.key.get_pressed() внутри основного цикла, а затем обращаться к клавишам следующим образом: if keys[pygame.K_yourkey]: do_stuff() где yourkey может быть любой клавишей на клавиатуре, например w , или a

Ответ №1:

Вам не нужно изменять тип события. w, a, s, dпредставлены pygame.K_w , pygame.K_a , pygame.K_s и pygame.K_d , соответственно, но тип события по-прежнему pygame.KEYDOWN :

 if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_d:
        Pacman.changespeed(-30, 0)
    if event.key == pygame.K_a:
        Pacman.changespeed(30, 0)
    if event.key == pygame.K_w:
        Pacman.changespeed(0, -30)
    if event.key == pygame.K_s:
        Pacman.changespeed(0, 30)
  

Примечание: KEYDOWN означает не клавишу «вниз», а то, что клавиша нажата. KEYDOWN Событие происходит при нажатии клавиши, а KEYUP событие происходит при отпускании клавиши. См pygame.event . И pygame.key .