Pygame图像切换到下一个图像但不遵循旧属性?

时间:2014-09-29 18:56:42

标签: python pygame

好的,所以我正在制作一个小型游戏,当斧头旋转到侧面并向后移动时,点击鼠标,并且当这种情况发生时,点也会在计数器中折叠起来。当玩家达到20次点击时,跟随鼠标的图像应该改变并继续跟随鼠标(并且它做得非常漂亮!)但我的问题是,当它发生时它会在点击鼠标时停止旋转但是计数器其他一切都很好。我错过了什么或做错了什么?

所以这就是我到目前为止(伪代码?):

counter = 0
img = pygame.image.load('C:/Users/Myname/Desktop/art/shadedaxe.bmp')#loads img
img = pygame.transform.scale(img,(150,140))#scales

img3 = pygame.image.load('C:/Users/Myname/Desktop/art/shadedaxe2.bmp')
img3 = pygame.transform.scale(img3,(150,140))#scales

while running:
    mx,my = pygame.mouse.get_pos()
    imgx=mx-50 #sets img at
    imgy=my-70
    screen.blit(img, (imgx,imgy))

    for event in pygame.event.get():
        if event.type == MOUSEBUTTONDOWN:
            if event.button != 4 and event.button != 5 and event.button != 3:
                img = pygame.transform.rotate(img, -90) #make it turn on click
                counter += 1 #Gives points to the player

        elif event.type == MOUSEBUTTONUP: 
            if event.button != 5 and event.button !=4 and event.button != 3:
                img = pygame.transform.rotate(img, 90)

        if counter > 20:
            img = img3
PS:我刚刚开始使用Python编写Pygame并且只编写了几个月的代码,所以如果你对代码组织有任何提示,我也不会完全了解我在做什么不胜感激!谢谢!

1 个答案:

答案 0 :(得分:1)

问题在于以下几行:

if counter > 20:
    img = img3

由于计数器仅增加,因此将对每个事件执行赋值。由于img3未旋转,因此img再次被指定为img3,因此未看到以下行结果。

 img = pygame.transform.rotate(img, -90)

要解决此问题,您应该有一个额外的变量,它将告诉您是否已经“升级”了shadeaxe。然后测试counter > 20axeUpgraded == False