Menu
CoddyTech

Erreiche das Ziel

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

Ein Spiel braucht ein Ziel. Zeichne ein grünes Quadrat in die untere rechte Ecke. Wenn das Quadrat des Spielers hineingelangt, gewinnt der Spieler.

Das Ziel befindet sich bei (420, 300) und ist 60 mal 60 groß. Das Quadrat des Spielers befindet sich darin, wenn seine linke Seite bei 420 oder weiter rechts und seine obere Seite bei 300 oder weiter unten ist. Beides muss zutreffen, also verknüpfe die Bedingungen mit and.

Der Gewinnzustand muss bestehen bleiben. Speichere ihn in einer Variablen, die mit False beginnt und nur True werden kann:

won = False

while running:
    # Bewege das Quadrat
    if x >= 420 and y >= 300:
        won = True
    if won:
        screen.fill((40, 110, 70))
    else:
        screen.fill((30, 30, 46))

Sobald won den Wert True hat, wird nichts mehr auf einen anderen Wert gesetzt. Deshalb bleibt der Hintergrund grün, selbst wenn das Quadrat das Ziel verlässt.

challenge icon

Aufgabe

Einfach
  1. Setze vor der Schleife won = False.
  2. Nachdem du x und y begrenzt hast, setze won = True, wenn x >= 420 und y >= 300.
  3. Fülle den Bildschirm mit (40, 110, 70), wenn won wahr ist, und andernfalls mit (30, 30, 46).
  4. Zeichne vor dem Quadrat des Spielers das Ziel: Grün (60, 200, 120) bei (420, 300, 60, 60).

Probier es selbst

import pygame

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

x, y = 220, 160

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

    keys = pygame.key.get_pressed()
    speed = 4
    if keys[pygame.K_SPACE]:
        speed = 8
    if keys[pygame.K_LEFT]:
        x -= speed
    if keys[pygame.K_RIGHT]:
        x += speed
    if keys[pygame.K_UP]:
        y -= speed
    if keys[pygame.K_DOWN]:
        y += speed

    x = max(0, min(x, 480 - 40))
    y = max(0, min(y, 360 - 40))

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 196, 0), (x, y, 40, 40))
    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 Die Spielschleife

Übe selbstständig: Pygame-Playground