Menu
CoddyTech

Punktestand

Lektion 34 von 41 im Kurs Spiele mit Pygame erstellen von Coddy.

Ein Ball, der rechts hinausfliegt, bringt dem linken Spieler einen Punkt, und umgekehrt. Teile die Prüfung in zwei Fälle auf, 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 Punktestände in einer Zeile oben mittig an: f"{left_score} : {right_score}" ergibt 2 : 1.

challenge icon

Aufgabe

Einfach

Führe für beide Spieler den Spielstand.

  1. Erstelle vor der Schleife font = pygame.font.Font(None, 36), left_score = 0 und right_score = 0.
  2. Geht der Ball rechts hinaus, wird left_score um 1 erhöht, links right_score; in beiden Fällen wird der Ball weiterhin zurückgesetzt.
  3. Rendere f"{left_score} : {right_score}" in (240, 240, 240), zentriert bei (300, 30).

Drücke „Spielen“ und verfehle den Ball: Der Spielstand zeigt 1 : 0. Drücke dann „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
    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()

Alle Lektionen in Spiele mit Pygame erstellen

Übe selbstständig: Pygame-Playground