Menu
CoddyTech

用 len 计数

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

len(stars) 表示列表中有多少个项目。空列表的长度为 0。可以用它显示数量:

text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))

f 字符串的花括号中可以放入任何表达式,包括函数调用。

len 还可以用于设置上限。只有还有空间时才添加星星:

if event.type == pygame.MOUSEBUTTONDOWN and len(stars) < 10:
    stars.append(event.pos)

列表中有 10 颗星星后,条件就为假,因此点击不会产生任何效果。屏幕上的数量和上限都读取同一个列表,所以它们始终一致。

上限写在事件循环中,并通过 and 与点击测试连接起来:只有事件是点击且还有空间时,才会运行 append。len 也适用于字符串:len("Night") 的结果是 5。

challenge icon

挑战

中等

统计星星的数量,达到 10 个时停止。

  1. 在设置部分,写入 font = pygame.font.Font(None, 36)。
  2. 在绘制部分,在 (20, 20) 处用 (230, 230, 240) 显示 f"Stars: {len(stars)}"。
  3. 只有当 len(stars) < 10 时,点击才添加一颗星星。

按“运行”,然后点击 12 次:计数会停在 Stars: 10。接着点击“检查”。

亲手试试

import pygame

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

# 在这里进行设置,放在游戏循环之前。
stars = []

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

    # 每一帧都在这里更新内容。

    screen.fill((20, 24, 48))
    # 填充画面后,在这里绘制。
    for star in stars:
        pygame.draw.circle(screen, (255, 255, 255), star, 5)

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

pygame.quit()

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

自己练习: Pygame 在线编辑器