Menu
CoddyTech

Eine Szene aus Formen

Teil des Abschnitts Die Spielschleife der Pygame-Journey von Coddy. Lektion 11 von 32.

Ein Bild in einem Spiel besteht oft aus vielen kleinen Formen. Ein Baum besteht hier aus einem braunen Stamm mit einem grünen Kreis oben drauf. Zeichne mehrere davon, und du hast einen Wald.

Wenn dieselbe Gruppe von Formen mehr als einmal vorkommt, packe sie in eine Funktion, die die Position entgegennimmt. Jeder Aufruf zeichnet einen Baum:

def draw_tree(x, y):
    pygame.draw.rect(screen, (120, 80, 40), (x - 5, y, 10, 30))
    pygame.draw.circle(screen, (60, 170, 90), (x, y), 20)

draw_tree(80, 250)
draw_tree(240, 250)

Jede Form in der Funktion wird anhand von x und y positioniert. Einen Baum zu verschieben bedeutet also, einen Aufruf zu ändern.

Die Reihenfolge innerhalb der Funktion ist weiterhin wichtig. Der Stamm beginnt in der Mitte des Kreises, und der Kreis wird als Zweites gezeichnet, sodass er den oberen Teil des Stamms verdeckt. Vertausche die beiden Zeilen, und der Stamm scheint durch die Blätter hindurch.

challenge icon

Aufgabe

Einfach
  1. Zeichne in draw_tree nach dem Stamm die Krone: einen grünen Kreis (60, 170, 90) mit Mittelpunkt (x, y) und Radius 20.
  2. Rufe es unter draw_tree(80, 250) noch zweimal auf, für Bäume bei (240, 250) und (400, 250).

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Forest")
clock = pygame.time.Clock()


def draw_tree(x, y):
    pygame.draw.rect(screen, (120, 80, 40), (x - 5, y, 10, 30))


running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((30, 30, 46))
    pygame.draw.circle(screen, (240, 240, 210), (70, 60), 24)
    pygame.draw.rect(screen, (40, 90, 50), (0, 280, 480, 80))
    draw_tree(80, 250)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Alle Lektionen in Die Spielschleife

Übe selbstständig: Pygame-Playground