Menu
CoddyTech

Dokończ grę

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

Teraz kroki od 3 do 5: wyzwanie, zakończenie i tekst. Rock Dodge przechowuje swoje skały na liście obiektów Rect: nowa skała co 400 ms, wiele naraz 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]

Ostatnia linia to składnia listowa: nowa lista zawierająca tylko skały, które wciąż są na ekranie, dzięki czemu lista nie rośnie w nieskończoność.

Zmienna tekstowa state, przyjmująca wartość "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 utworzyć timer: przetrwaj 20 sekund, aby wygrać.

Twoja gra może wykorzystywać wszystko ze ścieżki: grupę duszków zamiast listy, obrazki, dźwięk po trafieniu, muzykę, menu przed grą, najlepszy wynik, pomieszczenia zbudowane z map tekstowych.

Stwórz własną grę: zmień kolory, szybkości i zasady. Następnie zagraj w nią. Jeśli wygrana jest zbyt trudna lub przegrana następuje zbyt szybko, zmieniaj liczby, aż gra będzie sprawiać frajdę.

challenge icon

Wyzwanie

Łatwy

Dokończ swoją grę, aby zawierała:

  1. Coś, co porusza się samo.
  2. Tekst na ekranie, na przykład wynik lub licznik czasu.
  3. Zakończenie: sposób na wygraną, sposób na przegraną albo oba.

Testy sprawdzają, czy na ekranie jest tekst, czy coś porusza się bez wciśniętego klawisza, czy gra działa przez 30 sekund bez błędu oraz czy okno się zamyka. Reszta zależy od Ciebie: kształty lub obrazki, dźwięki, muzyka, stany i mapy — wszystko się sprawdzi.

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 Projekty

Poćwicz samodzielnie: Edytor online Pygame