Den Schläger treffen
Lektion 32 von 40 im Kurs Spiele mit Pygame erstellen von Coddy.
Wenn der Ball einen Schläger berührt, sollte er in die andere Richtung zurückfliegen. ball.colliderect(right) zeigt dir, ob sie sich berühren.
Das Vorzeichen umzukehren, vx = -vx, hat einen Haken. Wenn sich der Ball im nächsten Frame noch im Schläger befindet (er hat das Ende des Schlägers getroffen oder der Schläger ist auf ihn zugefahren), wird das Vorzeichen immer wieder umgekehrt: Der Ball zittert im Schläger.
Lege die Richtung fest, anstatt das Vorzeichen umzukehren. abs(vx) ist vx ohne sein Vorzeichen, also immer positiv:
if ball.colliderect(left):
vx = abs(vx)
if ball.colliderect(right):
vx = -abs(vx)Am linken Schläger fliegt der Ball immer nach rechts und am rechten Schläger immer nach links, egal wie viele Frames sie sich berühren.
Aufgabe
MittelNach dem Abprallen von der Wand: Wenn der Ball mit left kollidiert, setze vx = abs(vx); wenn er mit right kollidiert, setze vx = -abs(vx).
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
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