Я часто использую такую возможность в своих проектах pygame.
Основа этого - установить для переменной значение True, если клавиша нажата, и false, если она отпущена. Когда вы вызываете такую функцию, как move()
, вы проверяете, являются ли переменные движения True или False.
Если вы одновременно нажмете стрелки вправо и влево, движения не будет.
Это лишь часть кода, который я использую. Поскольку вы также используете вверх и вниз, вам нужно просто добавить больше проверок событий для вверх и вниз, и код должен быть подходящим для go.
Код:
running = True
directions = {"right": False, "left": False}
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
directions['right'] = True
elif event.key == pygame.K_LEFT:
directions['left'] = True
if event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT:
directions['right'] = False
elif event.key == pygame.K_LEFT:
directions['left'] = False
if directions['right']:
x += 3
if directions['left']:
x -= 3