Menu
CoddyTech

每一帧都移动

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

游戏循环每秒运行 60 次,因此“在这里更改内容”部分中的一行代码每帧运行一次。你可以用它每次让变量稍微变化一点:

comet_x = comet_x + 2

从右边读起:取 comet_x 中的值,加上 2,再把结果存回 comet_x。如果它原来是 40,现在就是 42。下一帧变成 44,然后是 46。

每一帧都会在 comet_x 处绘制彗星,因此每一帧都会显示它向右移动 2 像素:每秒 120 像素。游戏中的一切都是这样移动的:一个数字在每一帧都发生一点变化。

comet_x = 40 位于设置部分,只运行一次。如果把它放在循环中,每一帧都会把彗星的位置重设为 40,彗星就会停在原地。

Python 还有一种简写形式:comet_x += 2,效果相同。

challenge icon

挑战

简单

让彗星向右飞。

  1. 找到 # Change things here, once a frame. 部分。
  2. 在这里给 comet_x 加上 2,让它每帧移动 2 个像素。

按“开始”:彗星会向右飞。然后按“检查”。

亲手试试

import pygame

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

# 在这里进行设置,放在游戏循环之前。
moon_x = 160
moon_y = 120
comet_x = 40
comet_y = 200

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.draw.circle(screen, (120, 200, 255), (comet_x, comet_y), 8)

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

pygame.quit()

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

自己练习: Pygame 在线编辑器