Так что недавно я работал над проектом с pygame, и я начал работать над своим персонажем, которым вы могли управлять. Плеер может перемещаться с помощью клавиш со стрелками, но не может останавливаться, когда клавиши не нажимаются. Мое решение было для pygame протестировать, если пользователь не нажимает влево, вправо, вверх или вниз, тогда скорость игроков будет равна нулю. Но по какой-то причине, когда у меня нет и клавиши нажали, скорость игрока все равно не прекращается. Мне интересно, что не так с моим утверждением if. Спасибо, что прочитали это и помогли!pygame - Входы ключа не работают, если не синтаксис
если заявление кода заключается в следующем:
if event.key != K_LEFT and event.key != K_RIGHT and event.key != K_DOWN and event.key != K_UP:
playerSpeed = 0
Это полный код Movment:
#Keypress-player movement
elif event.type == KEYDOWN:
if event.key != K_LEFT and event.key != K_RIGHT and event.key != K_DOWN and event.key != K_UP:
playerSpeed = 0
if event.key == K_LEFT:
direction = LEFT
playerSpeed = .2
elif event.key == K_RIGHT:
direction = RIGHT
playerSpeed = .2
elif event.key == K_DOWN:
direction = DOWN
playerSpeed = .2
elif event.key == K_UP:
playerSpeed = .2
direction = UP
if direction == UP:
if canMoveUp == 'true':
newPlayer = {'x':coords[0]['x'], 'y':coords[0]['y']-playerSpeed}
elif direction == DOWN:
if canMoveDown == 'true':
newPlayer = {'x':coords[0]['x'], 'y':coords[0]['y']+playerSpeed}
elif direction == LEFT:
if canMoveLeft == 'true':
newPlayer = {'x':coords[0]['x']-playerSpeed, 'y':coords[0]['y']}
elif direction == RIGHT:
if canMoveRight == 'true':
newPlayer = {'x':coords[0]['x']+playerSpeed, 'y':coords[0]['y']}
Спасибо за ваш ответ! У меня есть еще один вопрос: как выглядит код для варианта 2? Еще раз спасибо! –
Ну, я бы не согласился с тем, что с * значком для каждого ключа, установите его на KEYDOWN и отключите его в KEYUP *, это * хороший * подход. В большинстве случаев вы хотите использовать подход номер 2 :-) – sloth
Команда get_pressed(), которая возвращает словарь каждого ключа, индексированного по имени ключа. (например, K_LEFT). Затем вам нужен код типа «Если ключи [K_LEFT]: # перемещение влево. – user3757614