Проблемы с логикой pygame
Есть следующий код
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and x > (left_line + (width / 2)) \
and not keys[pygame.K_UP] and not keys[pygame.K_DOWN]:
x -= speed
if keys[pygame.K_RIGHT] and x < (right_line - (width * 2 - width / 2)) \
and not keys[pygame.K_UP] and not keys[pygame.K_DOWN]:
x += speed
if keys[pygame.K_UP] and y > ((res_y - res_y) + 10):
if keys[pygame.K_SPACE]:
y -= speed + 6
nitro = True
else:
y -= speed
nitro = False
Проблема заключается в том , что когда нажаты одновременно клавиши K_UP, K_SPACE и K_RIGHT то срабатывает условие
if keys[pygame.K_SPACE]:
y -= speed + 6
nitro = True
Если нажата просто K_UP и K_SPACE , то условие тоже срабатывает как нужно
Но когда нажаты клавиши K_UP,K_SPACE и K_LEFT условие не срабатывает
Не могу понять из за чего
Даже если делаю вот так
if keys[pygame.K_UP] and y > ((res_y - res_y) + 10):
if keys[pygame.K_SPACE] and keys[pygame.K_LEFT]:
y -= speed + 6
nitro = True
elif keys[pygame.K_SPACE] and keys[pygame.K_RIGHT]:
y -= speed + 6
nitro = True
elif keys[pygame.K_SPACE]:
y -= speed + 6
nitro = True
else:
y -= speed
nitro = False
Срабатывает все кроме условия с K_LEFT
Если вместо K_LEFT использовать любую другую клавишу , то все работает
Ответы (2 шт):
Автор решения: shalor1k
→ Ссылка
Вы пробовали сделать так?
if keys[pygame.K_UP] and keys[pygame.K_LEFT] and keys[pygame.K_SPACE]:
y -= speed + 6
nitro = True
Автор решения: SlaerWay
→ Ссылка
Проблема решена , все было из за клавиатуры , которая почему то только с клавишей K_LEFT не может обработать больше двух нажатий одновременно