Menu
CoddyTech

객체 목록

Coddy Pygame 여정의 스프라이트와 이미지 섹션에 포함된 레슨. 36개 중 13번째.

이름이 붙은 별 두 개만으로는 하늘이 되지 않습니다. 마흔 개라면 목록이 필요합니다. 반복문에서 객체를 만들고 각각 추가하세요.

stars = []
for i in range(40):
    x = random.randint(0, 639)
    y = random.randint(0, 479)
    speed = random.randint(1, 3)
    stars.append(Star(x, y, speed))

그런 다음 반복문 하나로 별을 모두 업데이트하고, 다른 반복문으로 별을 모두 그립니다.

for star in stars:
    star.update()

for문 안에서 star는 차례로 각 객체를 가리키므로, star.update()는 각 별을 자체 속도만큼 움직입니다. 별을 백 개 더 추가해도 숫자 하나만 바꾸면 됩니다. 업데이트와 그리기 코드는 그대로 유지됩니다.

게임 반복문이 시작되기 전에 목록을 한 번 만드세요. 반복문 안에서 만든 목록은 매 프레임마다 새로운 별들로 이루어진 새 목록이 되어 별들이 모두 시작 위치로 돌아가므로, 아무것도 움직이지 않습니다.

challenge icon

챌린지

중급
  1. 맨 위에 import random을 추가하세요.
  2. 루프 앞에서 stars를 만드세요. 0부터 639까지의 무작위 x, 0부터 479까지의 무작위 y, 1부터 3까지의 무작위 속도를 가진 Star 객체 40개로 이루어진 리스트입니다.
  3. 루프에서 stars의 모든 별을 업데이트하고, 화면을 채운 뒤 모든 별을 그리세요. slow와 fast를 제거하세요.

직접 해보기

import pygame

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

class Star:
    def __init__(self, x, y, speed):
        self.x = x
        self.y = y
        self.speed = speed

    def update(self):
        self.y += self.speed
        if self.y > 480:
            self.y = 0

    def draw(self, screen):
        pygame.draw.circle(screen, (255, 255, 255), (self.x, self.y), 4)


slow = Star(200, 0, 1)
fast = Star(440, 0, 3)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    slow.update()
    fast.update()

    screen.fill((20, 22, 40))
    slow.draw(screen)
    fast.draw(screen)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

스프라이트와 이미지의 모든 레슨

직접 연습해 보세요: Pygame 플레이그라운드