不能使精灵对角移动

时间:2014-08-26 13:12:52

标签: python pygame

我想用我的键盘在屏幕上对角移动我的飞船精灵,但每次尝试都是错误的。我使用w,s,a,d键在一个方向上移动没有问题,但是当我尝试将它们组合时,它只是不起作用。 为了向一个方向移动我使用脚本:

key = pygame.key.get_pressed()
if key[pygame.K_w]:

    classes.Ship.going_right = False
    ship.image = pygame.image.load('Images/myship3.png')
    ship.rect.y -= 8

elif key[pygame.K_s]:

    ship.image = pygame.image.load('Images/myship3.png')
    ship.image = pygame.transform.rotate(ship.image, 180)
    ship.rect.y += 8

elif key[pygame.K_a]:

    ship.image = pygame.image.load('Images/myship3.png')
    ship.image = pygame.transform.rotate(ship.image, 90)
    ship.rect.x -= 8


elif key[pygame.K_d]:

    ship.image = pygame.image.load('Images/myship3.png')
    ship.image = pygame.transform.rotate(ship.image, -90)
    ship.rect.x += 8

我有几次尝试让精灵向上和向右倾斜(通过按'w'和'd'键):

    elif key[pygame.K_w]:
        if key[pygame.K_d]:
            ship.image = pygame.image.load('Images/myship3.png')
            ship.image = pygame.transform.rotate(ship.image, -45)
            ship.rect.x += 8
            ship.rect.y -= 8

没有做任何事情或

    elif [key[pygame.K_w] + key[pygame.K_d]]:

    ship.image = pygame.image.load('Images/myship3.png')
    ship.image = pygame.transform.rotate(ship.image, -45)
    ship.rect.x += 8
    ship.rect.y -= 8

它自动向上和向右移动船(不等我按键)。我已经没有了dumm的想法。任何sugestions?

1 个答案:

答案 0 :(得分:4)

如果你把ifif放在ifs之后那么它就不会起作用了。您可以更改第一个if:

if key[pygame.K_w]:
    if key[pygame.K_d]:
        ship.image = pygame.image.load('Images/myship3.png')
        ship.image = pygame.transform.rotate(ship.image, -45)
        ship.rect.x += 8
        ship.rect.y -= 8
    else:
        classes.Ship.going_right = False
        ship.image = pygame.image.load('Images/myship3.png')
        ship.rect.y -= 8

另外,我不知道pygame是如何工作的,但每次移动船只时读取图像文件似乎都是个坏主意。这将是每帧一次读取硬盘驱动器中的文件。也许你应该先阅读一次并将其保存在变量中。