Self è l’oggetto
Fa parte della sezione Sprite e immagini del percorso Pygame di Coddy. Lezione 12 di 36.
Una classe può creare tutti gli oggetti che vuoi e ciascuno conserva i propri attributi. Aggiungi a __init__ un parametro speed e due stelle possono cadere a velocità diverse:
slow = Star(200, 0, 1)
fast = Star(440, 0, 3)Quando scrivi slow.update(), Python esegue Star.update(slow): self è slow, quindi self.y += self.speed sposta slow di 1. fast.update() esegue le stesse righe con self impostato su fast e lo sposta di 3. Un metodo, due oggetti, e nessuno dei due tocca i numeri dell'altro.
Ecco perché ogni valore appartenente a un oggetto deve avere self. davanti. Un nome senza, come speed, è una semplice variabile locale del metodo: scompare quando il metodo termina.
Sfida
Facile- Aggiungi a
__init__un terzo parametro,speed, e memorizzalo comeself.speed. - Sostituisci
starcon due stelle:slow = Star(200, 0, 1)efast = Star(440, 0, 3). - Aggiorna e disegna entrambe le stelle a ogni fotogramma.
Provalo tu
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Falling Star")
clock = pygame.time.Clock()
class Star:
def __init__(self, x, y):
self.x = x
self.y = y
self.speed = 2
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)
star = Star(320, 0)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
star.update()
screen.fill((20, 22, 40))
star.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Tutte le lezioni di Sprite e immagini
1Caricare immagini
Caricare un'immaginePosizionarla con un rettangoloSpostare l'immagineRipetere uno sfondoPixel trasparenti2Ruota, capovolgi, ridimensiona
Ruotare attorno al centroRivolgiti nella direzione in cui voliRidimensionare un'immagineRuotare dall'originale3Classi per gli oggetti del gioco
La tua prima classeMetodiSelf è l’oggettoUna lista di oggettiOggetti con immaginiUna sottoclasse6Animazione con gli sprite sheet
Ritagliare uno sprite sheetUn contatore di frameAnimare con il tempoUn’esplosione a riproduzione singolaEsercitati da solo: Playground Pygame