为什么我的程序无法删除多次加载的同一张图片?
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显示imagea和imageb。但是,甲板2和3不会显示在position[2]
或position[3]
上。
答案 0 :(得分:0)
deck
是一个列表,i
是该列表的元素。当然,不必评估是否是列表的元素。这个评估是问题。
请注意,如果i
在deck
中多次(例如在索引0和2处),则将永远不会对if i == deck[2]:
进行评估,因为if i == deck[o]:
首先会被评估True
。
以下,我假设deck
和position
具有相同数量的元素。
使用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
同时遍历deck
和positions
:
for d, p in zip(deck, positions):
if d == a:
gamedisplay.blit(imagea, p)
elif d == b:
gamedisplay.blit(imageb, p)