首页 > 解决方案 > Pygame:附加到列表的顺序搞砸了

问题描述

我已经创建了一个循环以按特定顺序将图片、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...' 等等,但是当我打印它时,每次都会更改顺序混乱的顺序。(在这种情况下是第五个)

标签: python-3.7

解决方案


我对此很陌生,但也许您在循环或某事中两次选择相同的图片,这就是搞砸了。如果您在循环外随机播放 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

推荐阅读