如何使用一个循环添加到多个组

2024-05-17 01:13:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个游戏,我需要使用循环(每组4个)将精灵添加到一系列组中

我目前正在使用许多独立的循环将它们添加到不同的组中。有没有可能缩短这个时间

i = 0

while i <= 3:
    Circle = Circles(0)
    guess1.add(Circle)
    all_sprites_list.add(Circle)

i = 0

while i <= 3:
    Circle = Circles(0)
    guess2.add(Circle)
    all_sprites_list.add(Circle)

i = 0

while i <= 3:
    Circle = Circles(0)
    guess3.add(Circle)
    all_sprites_list.add(Circle)

i = 0

while i <= 3:
    Circle = Circles(0)
    guess4.add(Circle)
    all_sprites_list.add(Circle)

Tags: add游戏时间alllist精灵circlewhile
2条回答

Pygame的^{} class采用参数列表(*args),这是精灵应该添加的任意数量的组

因此,当您对Sprite类进行子类化时,您可以这样使用它:

class Circle(pygame.sprite.Sprite):
    def __init__(self, index, *args):
        super.__init__(*args)
        ....

此外,您还可以遍历组列表,并以如下方式结束:

for guess in [guess1, guess2, guess3, guess4]:
    for i in range(4):
        Circles(i, guess, all_sprites_list)

第一个问题是循环中没有i += 1,所以第一个循环永远不会结束

i = 0

while i <= 3:
    i += 1

    circle = Circles(0)
    guess1.add(circle)
    all_sprites_list.add(circle)

    circle = Circles(0)
    guess2.add(circle)
    all_sprites_list.add(circle)

    circle = Circles(0)
    guess3.add(circle)
    all_sprites_list.add(circle)

    circle = Circles(0)
    guess4.add(circle)
    all_sprites_list.add(circle)

但是如果您知道要创建多少项,那么就使用for-loop,您就不需要i = 0i += 1

for i in range(4):

    circle = Circles(0)
    guess1.add(circle)
    all_sprites_list.add(circle)

    circle = Circles(0)
    guess2.add(circle)
    all_sprites_list.add(circle)

    circle = Circles(0)
    guess3.add(circle)
    all_sprites_list.add(circle)

    circle = Circles(0)
    guess4.add(circle)
    all_sprites_list.add(circle)

顺便说一句:对于类名使用UpperCaseNames有一个很好的规则,但是对于实例使用lower_case_namecircle = Circles(0)

相关问题 更多 >