Menu
CoddyTech

用 for 循环重复执行

本课属于 Coddy Pygame 学习旅程的“游戏窗口中的 Python”单元。第 16 课,共 33 课。

for 循环会重复执行其中的语句,每个给定的值执行一次:

for i in range(8):
    pygame.draw.circle(screen, (255, 255, 255), (40 + i * 80, 80), 5)

range(8) 会给出数字 0、1、2,依此类推,直到 7:共 8 个数字,从 0 开始,在 8 之前结束。循环依次将每个数字存入 i,并运行缩进的语句。因此,第一颗星星的 x 坐标是 40,下一颗是 120,然后是 200,一直到 600。

缩进的语句就是循环的主体,和 if 一样。主体之后、缩进回到外层的第一行代码,会在循环结束后运行一次。

这个循环位于游戏循环的绘制部分,因此每一帧都会重新绘制全部 8 颗星星。这个循环很短,很快就能结束,所以这一帧仍能按时结束。

i 是计数变量的常用名称,但也可以用任何名称:for n in range(8): 的计数结果相同。

challenge icon

挑战

简单

用循环画一排 8 颗星星。

  1. 将单颗星星替换为 for i in range(8):。
  2. 在循环中,在 (40 + i * 80, 80) 处画一颗半径为 5 的白色星星。

按“运行”:画出一排 8 颗星星。然后按“检查”。

亲手试试

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# 在这里进行设置,放在游戏循环之前。

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

    # 在这里修改内容,每帧执行一次。

    screen.fill((20, 24, 48))
    # 填充后,在这里绘制。
    pygame.draw.circle(screen, (255, 255, 255), (40, 80), 5)

    pygame.display.flip()
    clock.tick(60)

pygame.quit()

游戏窗口中的 Python中的所有课

自己练习: Pygame 在线编辑器