Menu
CoddyTech

가득 찬 하늘

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에서는 키를 눌러 게임을 다시 시작하는 방법과 승리 또는 패배로 게임을 끝내는 방법을 알아봅니다.

challenge icon

챌린지

중급

밤하늘을 완성하세요:

  1. len(stars) < 20일 때만 클릭하면 별을 추가하세요.
  2. 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 플레이그라운드