Zurück zur Mitte
Lektion 33 von 40 im Kurs Spiele mit Pygame erstellen von Coddy.
Wenn ein Spieler den Ball verfehlt, verlässt der Ball das Fenster auf seiner Seite. Bring ihn zurück in die Mitte und schicke ihn in Richtung der anderen Seite.
if ball.right < 0 or ball.left > 600:
ball.center = (300, 200)
vx = -vxball.right < 0 bedeutet, dass sich der ganze Ball hinter dem linken Rand befindet, und ball.left > 600, dass sich der ganze Ball hinter dem rechten Rand befindet. Durch das Setzen von ball.center wird das Rect so verschoben, dass seine Mitte an diesem Punkt liegt; seine Größe bleibt gleich.
Das vx = -vx ist hier unbedenklich: Der Ball befindet sich in der Mitte, weit entfernt von jedem Schläger.
Aufgabe
EinfachWenn der ganze Ball über den linken oder rechten Rand hinaus ist, setze sein center auf (300, 200) und kehre vx um.
Probier es selbst
import pygame
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pong")
clock = pygame.time.Clock()
ball = pygame.Rect(293, 193, 14, 14)
vx, vy = 5, 4
left = pygame.Rect(20, 160, 12, 80)
right = pygame.Rect(568, 160, 12, 80)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
left.y -= 6
if keys[pygame.K_s]:
left.y += 6
if keys[pygame.K_UP]:
right.y -= 6
if keys[pygame.K_DOWN]:
right.y += 6
left.clamp_ip(screen.get_rect())
right.clamp_ip(screen.get_rect())
ball.x += vx
ball.y += vy
if ball.top <= 0 or ball.bottom >= 400:
vy = -vy
if ball.colliderect(left):
vx = abs(vx)
if ball.colliderect(right):
vx = -abs(vx)
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), left)
pygame.draw.rect(screen, (235, 80, 80), right)
pygame.draw.rect(screen, (255, 196, 0), ball)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Spiele mit Pygame erstellen
1Die Spielschleife
Ein Fenster öffnenDen Hintergrund füllen4Zwei Spieler und ein Ball
Der BallAbprallenÜbe selbstständig: Pygame-Playground