Menu
CoddyTech

边缘环绕

本课属于 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 永远不会为真。

challenge icon

挑战

简单

彗星离开窗口后,让它回到左边缘。

  1. 在移动彗星的那一行之后,添加一个 if。
  2. 当 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 在线编辑器