0

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

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]

4

1 回答 1

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遍历deckpositions同时:

for d, p in zip(deck, positions):
    if d == a:
       gamedisplay.blit(imagea, p)
    elif d == b:
       gamedisplay.blit(imageb, p)
于 2019-10-17T14:51:18.583 回答