Den Schläger treffen
Lektion 32 von 41 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
MittelLass den Ball von den Schlägern abprallen.
- Setze nach dem Abprallen von der Wand, wenn der Ball mit
leftkollidiert,vx = abs(vx). - Wenn er mit
rightkollidiert, setzevx = -abs(vx).
Drücke auf „Spielen“ und fange den Ball mit dem rechten Schläger: Er prallt zurück. Drücke dann auf „Prüfen“.
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()
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