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.

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.
- Czarodziej w jaskini: klasa
Player, ruch strzałkami przezworld.key(). - Kryształ: klasa
Crystalw losowym miejscu (random.randint), po dotknięciu (touches) przeskakuje gdzie indziej. - Licznik kryształów: klasa
Gamejako napis na planszy (self.text), punkty za każdy kryształ. - Trzydzieści sekund: licznik ticków, 30 ticków to sekunda, stany
"play"i"over". - Ekran startowy: stan
"start", spacja zaczyna grę, napis jedzie na górę planszy. - Nietoperz: klasa
Batz prędkościąvx,vy, odbijanie od ścian, zderzenie zabiera czas. - Więcej nietoperzy: lista nietoperzy i funkcja
add_bat(), nowy nietoperz co 5 kryształów (points % 5 == 0). - Eliksir czasu: przedmiot, który pojawia się co 10 sekund na chwilę i oddaje czas (
visible, minutnik). - Rekord i jeszcze raz: pole
best, własna metodarestart(), klawiszrpo końcu gry. - 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
statedecyduje, 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 wif. - 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
- Meteorytowy deszcz: strzelanka sterowana myszą.
- Żabi skok: skakanka z grawitacją i podwójnym skokiem.
Wszystkie kursy gier opisuje strona gry w Pythonie.