用 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): 的计数结果相同。
挑战
简单用循环画一排 8 颗星星。
- 将单颗星星替换为
for i in range(8):。 - 在循环中,在
(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 在线编辑器