Menu
CoddyTech

摆放星星

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

最后四节课将共同完成一个小游戏:Night Sky。你可以点击来放置星星,星星会闪烁,计数器会显示星星的数量,达到 20 颗时,天空就满了。每节课都从上一节课的代码开始。

这个游戏会用到本单元教过的内容。星星的位置保存在一个列表中,并在循环开始前将列表设为空。点击时会将星星的位置追加到列表中,然后在每一帧中用 for 循环绘制列表里的每颗星星:

stars = []

        if event.type == pygame.MOUSEBUTTONDOWN:
            stars.append(event.pos)

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

先绘制月亮和地面,再绘制星星,这样星星就会显示在它们上方。如果把星星放在月亮上,它就会显示在月亮前面,看起来像是离你更近。

challenge icon

挑战

简单

开始夜空:每次点击都会放置一颗星星。

  1. 在游戏循环前创建 stars = []。
  2. 发生 MOUSEBUTTONDOWN 事件时,将 event.pos 添加到 stars。
  3. 在绘制月亮和地面后,将每颗星星都绘制为半径为 3 的白色 (255, 255, 255) 圆形。

按下“开始”并点击天空:每次点击都会放置一颗星星。然后点击“检查”。

亲手试试

import pygame

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

# 在这里进行初始化,放在游戏循环之前。

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, (240, 230, 160), (560, 80), 40)
    pygame.draw.rect(screen, (14, 16, 30), (0, 430, 640, 50))

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

pygame.quit()

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

自己练习: Pygame 在线编辑器