边缘环绕
本课属于 Coddy Pygame 学习旅程的“游戏窗口中的 Python”单元。第 11 课,共 33 课。
只有当条件为真时,if 才会运行其中的语句:
if comet_x > 640:
comet_x = 0条件以冒号结尾。下面的语句缩进 4 个空格:它们属于 if。Python 会在每一帧检查条件。当彗星还在窗口内时,条件为假,不会发生任何事情。一旦彗星越过右边缘,条件就为真,彗星会回到左侧。
比较结果要么是 True,要么是 False。> 表示大于,< 表示小于,== 用来检查两个值是否相等。一个 = 用于赋值,两个用于比较。
检查一个范围,例如 > 640,不要只检查某个确切的值。彗星从 50 开始,每帧移动 3 个像素:635、638、641。它永远不会到达 640,所以 comet_x == 640 永远不会为真。
挑战
简单彗星离开窗口后,让它回到左边缘。
- 在移动彗星的那一行之后,添加一个
if。 - 当
comet_x大于640时,将comet_x设置为0。
按“开始”:彗星会一次又一次地穿过窗口。然后按“检查”。
亲手试试
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 = 50
comet_y = 200
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 在这里修改内容,每帧一次。
comet_x = comet_x + 3
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 在线编辑器