Menu
CoddyTech

Am Bildschirmrand umkehren

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

In vielen Weltraumspielen kommt ein Raumschiff oder ein Felsen, der eine Seite des Bildschirms verlässt, auf der anderen wieder herein. Das nennt man Wrapping. Der Felsen hier treibt nach oben und rechts, und nach ein paar Sekunden ist er endgültig verschwunden.

Prüfe nach der Bewegung jede Kante. Der Radius des Felsens beträgt 20, lass ihn also vollständig aus dem Sichtfeld verschwinden, bevor er springt: rechts hinter 480 + 20 kommt er bei -20 zurück, außerhalb des Sichtfelds hinter der linken Kante, und gleitet wieder hinein.

if pos.x > 500:
    pos.x = -20
if pos.x < -20:
    pos.x = 500

Dasselbe gilt für y und die Höhe: Unten hinter 380 kommt er bei -20 zurück, und oberhalb von -20 kommt er bei 380 zurück.

Nur die Position springt. Die Geschwindigkeit bleibt gleich, daher treibt der Felsen nach dem Wrapping in dieselbe Richtung weiter.

challenge icon

Aufgabe

Einfach

Wickle den Felsen nach pos += vel * dt um:

  1. Über 500 wird pos.x zu -20; unter -20 wird es zu 500.
  2. Über 380 wird pos.y zu -20; unter -20 wird es zu 380.

Probier es selbst

import pygame

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

pos = pygame.Vector2(240, 180)
vel = pygame.Vector2(120, -70)
dt = 0

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

    pos += vel * dt

    screen.fill((20, 20, 34))
    pygame.draw.circle(screen, (150, 150, 160), pos, 20)
    pygame.display.flip()
    dt = clock.tick(60) / 1000

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