Menu
CoddyTech

Odbicie

Część sekcji Projekty ścieżki Pygame w Coddy. Lekcja 12 z 31.

Piłka odbija się od górnej i dolnej krawędzi. W chwili, gdy dotknie jednej z nich, zmień znak vy: ruch w dół zmieni się w ruch w górę o tę samą wartość.

if ball.top <= 0 or ball.bottom >= 400:
    vy = -vy

Użyj <= i >=, a nie ==. Piłka przesuwa się o 4 piksele na klatkę, więc jej dolna krawędź znajduje się kolejno na wysokości 395, 399, 403 i nigdy dokładnie na 400.

Lewa i prawa krawędź to miejsca, w których zdobywa się punkty, więc piłka się tam nie odbija. Na razie wylatuje poza ekran.

challenge icon

Wyzwanie

Łatwy

Po przesunięciu piłki odwróć vy, gdy górna krawędź piłki znajduje się na 0 lub niżej albo jej dolna krawędź na 400 lub wyżej.

Spróbuj swoich sił

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

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    ball.x += vx
    ball.y += vy

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 196, 0), ball)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Projekty

Poćwicz samodzielnie: Edytor online Pygame