Menu
CoddyTech

첫 번째 클래스

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

별 하나는 세 개의 변수로 이루어져 있습니다. star_x, star_y, star_speed입니다. 별 하나에는 괜찮지만, 별이 가득한 하늘에서는 각 별의 숫자들을 함께 보관할 더 나은 방법이 필요합니다.

클래스는 특정 종류의 객체를 만들기 위한 설계도입니다. 클래스로 만든 각 객체에는 속성이라고 하는 고유한 값이 담깁니다.

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


star = Star(320, 0)

Star(320, 0)은 새 Star 객체를 만듭니다. 그러면 Python은 x = 320과 y = 0을 전달해 __init__을 실행합니다. __init__은 클래스 안에서 각 새 객체를 설정하는 함수입니다(양쪽에 밑줄이 두 개씩 있는 이 이름을 Python이 찾습니다). 내부에서 self는 새 객체이므로 self.x = x는 그 객체에 320을 저장합니다. 클래스 바깥에서는 star.x로 같은 값에 접근하고, 같은 방식으로 값을 바꿀 수 있습니다. 예를 들어 star.y += star.speed처럼 쓸 수 있습니다.

클래스 이름은 대문자로 시작합니다. Star는 설계도이고, star는 그 설계도로 만든 별 하나입니다.

challenge icon

챌린지

쉬움
  1. Star 클래스를 작성하고, __init__(self, x, y)에서 self.x, self.y 및 self.speed = 2를 저장하세요.
  2. 세 변수를 star = Star(320, 0)로 바꾸세요.
  3. 반복문에서 기존 변수가 있던 자리에 star.y, star.speed 및 star.x를 사용하세요.

직접 해보기

import pygame

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

star_x = 320
star_y = 0
star_speed = 2

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

    star_y += star_speed
    if star_y > 480:
        star_y = 0

    screen.fill((20, 22, 40))
    pygame.draw.circle(screen, (255, 255, 255), (star_x, star_y), 4)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

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

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