Menu
CoddyTech

Tu primera clase

Parte de la sección Sprites e imágenes del Journey de Pygame de Coddy. Lección 10 de 36.

La estrella se representa mediante tres variables: star_x, star_y y star_speed. Está bien para una estrella; un cielo lleno de ellas necesita una forma mejor de mantener juntos los números de cada estrella.

Una clase es un plan para un tipo de objeto. Cada objeto creado a partir de ella lleva sus propios valores, llamados atributos:

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


star = Star(320, 0)

Star(320, 0) crea un nuevo objeto Star. Después, Python ejecuta __init__ en él, la función dentro de la clase que prepara cada objeto nuevo (el nombre, con dos guiones bajos a cada lado, es uno que Python busca), con x = 320 y y = 0. Dentro, self es el objeto nuevo, así que self.x = x almacena 320 en él. Fuera de la clase, accedes al mismo valor mediante star.x y lo cambias de la misma manera: star.y += star.speed.

Los nombres de las clases empiezan con mayúscula: Star es el plan, star es una estrella creada a partir de él.

challenge icon

Desafío

Fácil
  1. Escribe una clase Star cuyo __init__(self, x, y) almacene self.x, self.y y self.speed = 2.
  2. Reemplaza las tres variables por star = Star(320, 0).
  3. En el bucle, usa star.y, star.speed y star.x donde estaban las variables anteriores.

Pruébalo tú mismo

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()

Todas las lecciones de Sprites e imágenes

Practica por tu cuenta: Playground de Pygame