Menu
CoddyTech

La tua prima classe

Fa parte della sezione Sprite e immagini del percorso Pygame di Coddy. Lezione 10 di 36.

La stella è rappresentata da tre variabili: star_x, star_y e star_speed. Va bene per una stella; per un cielo pieno di stelle serve un modo migliore per tenere insieme i numeri di ciascuna stella.

Una classe è un progetto per un tipo di oggetto. Ogni oggetto creato a partire da essa ha i propri valori, chiamati attributi:

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 nuovo oggetto Star. Python esegue quindi __init__ su di esso, la funzione all'interno della classe che prepara ogni nuovo oggetto (il nome, con due caratteri di sottolineatura su ciascun lato, è quello che Python cerca), con x = 320 e y = 0. Al suo interno, self è il nuovo oggetto, quindi self.x = x vi memorizza 320. Fuori dalla classe puoi accedere allo stesso valore con star.x e modificarlo allo stesso modo: star.y += star.speed.

I nomi delle classi iniziano con una lettera maiuscola: Star è il progetto, star è una stella creata a partire da esso.

challenge icon

Sfida

Facile
  1. Scrivi una classe Star il cui __init__(self, x, y) memorizza self.x, self.y e self.speed = 2.
  2. Sostituisci le tre variabili con star = Star(320, 0).
  3. Nel ciclo, usa star.y, star.speed e star.x al posto delle vecchie variabili.

Provalo tu

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

Tutte le lezioni di Sprite e immagini

Esercitati da solo: Playground Pygame