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 = 500Dasselbe 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.
Aufgabe
EinfachWickle den Felsen nach pos += vel * dt um:
- Über 500 wird
pos.xzu -20; unter -20 wird es zu 500. - Über 380 wird
pos.yzu -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()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Die Spielschleife
1Bewege ein Quadrat
Öffne ein FensterFülle den Hintergrund4Bewegung nach Zeit
Delta-ZeitPixel pro SekundeVector2Beschleunigung und ReibungAm Bildschirmrand umkehrenÜbe selbstständig: Pygame-Playground