好的,所以我正在制作一个小型游戏,当斧头旋转到侧面并向后移动时,点击鼠标,并且当这种情况发生时,点也会在计数器中折叠起来。当玩家达到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并且只编写了几个月的代码,所以如果你对代码组织有任何提示,我也不会完全了解我在做什么不胜感激!谢谢!
答案 0 :(得分:1)
问题在于以下几行:
if counter > 20:
img = img3
由于计数器仅增加,因此将对每个事件执行赋值。由于img3未旋转,因此img
再次被指定为img3
,因此未看到以下行结果。
img = pygame.transform.rotate(img, -90)
要解决此问题,您应该有一个额外的变量,它将告诉您是否已经“升级”了shadeaxe。然后测试counter > 20
和axeUpgraded == False