Menu
CoddyTech

与、或

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

or 用来连接两个条件,只要其中一个条件为真,结果就为真。只有两个条件都为真时,and 的结果才为真。

if keys[pygame.K_LEFT] or keys[pygame.K_a]:
    moon_x = moon_x - 4
if keys[pygame.K_RIGHT] and moon_x < 580:
    moon_x = moon_x + 4

第一个 if 会在按住左方向键或 A 键时让月亮向左移动:两个键中的任意一个都可以。第二个 if 只有在按住右方向键且月亮位于 x 坐标 580 左侧时,才会让月亮向右移动,因此月亮会在到达窗口边缘前停下。

not 会把真变成假:松开左方向键时,not keys[pygame.K_LEFT] 的结果为真。

challenge icon

挑战

中等

修改这两个按键判断。

  1. 按住 A 键也会像按住左方向键一样让月亮向左移动。使用 or。
  2. 只有当 moon_x < 580 时,按住右方向键才会让月亮移动。使用 and。

按“开始”:按住 A 键会让月亮向左移动,按住右方向键会让月亮在 x 580 处停下。然后按“检查”。

亲手试试

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 在线编辑器