Menu
CoddyTech

屏幕边缘环绕

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

在许多太空游戏中,飞船或岩石离开屏幕的一侧后,会从另一侧回来。这就是环绕。这里的岩石向右上方漂移,几秒后就会彻底消失。

移动后检查每条边缘。岩石的半径是 20,所以要等它完全离开视野后再让它跳转:从右侧超过 480 + 20 后,它会从 -20 处回来,先在左边缘外看不见,然后滑入画面。

if pos.x > 500:
    pos.x = -20
if pos.x < -20:
    pos.x = 500

y 轴也是一样,不过要使用屏幕高度:从底部超过 380 后,它会从 -20 处回来;高于 -20 后,它会从 380 处回来。

只有位置会跳转。速度保持不变,所以岩石环绕后仍会朝同一方向漂移。

challenge icon

挑战

简单

在 pos += vel * dt 后,让岩石绕窗口边缘移动。

  1. 超过 500 时,pos.x 变为 -20;低于 -20 时,变为 500。
  2. 超过 380 时,pos.y 变为 -20;低于 -20 时,变为 380。

点击“开始”:岩石从一侧离开,然后从另一侧回来。接着点击“检查”。

亲手试试

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Drifting Rock")
clock = pygame.time.Clock()

pos = pygame.Vector2(240, 180)
vel = pygame.Vector2(120, -70)
dt = 0

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

    pos += vel * dt

    screen.fill((20, 20, 34))
    pygame.draw.circle(screen, (150, 150, 160), pos, 20)
    pygame.display.flip()
    dt = clock.tick(60) / 1000

pygame.quit()
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

游戏循环中的所有课

自己练习: Pygame 在线编辑器