Menu
CoddyTech

Methoden

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

Die Zahlen des Sterns befinden sich jetzt in der Klasse, aber die Regeln dafür, wie er fällt und gezeichnet wird, stehen immer noch in der Schleife. Funktionen, die innerhalb einer Klasse geschrieben werden, sind Methoden, und sie bringen die Regeln und die Daten zusammen:

class Star:
    # __init__ wie zuvor

    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)

Der erste Parameter jeder Methode ist self, das Objekt, auf dem sie ausgeführt wird. Du rufst eine Methode für ein Objekt mit einem Punkt auf, und pygame's Surface wird wie jedes andere Argument übergeben:

star.update()
star.draw(screen)

Die Hauptschleife beschreibt jetzt, was in einem Frame passiert: Aktualisiere den Stern und zeichne ihn dann. Spielobjekte in pygame-Programmen haben fast immer diese beiden Methoden: update und draw.

challenge icon

Aufgabe

Mittel
  1. Füge Star eine Methode update(self) hinzu: Sie addiert self.speed zu self.y und setzt den Stern wieder auf y = 0, sobald self.y größer als 480 ist.
  2. Füge draw(self, screen) hinzu: den weißen Kreis mit Radius 4 bei (self.x, self.y).
  3. Rufe in der Schleife star.update() und nach dem Füllen star.draw(screen) auf.

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


star = Star(320, 0)

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()
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Sprites und Bilder

Übe selbstständig: Pygame-Playground