Menu
CoddyTech

多次调用它

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

在循环中调用函数,就能绘制出图案。循环计算参数,函数负责绘图:

for i in range(8):
    draw_star(60 + i * 70, 60 + i * 45)

每次循环绘制的位置都比上一次向右移 70 像素、向下移 45 像素,因此星星会沿直线从 (60, 60) 排到 (550, 375)。更改 70 或 45,所有星星的位置都会随之改变。

这就是值得编写函数的原因。绘制星星的代码只需写一次。要改变所有星星的外观,比如让光线更长或换一种颜色,只需修改函数体,每次调用都会绘制出新的星星。

给函数取名时,要根据它的作用来命名,通常用动词开头:draw_star、move_comet、reset_game。这样,调用它的代码读起来就像一句话。

challenge icon

挑战

简单

画一排由 8 颗星星组成的星星。

  1. 将单次调用替换为 for i in range(8):。
  2. 在循环中调用 draw_star(60 + i * 70, 60 + i * 45)。

按“开始”:8 颗星星从 (60, 60) 延伸到 (550, 375)。然后按“检查”。

亲手试试

import pygame

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

# 在游戏循环开始前,先在这里完成设置。
def draw_star(x, y):
    pygame.draw.line(screen, (255, 240, 200), (x - 10, y), (x + 10, y), 2)
    pygame.draw.line(screen, (255, 240, 200), (x, y - 10), (x, y + 10), 2)
    pygame.draw.circle(screen, (255, 240, 200), (x, y), 4)

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

    # 每一帧都在这里修改内容。

    screen.fill((20, 24, 48))
    # 填充背景后,在这里绘制。
    draw_star(60, 60)

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

pygame.quit()
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

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

自己练习: Pygame 在线编辑器