Menu
CoddyTech

参数

本课属于 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 没有意义,除非你在外部给它们赋了其他值。

challenge icon

挑战

中等

让调用者来放置星星。

  1. 将定义改为 def draw_star(x, y):。
  2. 围绕 (x, y) 绘制:从 x - 10 到 x + 10 的线段,以及从 y - 10 到 y + 10 的线段,并在 (x, y) 处画一个点。
  3. 调用它 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 在线编辑器