Wer zuerst fünf Punkte erreicht
Lektion 37 von 40 im Kurs Spiele mit Pygame erstellen von Coddy.
Der erste Spieler, der 5 Punkte erreicht, gewinnt. Speichere den Namen des Gewinners in einer Variable, die zunächst None enthält, Pythons Wert für „noch nichts“:
winner = None
if left_score == 5:
winner = "Left player wins!"
elif right_score == 5:
winner = "Right player wins!"Teste es mit winner is None oder winner is not None. Sobald jemand gewonnen hat, wartet der Ball weiter: Mit der Leertaste wird nur aufgeschlagen, solange winner is None gilt.
Zeige den Gewinner zentriert bei (300, 120) anstelle der Aufschlagmeldung an.
Aufgabe
Mittel- Setze vor der Schleife
winner = None. - Setze nach der Punktevergabe
winnerauf"Left player wins!", wennleft_score == 5, oder auf"Right player wins!", wennright_score == 5. - Mit der Leertaste wird nur aufgeschlagen, solange
winner is None. - Wenn es einen Gewinner gibt, zeige ihn zentriert bei
(300, 120)stattPress Space to servean.
Probier es selbst
import pygame
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pong")
clock = pygame.time.Clock()
font = pygame.font.Font(None, 36)
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)
left_score = 0
right_score = 0
waiting = False
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
waiting = 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())
if not waiting:
ball.x += vx
ball.y += vy
if ball.top <= 0 or ball.bottom >= 400:
vy = -vy
if ball.colliderect(left):
vx = abs(vx)
vy = (ball.centery - left.centery) // 6
if ball.colliderect(right):
vx = -abs(vx)
vy = (ball.centery - right.centery) // 6
if ball.left > 600:
left_score += 1
ball.center = (300, 200)
vx = -vx
waiting = True
if ball.right < 0:
right_score += 1
ball.center = (300, 200)
vx = -vx
waiting = True
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)
score = font.render(f"{left_score} : {right_score}", True, (240, 240, 240))
screen.blit(score, score.get_rect(center=(300, 30)))
if waiting:
message = font.render("Press Space to serve", True, (240, 240, 240))
screen.blit(message, message.get_rect(center=(300, 360)))
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