Menu
CoddyTech

Zurück zur Mitte

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

Wenn ein Spieler den Ball verfehlt, verlässt der Ball das Fenster auf seiner Seite. Bringe ihn zurück in die Mitte und schicke ihn zur anderen Seite.

if ball.right < 0 or ball.left > 600:
    ball.center = (300, 200)
    vx = -vx

ball.right < 0 bedeutet, dass der ganze Ball über den linken Rand hinaus ist, und ball.left > 600, dass der ganze Ball über den rechten Rand hinaus ist. Durch das Setzen von ball.center wird das Rect so verschoben, dass seine Mitte an diesem Punkt liegt; seine Größe bleibt gleich.

vx = -vx ist hier sicher: Der Ball befindet sich in der Mitte, weit entfernt von jedem Schläger.

challenge icon

Aufgabe

Einfach

Wenn der gesamte Ball über den linken oder rechten Rand hinaus ist, setze seinen center auf (300, 200) und kehre vx um.

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)

    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 Projekte

Übe selbstständig: Pygame-Playground