Menu
CoddyTech

Punktestand

Teil des Abschnitts Projekte der Pygame-Journey von Coddy. Lektion 16 von 31.

Ein Ball, der rechts ins Aus geht, bringt dem linken Spieler einen Punkt, und umgekehrt. Teile die Prüfung in zwei Teile, damit jede Seite weiß, wer gepunktet hat:

if ball.left > 600:
    left_score += 1
    ball.center = (300, 200)
    vx = -vx
if ball.right < 0:
    right_score += 1
    ball.center = (300, 200)
    vx = -vx

Zeige beide Punktzahlen in einer Zeile oben zentriert an: f"{left_score} : {right_score}" ergibt 2 : 1.

challenge icon

Aufgabe

Einfach
  1. Lege vor der Schleife font = pygame.font.Font(None, 36), left_score = 0 und right_score = 0 fest.
  2. Teile das Zurücksetzen in zwei Fälle auf: Ein Ball, der den rechten Rand überschreitet, erhöht left_score um 1; ein Ball, der den linken Rand überschreitet, erhöht right_score um 1. In beiden Fällen wird der Ball in die Mitte gesetzt und vx umgekehrt.
  3. Zeige f"{left_score} : {right_score}" in (240, 240, 240) an, zentriert bei (300, 30).

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)
    if ball.right < 0 or ball.left > 600:
        ball.center = (300, 200)
        vx = -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()
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Projekte

Übe selbstständig: Pygame-Playground