Menu
CoddyTech

Zurück zur Mitte

Lektion 33 von 40 im Kurs Spiele mit Pygame erstellen von Coddy.

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

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

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

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

challenge icon

Aufgabe

Einfach

Wenn der ganze Ball über den linken oder rechten Rand hinaus ist, setze sein 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()
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