屏幕边缘环绕
本课属于 Coddy Pygame 学习旅程的“游戏循环”单元。第 25 课,共 35 课。
在许多太空游戏中,飞船或岩石离开屏幕的一侧后,会从另一侧回来。这就是环绕。这里的岩石向右上方漂移,几秒后就会彻底消失。
移动后检查每条边缘。岩石的半径是 20,所以要等它完全离开视野后再让它跳转:从右侧超过 480 + 20 后,它会从 -20 处回来,先在左边缘外看不见,然后滑入画面。
if pos.x > 500:
pos.x = -20
if pos.x < -20:
pos.x = 500y 轴也是一样,不过要使用屏幕高度:从底部超过 380 后,它会从 -20 处回来;高于 -20 后,它会从 380 处回来。
只有位置会跳转。速度保持不变,所以岩石环绕后仍会朝同一方向漂移。
挑战
简单在 pos += vel * dt 后,让岩石绕窗口边缘移动。
- 超过 500 时,
pos.x变为 -20;低于 -20 时,变为 500。 - 超过 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()
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
游戏循环中的所有课
自己练习: Pygame 在线编辑器