Przejdź do treści

Aktualizacja: 2.11.2026

Kryształowa jaskinia: gra w Pythonie krok po kroku

Czarodziej zbiera kryształy w jaskini, zanim minie 30 sekund. Nietoperze odbijają się od ścian i zabierają czas, zielony eliksir go oddaje, a co pięć kryształów w jaskini robi się tłoczniej. To pierwsza z trzech większych gier kursu Gry w Pythonie - przykłady: najprostsza w sterowaniu (strzałki), a zarazem pokazuje cały szkielet gry ze stanami start, gra i koniec.

Plansza Kryształowej jaskini w trakcie gry: czarodziej, kryształ i nietoperz, na górze Kryształy: 0 Czas: 17
Gra w trakcie: licznik kryształów i sekund na górze planszy.

Zagraj i zacznij pisać Kryształową jaskinię

Dziesięć kroków

Każdy krok jest najpierw przykładem: gotowy kod gry po tym kroku, z objaśnieniem, co doszło, do uruchomienia i prześledzenia przyciskiem Krok. Linie nowe i zmienione względem poprzedniego kroku są w edytorze zaznaczone kolorem. Potem uczeń pisze własną wersję gry w dziesięciu zadaniach. Wersja ucznia różni się kilkoma wartościami: czarodziej chodzi szybciej, gra trwa 45 sekund zamiast 30, ma inny tytuł, a nietoperz zabiera mniej czasu. Dlatego przepisanie przykładu nie wystarcza: trzeba zrozumieć, które liczby co robią. Pierwsze zadanie zaczyna się od pustego edytora, a każde następne ma przycisk “Kod z poprzedniego zadania”, który wstawia własny kod ucznia z poprzedniego kroku.

Każde zadanie sprawdza się automatycznie: platforma udaje wciśnięcie strzałek i upływ czasu, a potem patrzy, czy gra zachowała się zgodnie z poleceniem.

  1. Czarodziej w jaskini: klasa Player, ruch strzałkami przez world.key().
  2. Kryształ: klasa Crystal w losowym miejscu (random.randint), po dotknięciu (touches) przeskakuje gdzie indziej.
  3. Licznik kryształów: klasa Game jako napis na planszy (self.text), punkty za każdy kryształ.
  4. Trzydzieści sekund: licznik ticków, 30 ticków to sekunda, stany "play" i "over".
  5. Ekran startowy: stan "start", spacja zaczyna grę, napis jedzie na górę planszy.
  6. Nietoperz: klasa Bat z prędkością vx, vy, odbijanie od ścian, zderzenie zabiera czas.
  7. Więcej nietoperzy: lista nietoperzy i funkcja add_bat(), nowy nietoperz co 5 kryształów (points % 5 == 0).
  8. Eliksir czasu: przedmiot, który pojawia się co 10 sekund na chwilę i oddaje czas (visible, minutnik).
  9. Rekord i jeszcze raz: pole best, własna metoda restart(), klawisz r po końcu gry.
  10. Szlify: pulsujący kryształ i czarodziej patrzący w stronę ruchu (flip).

Czego uczy ta gra

  • Klasy i obiekty: każda postać to klasa z konstruktorem i metodą update(), wywoływaną 30 razy na sekundę.
  • Stan gry: jedna zmienna state decyduje, co się dzieje: ekran startowy, gra albo koniec. To najczęstszy wzorzec w prawdziwych grach.
  • Warunki i zdarzenia: strzałki, spacja i klawisz r, zderzenia sprawdzane w if.
  • Odbicie od ściany: zmiana znaku prędkości, gdy nietoperz dojdzie do krawędzi.
  • Losowość i listy: losowe miejsca kryształów i coraz więcej nietoperzy w liście.

Każdą z tych mechanik osobno ćwiczy kurs Gry w Pythonie - wstęp (lekcje Klawiatura, Krawędzie, Kolizje, Tekst i stan gry).

Na lekcji informatyki

Gra pasuje do klas 7-8 i liceum. Zapisuje w kodzie to, co podstawa programowa nazywa sterowaniem obiektem na ekranie, i używa instrukcji warunkowych, pętli oraz zmiennych. Po dziesięciu krokach klasa może ją rozbudować w zespołach (nowe przedmioty, poziomy, przeciwnicy), co odpowiada doświadczeniu edukacyjnemu “interaktywna symulacja lub gra” z nowej podstawy programowej.

Inne gry z kursu

Wszystkie kursy gier opisuje strona gry w Pythonie.

Lekcje do wypróbowania bez logowania

Gry w Pythonie - przykłady

Zacznij już teraz

BitWizards jest darmowy. Wypróbuj demo bez logowania albo zaloguj się do aplikacji, żeby zapisywać postęp na koncie.

Zobacz, jak zacząć