多次调用它
本课属于 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。这样,调用它的代码读起来就像一句话。
挑战
简单画一排由 8 颗星星组成的星星。
- 将单次调用替换为
for i in range(8):。 - 在循环中调用
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()
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
游戏窗口中的 Python中的所有课
自己练习: Pygame 在线编辑器