Python pygame多次闪亮相同的图像



为什么我的程序不能对多次加载的同一图像进行点亮?

Imagea = pygame.image.load('imagea.png')
Imageb = pygame.image.load('imageb.png')

游戏循环内

deck = abaa
for i in deck:
for position in positions:
if(i) == deck[0]:
if(i == a):
gamedisplay.blit(imagea, positions[0])
elif(i == b):
gamedisplay.blit(imageb, positions[0])
if(i) == deck[1]:
if(i == a):
gamedisplay.blit(imagea, positions[1])
elif(i == b):
gamedisplay.blit(imageb, positions[1])
if(i) == deck[2]:
if(i == a):
gamedisplay.blit(imagea, positions[2])
elif(i == b):
gamedisplay.blit(imageb, positions[2])
if(i) == deck[3]:
if(i == a):
gamedisplay.blit(imagea, positions[3])
elif(i == b):
gamedisplay.blit(imageb, positions[3])

似乎只发生甲板 0 和甲板 1 显示图像 a 和图像 b。但是,甲板 2 和 3 不会出现在position[2]position[3].

deck

是一个列表,i是列表的一个元素。没有必要评估是否是列表的一个元素,当然是。这种评估是问题所在。 请注意,如果ideck中多次(例如,在索引 0 和 2 处(,则永远不会评估if i == deck[2]:,因为if i == deck[o]:首先True计算。

在下文中,我假设deckposition具有相同数量的元素。

要么使用enumerate遍历deck,并获得一个包含元素索引和元素本身的元组:

for i, d in enumerate(deck):
p = positions[i]
if d == a:
gamedisplay.blit(imagea, p)
elif d == b:
gamedisplay.blit(imageb, p)

或者使用zip同时遍历deckpositions

for d, p in zip(deck, positions):
if d == a:
gamedisplay.blit(imagea, p)
elif d == b:
gamedisplay.blit(imageb, p)

相关内容

  • 没有找到相关文章

最新更新