Menu
CoddyTech

Deine erste Klasse

Teil des Abschnitts Sprites und Bilder der Pygame-Journey von Coddy. Lektion 10 von 36.

Der Stern besteht aus drei Variablen: star_x, star_y und star_speed. Für einen Stern ist das in Ordnung; ein Himmel voller Sterne braucht eine bessere Möglichkeit, die Werte jedes Sterns zusammenzuhalten.

Eine Klasse ist ein Bauplan für eine Art von Objekt. Jedes daraus erstellte Objekt trägt seine eigenen Werte, die Attribute genannt werden:

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


star = Star(320, 0)

Star(320, 0) erstellt ein neues Star-Objekt. Python führt dann darauf __init__ aus, die Funktion innerhalb der Klasse, die jedes neue Objekt einrichtet (der Name mit zwei Unterstrichen auf jeder Seite ist einer, nach dem Python sucht), und übergibt x = 320 und y = 0. Darin ist self das neue Objekt, also speichert self.x = x den Wert 320 darin. Außerhalb der Klasse greifst du auf denselben Wert mit star.x zu und änderst ihn auf dieselbe Weise: star.y += star.speed.

Klassennamen beginnen mit einem Großbuchstaben: Star ist der Bauplan, star ist ein einzelner daraus erstellter Stern.

challenge icon

Aufgabe

Einfach
  1. Schreibe eine Klasse Star, deren __init__(self, x, y) self.x, self.y und self.speed = 2 speichert.
  2. Ersetze die drei Variablen durch star = Star(320, 0).
  3. Verwende in der Schleife star.y, star.speed und star.x an den Stellen, an denen zuvor die alten Variablen standen.

Probier es selbst

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

Alle Lektionen in Sprites und Bilder

Übe selbstständig: Pygame-Playground