Self ist das Objekt
Teil des Abschnitts Sprites und Bilder der Pygame-Journey von Coddy. Lektion 12 von 36.
Eine Klasse kann beliebig viele Objekte erzeugen, und jedes behält seine eigenen Attribute. Gib __init__ einen Geschwindigkeitsparameter, und zwei Sterne können mit unterschiedlichen Geschwindigkeiten fallen:
slow = Star(200, 0, 1)
fast = Star(440, 0, 3)Wenn du slow.update() schreibst, führt Python Star.update(slow) aus: self ist slow, also bewegt self.y += self.speed slow um 1. fast.update() führt dieselben Zeilen mit self auf fast gesetzt aus und bewegt es um 3. Eine Methode, zwei Objekte, und keines greift auf die Zahlen des anderen zu.
Deshalb braucht jeder Wert, der zu einem Objekt gehört, ein self. davor. Ein Name ohne dieses Präfix, wie speed, ist eine einfache lokale Variable der Methode: Sie verschwindet, wenn die Methode endet.
Aufgabe
Einfach- Gib
__init__einen dritten Parameter,speed, und speichere ihn alsself.speed. - Ersetze
stardurch zwei Sterne:slow = Star(200, 0, 1)undfast = Star(440, 0, 3). - Aktualisiere und zeichne beide Sterne in jedem Frame.
Probier es selbst
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()
Alle Lektionen in Sprites und Bilder
1Bilder laden
Ein Bild ladenMit einem Rect platzierenDas Bild bewegenEinen Hintergrund kachelnTransparente Pixel2Drehen, Spiegeln, Skalieren
Um den Mittelpunkt drehenIn Flugrichtung ausrichtenEin Bild skalierenVom Original aus drehen3Klassen für Spielobjekte
Deine erste KlasseMethodenSelf ist das ObjektEine Liste von ObjektenObjekte mit BildernEine Unterklasse6Animation mit Sprite Sheets
Ein Sprite Sheet zuschneidenEin Frame-ZählerMit Zeit animierenEine einmalige ExplosionÜbe selbstständig: Pygame-Playground