Menu
CoddyTech

按键让月亮移动

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

pygame.key.get_pressed() 会告诉你这一帧有哪些按键正被按住。每一帧只保存一次它返回的结果,然后查询某个按键:

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

按住左键时,keys[pygame.K_LEFT] 的值是 True,否则是 False,所以只要按键处于按下状态,它下面的 if 就会在每一帧运行。按住右键一秒,月亮就会移动 240 像素。

每个按键都有一个名称:K_UP、K_DOWN、K_SPACE,以及表示 A 的 K_a 和表示 D 的 K_d。

使用两个单独的 if,每个按键各用一个,这样就能分别检查每个按键。这些 if 要放在变更部分,也就是事件循环之后。

challenge icon

挑战

简单

用方向键移动月亮。

  1. 在更改部分,使用 keys = pygame.key.get_pressed() 读取按键。
  2. 按住左方向键时,从 moon_x 中减去 4。
  3. 按住右方向键时,给 moon_x 加上 4。

按“开始”并按住方向键:月亮会左右滑动。然后按“检查”。

亲手试试

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

    # 在这里修改内容,每帧执行一次。

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