Menu
CoddyTech

点击添加

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

游戏运行时,列表可以不断增长。stars.append(item) 会在末尾添加一个元素。

鼠标点击会作为 MOUSEBUTTONDOWN 事件进入事件循环,event.pos 是点击发生的位置,也就是一个 (x, y) 元组:

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

每次点击都会添加一个位置。绘制部分已经会绘制列表中的每颗星星,因此新星星会在下一帧显示出来,并一直留在那里,因为列表会保存它。

列表在设置部分开始时为空:stars = []。如果在游戏循环中创建列表,每一帧都会清空列表,每颗星星也会立即消失。

challenge icon

挑战

简单

让每次点击都放置一颗星星。

  1. 在事件循环中,检查是否发生了 MOUSEBUTTONDOWN 事件。
  2. 发生事件时,将 event.pos 添加到 stars 中。

按“开始”,然后点击天空:点击的位置会出现一颗星星。然后按“检查”。

亲手试试

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

    # 在这里每帧更新一次。

    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 在线编辑器