Menu
CoddyTech

Obracaj względem oryginału

Część sekcji Sprite’y i obrazy ścieżki Pygame w Coddy. Lekcja 9 z 36.

Kula z kolcami, która cały czas się obraca, wykonuje niewielki obrót w każdej klatce. Można ją zapisać w kuszący sposób, ale to nie zadziała:

ball = pygame.transform.rotate(ball, 2)  # błędne

W każdej klatce obracany jest obraz z poprzedniej klatki. Każdy obrót dodaje przezroczystą obwódkę, więc powierzchnia rośnie o około 3 procent w każdej klatce: po pół sekundy jest dwa razy większa, a po dwóch sekundach ma prawie 1800 pikseli szerokości. Piksele rozmazują się też trochę bardziej z każdym obrotem. Gra wkrótce zaczyna działać bardzo wolno.

Zamiast tego zachowaj oryginał i kąt, a obracany obraz twórz w każdej klatce na podstawie oryginału:

angle += 2
spun = pygame.transform.rotate(ball, angle)
screen.blit(spun, spun.get_rect(center=(320, 240)))

Teraz spun jest oddalony o jeden obrót od pliku, niezależnie od kąta: nigdy nie przekracza rozmiaru 67 na 67 pikseli i nigdy nie jest bardziej rozmazany niż po jednym obrocie. Ta sama zasada dotyczy każdej transformacji: pracuj na oryginale, a nie na ostatniej kopii.

challenge icon

Wyzwanie

Średni
  1. Przed pętlą ustaw angle = 0.
  2. W każdej klatce dodaj 2 do angle.
  3. Obróć oryginalny ball o angle i narysuj wynik tak, aby jego środek znajdował się w punkcie (320, 240). Nigdy nie zmieniaj samego ball.

Spróbuj swoich sił

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Spinning Spikes")
clock = pygame.time.Clock()

ball = pygame.image.load("assets/images/spike_ball.png").convert_alpha()

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

    screen.fill((20, 22, 40))
    screen.blit(ball, ball.get_rect(center=(320, 240)))
    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 Sprite’y i obrazy

Poćwicz samodzielnie: Edytor online Pygame