用 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。
挑战
中等统计星星的数量,达到 10 个时停止。
- 在设置部分,写入
font = pygame.font.Font(None, 36)。 - 在绘制部分,在 (20, 20) 处用
(230, 230, 240)显示f"Stars: {len(stars)}"。 - 只有当
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 在线编辑器