Несколько клавиш нажмите Pygame - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь сделать игру, где есть этот маленький робот, который стреляет. Проблема в том, что он стреляет только тогда, когда он не движется, когда я двигаюсь влево или вправо или когда я прыгаю, он не стреляет. Что я могу сделать, чтобы моя клавиша пробела работала, когда я нажимаю другие клавиши? Я попытался вставить другое ключевое утверждение if в ключевое утверждение, которое уже существует, но оно не работает, как я имею в виду:

elif keys[py.K_LEFT] and man.x >= 0:
    man.x -= man.vel
    man.right = False
    man.left = True
    man.standing = False
    man.idlecount = 0
    man.direction = -1

    if keys [py.K_SPACE] and shootloop == 0:
        if man.left:
            facing = -1

        elif man.right:
            facing = 1

        if len(bullets) < 5:
            man.standing = True
            man.shooting = True
            bullets.append(bulletss(round(man.x + man.lenght//2), round(man.y + man.lenght//2), facing))

        shootloop = 1

Я оставил свой github здесь, чтобы вы могли запустить программу. Спасибо за помощь и извините за мой код, который беспорядок.

https://github.com/20nicolas/Game.git

1 Ответ

0 голосов
/ 10 ноября 2018

Оператор if keys [py.K_SPACE] and shootloop == 0: не должен находиться внутри предложения elif keys[py.K_LEFT] and man.x >= 0:, в противном случае стрелять можно только при нажатии клавиши со стрелкой влево.

Кроме того, в вашем репо это на самом деле,

if keys[py.K_RIGHT] and man.x <= 700:
    # ...
elif keys[py.K_LEFT] and man.x >= 0:
    # ...       
elif keys [py.K_SPACE] and shootloop == 0:

, что означает, что оно будет выполнено только тогда, когда не нажата ни K_LEFT, ни K_RIGHT, поскольку эти операторы находятся в одной и той же последовательности if ... elif.

Эта версия у меня работает:

elif keys[py.K_LEFT] and man.x >= 0:
    man.x -= man.vel
    man.right = False
    man.left = True
    man.standing = False
    man.idlecount = 0
    man.direction = -1
else:
    man.standing = True

if keys [py.K_SPACE] and shootloop == 0:
    if man.left:
        facing = -1

    elif man.right:
        facing = 1

    if len(bullets) < 5:
        man.standing = True
        man.shooting = True
        bullets.append(bulletss(round(man.x + man.lenght//2), round(man.y + man.lenght//2), 1))

    shootloop = 1
else:
    man.shooting = False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...