가득 찬 하늘
Coddy Pygame 여정의 게임 창에서 배우는 Python 섹션에 포함된 레슨. 32개 중 32번째.
하늘에 별이 스무 개 떠 있으면 게임이 끝납니다. 두 가지가 바뀝니다. 클릭해도 별이 더 이상 추가되지 않고, 이를 알리는 메시지가 표시됩니다. 두 가지 모두 같은 목록을 확인합니다.
if event.type == pygame.MOUSEBUTTONDOWN and len(stars) < 20:
stars.append(event.pos)if len(stars) == 20:
message = font.render("The sky is full!", True, (230, 230, 240))
screen.blit(message, message.get_rect(center=(320, 240)))message.get_rect(center=(320, 240))는 텍스트 이미지의 사각형이며, 가운데가 (320, 240)에 오도록 배치됩니다. 이 사각형 위치에 블리팅하면 텍스트 길이와 관계없이 창 한가운데에 표시됩니다.
여기서는 == 20을 확인하고 > 20은 확인하지 않습니다. 제한 조건이 목록을 20개에서 멈추게 하므로, 목록에 그보다 많은 별이 들어갈 일은 없습니다.
하늘이 가득 차면 이제 바라보는 것 외에는 할 일이 없습니다. 섹션 2에서는 키를 눌러 게임을 다시 시작하는 방법과 승리 또는 패배로 게임을 끝내는 방법을 알아봅니다.
챌린지
중급밤하늘을 완성하세요:
len(stars) < 20일 때만 클릭하면 별을 추가하세요.len(stars) == 20이면The sky is full!을(230, 230, 240)색상으로 (320, 240) 위치에 가운데 정렬하여 표시하세요.
직접 해보기
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# 게임 루프가 시작되기 전에 여기서 필요한 것들을 설정하세요.
stars = []
font = pygame.font.Font(None, 36)
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))
# 화면을 채운 후 여기서 그리세요.
pygame.draw.circle(screen, (240, 230, 160), (560, 80), 40)
pygame.draw.rect(screen, (14, 16, 30), (0, 430, 640, 50))
for star in stars:
colour = (255, 255, 255)
if random.randint(1, 30) == 1:
colour = (110, 120, 170)
pygame.draw.circle(screen, colour, star, 3)
text = font.render(f"Stars: {len(stars)}/20", True, (230, 230, 240))
screen.blit(text, (20, 20))
pygame.display.flip()
clock.tick(60)
pygame.quit()
게임 창에서 배우는 Python의 모든 레슨
직접 연습해 보세요: Pygame 플레이그라운드