Menu
CoddyTech

Elif 和 Else

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

else 为 if 添加了第二个分支,当条件为假时执行。elif 是“else if”的缩写,用来在中间添加更多条件:

if moon_x < 200:
    colour = (255, 170, 90)
elif moon_x < 440:
    colour = (240, 230, 160)
else:
    colour = (160, 190, 255)

Python 从上往下检查条件,运行第一个条件为真的分支,然后跳过其余分支。当 x 为 100 时,前两个条件都为真,但只会运行第一个分支。else 没有条件:当上面的条件都不为真时,它就会运行。

单独使用多个 if 的效果不同:每个 if 都会被检查。有 3 个 if 时,x 为 100 的月亮会先变成橙色,然后第二个 if 会让它再次变成黄色。

这里的 colour 是一个保存元组的变量。用它来绘制:pygame.draw.circle(screen, colour, (moon_x, moon_y), 50)。

challenge icon

挑战

中等

根据月亮的位置为它上色。

  1. 在按键处理部分之后的更改部分中,如果 moon_x < 200,将 colour 设为 (255, 170, 90)。
  2. 如果 moon_x < 440,则将它设为 (240, 230, 160)。否则设为 (160, 190, 255)。
  3. 用 colour 绘制月亮。

按“开始”并按住方向键:月亮在左侧时会变成橙色,在右侧时会变成蓝色。然后点击“检查”。

亲手试试

import pygame

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

# 在游戏循环开始前,先在这里设置好需要的内容。
moon_x = 320
moon_y = 240

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

    # 在这里修改内容,每帧修改一次。
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        moon_x = moon_x - 4
    if keys[pygame.K_RIGHT]:
        moon_x = moon_x + 4

    screen.fill((20, 24, 48))
    # 填充背景后,在这里绘制。
    pygame.draw.circle(screen, (240, 230, 160), (moon_x, moon_y), 50)

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

pygame.quit()

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

自己练习: Pygame 在线编辑器