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.
Desafío
Fácil- Escribe una clase
Starcuyo__init__(self, x, y)almaceneself.x,self.yyself.speed = 2. - Reemplaza las tres variables por
star = Star(320, 0). - En el bucle, usa
star.y,star.speedystar.xdonde 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
1Cargar imágenes
Cargar una imagenColocarla con un rectánguloMover la imagenRepetir un fondo en mosaicoPíxeles transparentes2Girar, voltear y escalar
Girar alrededor del centroApuntar en la dirección del vueloEscalar una imagenGirar desde la imagen original5Colisiones precisas a nivel de píxel
Los rectángulos parecen injustosMáscarasSprites precisos a nivel de píxelHitboxes circulares3Clases para objetos del juego
Tu primera claseMétodosSelf es el objetoUna lista de objetosObjetos con imágenesUna subclase6Animación con hojas de sprites
Recortar una hoja de spritesUn contador de fotogramasAnimar con el tiempoUna explosión de una sola vezPractica por tu cuenta: Playground de Pygame