首页 > 解决方案 > 如何使循环运行特定次数

问题描述

我正在编写一个程序,该程序应该在屏幕上随机位置绘制随机数量的正方形,并使用随机颜色。我试图让它发生,但它不起作用(而是只画一个正方形并将它放在每一帧的新位置)。

我决定放弃随机数量的正方形的想法,只画三个。但它仍然做了完全相同的事情。根据我读过的网站,您应该能够使用 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()

标签: pythonpygame

解决方案


您必须在 -loop 中生成不同的随机位置 ( px, py) 和颜色 ( pcol) 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()

推荐阅读