Menu
CoddyTech

Dokończ swoją grę

Lekcja 41 z 41 w kursie Twórz gry w Pygame w Coddy.

Teraz kroki 3–5: wyzwanie, zakończenie i tekst. Rock Dodge przechowuje swoje kamienie w liście obiektów Rect: nowy kamień co 400 ms, wiele kamieni jednocześnie na ekranie.

rocks = []

# przy zdarzeniu timera NEW_ROCK:
rocks.append(pygame.Rect(random.randint(0, 450), -30, 30, 30))

# w każdej klatce:
for rock in rocks:
    rock.y += 5
    if rock.colliderect(player):
        state = "lost"
rocks = [rock for rock in rocks if rock.top < 360]

Ostatni wiersz to składnia listowa: nowa lista zawierająca tylko kamienie, które wciąż są na ekranie, dzięki czemu lista nie rośnie bez końca.

Ciąg znaków state: "playing", "lost" lub "won", decyduje o tym, co robi każda klatka, tak jak w Sky Runner. A pygame.time.get_ticks() zwraca liczbę milisekund od rozpoczęcia gry, co pozwala ustawić timer: przetrwaj 20 sekund, aby wygrać.

Twoja gra może wykorzystywać wszystko z tego kursu, a ścieżka Pygame pokazuje jeszcze więcej: duszki, obrazy, dźwięk, menu, najlepsze wyniki i mapy.

Stwórz grę po swojemu: zmień kolory, prędkości i zasady. Potem zagraj. Jeśli wygrana jest zbyt trudna albo przegrana następuje zbyt szybko, zmieniaj liczby, aż gra będzie sprawiać przyjemność.

challenge icon

Wyzwanie

Łatwy

Dokończ swoją grę.

  1. Dodaj coś, co porusza się samo.
  2. Wyświetl tekst na ekranie, na przykład wynik lub timer.
  3. Dodaj zakończenie: sposób na wygraną, sposób na przegraną lub oba.

Naciśnij „Graj”: coś porusza się samo, a Twój tekst jest wyświetlany. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Rock Dodge")
clock = pygame.time.Clock()

player = pygame.Rect(220, 320, 40, 20)

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_LEFT]:
        player.x -= 7
    if keys[pygame.K_RIGHT]:
        player.x += 7
    player.clamp_ip(screen.get_rect())

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), player)
    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 Twórz gry w Pygame

Poćwicz samodzielnie: Edytor online Pygame