Pygame:添加到列表的顺序混乱
Pygame: Order of appending to a list is messing up
我制作了一个循环,以特定顺序将图片、x 坐标和 y 坐标添加到列表中。但是,我的程序进一步出错,并且发现问题出在将这些元素添加到列表中的顺序。谁能告诉我为什么会这样?
代码:
zero = pygame.image.load("0.png").convert_alpha()
one = pygame.image.load("1.png").convert_alpha()
two = pygame.image.load("2.png").convert_alpha()
three = pygame.image.load("3.png").convert_alpha()
four = pygame.image.load("4.png").convert_alpha()
five = pygame.image.load("5.png").convert_alpha()
six = pygame.image.load("6.png").convert_alpha()
seven = pygame.image.load("7.png").convert_alpha()
eight = pygame.image.load("8.png").convert_alpha()
nine = pygame.image.load("9.png").convert_alpha()
numList = [zero,one,two,three,four,five,six,seven,eight,nine]
blitList = []
i=0
while i<10:
i=i+1
numX = random.randint(20,1320)
numY = random.randint(20,700)
number = random.choice(numList)
blitList.append(number)
blitList.append(numX)
blitList.append(numY)
列表打印时间:
[<Surface(70x69x32 SW)>, 506, 110, <Surface(69x69x32 SW)>, 1177, 559, <Surface(69x69x32 SW)>, 524, 467, <Surface(69x69x32 SW)>, 263, 232, 630, <Surface(69x69x32 SW)>, 551, <Surface(69x69x32 SW)>, 58, 123, <Surface(69x69x32 SW)>, 1157, 520, <Surface(69x69x32 SW)>, 772, 640, <Surface(69x69x32 SW)>, 178, 522]
顺序应该是'[surface], x-value, y-value...'等等,但是当我打印它的时候,每次都改变顺序混乱的顺序。 (在这种情况下是第五个)
我对此很陌生,但也许您在循环或其他事情中两次选择了同一张图片,这就是搞砸了。如果你在循环外洗牌 numlist 并从洗牌的 numlist 追加会有帮助。该循环距离选取所有对象也短 1 个。
-泰尔杰-
代码:
zero = pygame.image.load("0.png").convert_alpha()
one = pygame.image.load("1.png").convert_alpha()
two = pygame.image.load("2.png").convert_alpha()
three = pygame.image.load("3.png").convert_alpha()
four = pygame.image.load("4.png").convert_alpha()
five = pygame.image.load("5.png").convert_alpha()
six = pygame.image.load("6.png").convert_alpha()
seven = pygame.image.load("7.png").convert_alpha()
eight = pygame.image.load("8.png").convert_alpha()
nine = pygame.image.load("9.png").convert_alpha()
numList = [zero,one,two,three,four,five,six,seven,eight,nine]
Random.shuffle(numList)
blitList = []
i=0
while i<10:
numX = random.randint(20,1320)
numY = random.randint(20,700)
number = numList[i]
blitList.append(number)
blitList.append(numX)
blitList.append(numY)
i=i+1
我制作了一个循环,以特定顺序将图片、x 坐标和 y 坐标添加到列表中。但是,我的程序进一步出错,并且发现问题出在将这些元素添加到列表中的顺序。谁能告诉我为什么会这样?
代码:
zero = pygame.image.load("0.png").convert_alpha()
one = pygame.image.load("1.png").convert_alpha()
two = pygame.image.load("2.png").convert_alpha()
three = pygame.image.load("3.png").convert_alpha()
four = pygame.image.load("4.png").convert_alpha()
five = pygame.image.load("5.png").convert_alpha()
six = pygame.image.load("6.png").convert_alpha()
seven = pygame.image.load("7.png").convert_alpha()
eight = pygame.image.load("8.png").convert_alpha()
nine = pygame.image.load("9.png").convert_alpha()
numList = [zero,one,two,three,four,five,six,seven,eight,nine]
blitList = []
i=0
while i<10:
i=i+1
numX = random.randint(20,1320)
numY = random.randint(20,700)
number = random.choice(numList)
blitList.append(number)
blitList.append(numX)
blitList.append(numY)
列表打印时间:
[<Surface(70x69x32 SW)>, 506, 110, <Surface(69x69x32 SW)>, 1177, 559, <Surface(69x69x32 SW)>, 524, 467, <Surface(69x69x32 SW)>, 263, 232, 630, <Surface(69x69x32 SW)>, 551, <Surface(69x69x32 SW)>, 58, 123, <Surface(69x69x32 SW)>, 1157, 520, <Surface(69x69x32 SW)>, 772, 640, <Surface(69x69x32 SW)>, 178, 522]
顺序应该是'[surface], x-value, y-value...'等等,但是当我打印它的时候,每次都改变顺序混乱的顺序。 (在这种情况下是第五个)
我对此很陌生,但也许您在循环或其他事情中两次选择了同一张图片,这就是搞砸了。如果你在循环外洗牌 numlist 并从洗牌的 numlist 追加会有帮助。该循环距离选取所有对象也短 1 个。
-泰尔杰-
代码:
zero = pygame.image.load("0.png").convert_alpha()
one = pygame.image.load("1.png").convert_alpha()
two = pygame.image.load("2.png").convert_alpha()
three = pygame.image.load("3.png").convert_alpha()
four = pygame.image.load("4.png").convert_alpha()
five = pygame.image.load("5.png").convert_alpha()
six = pygame.image.load("6.png").convert_alpha()
seven = pygame.image.load("7.png").convert_alpha()
eight = pygame.image.load("8.png").convert_alpha()
nine = pygame.image.load("9.png").convert_alpha()
numList = [zero,one,two,three,four,five,six,seven,eight,nine]
Random.shuffle(numList)
blitList = []
i=0
while i<10:
numX = random.randint(20,1320)
numY = random.randint(20,700)
number = numList[i]
blitList.append(number)
blitList.append(numX)
blitList.append(numY)
i=i+1