如何使循环运行特定次数

时间:2019-07-25 19:43:56

标签: python pygame

我正在编写一个程序,该程序应该在屏幕上的任意位置以随机颜色绘制随机数的正方形。我试图使这种情况发生,但是它没有用(相反,只是画一个正方形并将其放置在每帧的新位置)。

我决定放弃随机数平方的想法,而只画了三个。但是它仍然做同样的事情。根据我读过的网站,您应该可以使用For循环将它们绘制一定次数。但是,这些网站不是很清楚,使用的是我以前从未听说过的术语。我以为这样做会更容易,但是我是编程新手,所以我可能做错了事。

population = 0

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    pcol = (random.choice(colour_list))
    px = random.randint(50, 750)
    py = random.randint(50, 750)

    screen.fill(GREY)

    for population in range(0, 3):
        pygame.draw.rect(screen, pcol, (px, py, 50, 50))
        population += 1

    pygame.display.update()

2 个答案:

答案 0 :(得分:2)

您必须在px循环中生成不同的随机位置(pypcol)和颜色(for),因此每个矩形都具有自己的随机性位置和颜色:

screen.fill(GREY)

for _ in range(0, 3):
    pcol = (random.choice(colour_list))
    px = random.randint(50, 750)
    py = random.randint(50, 750)
    pygame.draw.rect(screen, pcol, (px, py, 50, 50))

pygame.display.update()

如果要保持随机矩形的持久性,则必须在主循环之前生成数据列表:

population = []
for _ in range(0, 3):
    pcol = (random.choice(colour_list))
    px = random.randint(50, 750)
    py = random.randint(50, 750)
    population.append((px, py, pcol))

while running:

    # [...]

    screen.fill(GREY)
    for px, py, pcol in population:
        pygame.draw.rect(screen, pcol, (px, py, 50, 50))
    pygame.display.update()

答案 1 :(得分:0)

这个(https://stackoverflow.com/a/57209221/11714229)答案是正确的。此外,可以通过如下所示的for循环来绘制随机数的正方形:

for population in range(0, randint([Min number of squares], [Max number of squares]):

//示例:

for population in range(0, randint(1,15):
     //code here

输出将在1到15平方之间。