Menu
CoddyTech

Punktestand

Lektion 34 von 40 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
  1. Erstelle vor der Schleife font = pygame.font.Font(None, 36), left_score = 0 und right_score = 0.
  2. Teile das Zurücksetzen in zwei Fälle auf: Ein Ball hinter dem rechten Rand erhöht left_score um 1, ein Ball hinter dem linken Rand erhöht right_score um 1. In beiden Fällen wird der Ball in die Mitte gesetzt und vx umgekehrt.
  3. Zeichne f"{left_score} : {right_score}" in (240, 240, 240), 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 Spiele mit Pygame erstellen

Übe selbstständig: Pygame-Playground