参数
本课属于 Coddy Pygame 学习旅程的“游戏窗口中的 Python”单元。第 22 课,共 33 课。
总是在 (320, 240) 处绘制的函数用处不大。参数让调用者可以自行选择。把参数名写在 def 后面的括号里,并像使用变量一样在函数体中使用它们:
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)每次调用都会按相同顺序传入值,也就是参数:draw_star(120, 100) 会在 x 为 120、y 为 100 时运行函数体。draw_star(520, 90) 会再次运行函数体,并使用其他值。只需定义一次,就能按调用次数绘制任意数量的星星。
参数只在函数运行时存在于函数内部。在函数外部,x 和 y 没有意义,除非你在外部给它们赋了其他值。
挑战
中等让调用者来放置星星。
- 将定义改为
def draw_star(x, y):。 - 围绕 (x, y) 绘制:从
x - 10到x + 10的线段,以及从y - 10到y + 10的线段,并在(x, y)处画一个点。 - 调用它 3 次:分别在 (120, 100)、(320, 180) 和 (520, 90) 处。
按“开始”:出现 3 颗星星。然后按“检查”。
亲手试试
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# 在游戏循环开始前,先在这里完成设置。
def draw_star():
pygame.draw.line(screen, (255, 240, 200), (310, 240), (330, 240), 2)
pygame.draw.line(screen, (255, 240, 200), (320, 230), (320, 250), 2)
pygame.draw.circle(screen, (255, 240, 200), (320, 240), 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()
pygame.display.flip()
clock.tick(60)
pygame.quit()
游戏窗口中的 Python中的所有课
自己练习: Pygame 在线编辑器