0

オブジェクトを停止させることができます。w、a、s、またはdを押すと、動きますが止まりません。いずれかの方向を押すと動きますが止まりません。キーを離したときに停止する必要があります。あらゆる種類のヘルプをいただければ幸いです。私のコードは次のとおりです。

while (running == 1):
    screen.fill(white)
    for event in pygame.event.get():
        if (event.type == pygame.QUIT):
            running = 0
        elif (event.type == pygame.KEYDOWN):
            if (event.key == pygame.K_d):
                dir = "R"
            elif (event.key == pygame.K_a):
                dir = "L"
            elif (event.key == pygame.K_s):
                dir = "D"
            elif (event.key == pygame.K_w):
                dir = "U"
            elif (event.key == pygame.K_ESCAPE): 
                sys.exit(0)
            elif (event.key == pygame.K_SPACE):
                shot=True
                xbul=xgun
                ybul=ygun
            #if key[K_SPACE]:
                #shot = True


    #OBJECT'S MOVEMENTS
    if (dir == "R" and xgun<595):
        xgun = xgun + 3
        pygame.event.wait
    elif (dir == "L" and xgun>0):
        xgun = xgun - 3
        pygame.event.wait
    elif (dir == "D" and ygun<460):
        ygun = ygun + 3
        pygame.event.wait
    elif (dir == "U" and ygun>0):
        ygun = ygun - 3

    screen.blit(gun, (xgun,ygun))
    #PROJECTILE MOTION
    #key = pygame.key.get_pressed()

    if shot == True:
        xbul = xbul + 3
        screen.blit(bullet, (xbul, ybul))

    if xbul>600:
        shot=False

    pygame.display.flip()
    time.sleep(0.01)
4

2 に答える 2

6

pygame.KEYUP現在の動きをキャッチして停止する必要があります。

于 2013-01-10T19:25:45.667 に答える
0

使用するpygame.key.get_pressed()

あれは

key = pygame.key.get_pressed()
if key[pygame.K_d]:
    dir = "R"
elif key[pygame.K_a]:
    dir = "L"
elif key[pygame.K_s]:
    dir = "D"
elif key[pygame.K_w]:
    dir = "U"
elif key[pygame.K_ESCAPE]: 
    sys.exit(0)
elif key[pygame.K_SPACE]:
    shot = True
    xbul = xgun
    ybul = ygun
else:         # If none of the keys is pressed, Stop.
    dir = 'S'
于 2013-01-11T09:23:35.443 に答える