摆放星星
本课属于 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)先绘制月亮和地面,再绘制星星,这样星星就会显示在它们上方。如果把星星放在月亮上,它就会显示在月亮前面,看起来像是离你更近。
挑战
简单开始夜空:每次点击都会放置一颗星星。
- 在游戏循环前创建
stars = []。 - 发生
MOUSEBUTTONDOWN事件时,将event.pos添加到stars。 - 在绘制月亮和地面后,将每颗星星都绘制为半径为 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 在线编辑器