2014-09-29 30 views
0

好的,所以我正在制作一个小游戏,在点击鼠标的同时一个斧头旋转到侧面和背面,并且在发生这种情况时,点也会在计数器中出现。当玩家达到20次点击时,鼠标后面的图像应该改变并继续跟随鼠标(并且它非常漂亮!)但是,我的问题是,当鼠标点击时,它会停止旋转,但计数器和其他一切工作正常。我错过或做错了什么?pygame图像切换到下一个图像,但不遵循旧的属性?

因此,这是这是我迄今为止(伪):

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

的问题是下面几行:

if counter > 20: 
    img = img3 

由于计数器仅增加,分配到每个事件上执行。由于img3未旋转,因此不会看到以下行结果,因为img又被指定为img3

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

要解决这个问题,你应该有一个额外的变量,告诉你,如果shadeaxe已被“升级”。然后测试counter > 20axeUpgraded == False