Menu
CoddyTech

星星列表

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

列表可以按顺序在一个变量中存放多个值,并用方括号括起来:

stars = [(100, 80), (220, 160), (360, 100)]

这里的每个元素都是一个位置元组。stars[0] 是第一个元素 (100, 80),而 stars[1] 是第二个元素。和 range 一样,计数从 0 开始。

for 循环可以遍历列表。循环变量依次取列表中的每个元素:

for star in stars:
    pygame.draw.circle(screen, (255, 255, 255), star, 5)

位置是一个元组,因此 star 可以直接放在表示圆心的位置。向列表中添加一个位置,就会多出现一颗星星,而循环不需要做任何修改。列表保存着游戏中屏幕内容的信息;循环会绘制列表中的所有内容。

challenge icon

挑战

简单

用一个列表画出有五颗星星的天空。

  1. 将 (360, 100)、(480, 200) 和 (580, 70) 添加到 stars 的末尾。
  2. 将绘制 stars[0] 的那一行替换为 for star in stars:,把每颗星星都画成半径为 5 的白色 (255, 255, 255) 圆。

按“运行”:显示五颗星星。然后按“检查”。

亲手试试

import pygame

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

# 在这里完成设置,然后进入游戏循环。
stars = [(100, 80), (220, 160)]

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

    # 在这里每帧更新一次。

    screen.fill((20, 24, 48))
    # 填充背景后,在这里绘制。
    pygame.draw.circle(screen, (255, 255, 255), stars[0], 5)

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

pygame.quit()

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

自己练习: Pygame 在线编辑器