#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
.