Menu
CoddyTech

方向键

本课属于 Coddy Pygame 学习旅程的“游戏循环”单元。第 5 课,共 35 课。

要移动方块,请用变量保存它的位置,并在每一帧都在该位置绘制它。修改变量后,下一帧方块就会出现在别的位置。

pygame.key.get_pressed() 会告诉你当前按住了哪些按键。用按键常量(例如 pygame.K_RIGHT)对它进行索引:按住该键时,结果为 True。

x = 100

while running:
    # 事件
    keys = pygame.key.get_pressed()
    if keys[pygame.K_RIGHT]:
        x += 4
    # 先填充,再在 x 处绘制

按住向右键,方块每帧移动 4 个像素,以每秒 60 帧计算,每秒移动 240 个像素。方向键分别是 K_LEFT、K_RIGHT、K_UP 和 K_DOWN。向上移动意味着 y 值变小。

在循环开始前创建变量。在循环内设置的变量会在每一帧重新开始。x, y = 100, 50 可以在一行中设置两个名称:x 的值是 100,y 的值是 50。

challenge icon

挑战

简单

用方向键移动正方形。

  1. 在循环之前,设置 x, y = 220, 160 和 speed = 4。
  2. 在循环中,处理完事件后,读取 pygame.key.get_pressed()。按住的每个方向键都会让 x 或 y 按 speed 的值改变。
  3. 在 (x, y, 40, 40) 处绘制正方形。

按“开始”并按住方向键,正方形就会移动。然后按“检查”。

亲手试试

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Move the Square")
clock = pygame.time.Clock()

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

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 196, 0), (220, 160, 40, 40))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

游戏循环中的所有课

自己练习: Pygame 在线编辑器