Snake jest pierwszą prawdziwą grą większości ludzi, którzy uczą się Pythona, i to nie jest przypadek. Ma wszystko, co ma każda gra: okno, pętlę, sterowanie, kolizje i wynik. A każdy z tych kawałków da się napisać w kilku linijkach, zrozumieć w całości i zmienić po swojemu.
Wąż to lista. Cała reszta wynika z tego jednego zdania
Plansza Snake'a to siatka. Każde pole ma adres, czyli dwie liczby: którą kolumnę i który wiersz zajmuje. Wąż to po prostu lista takich adresów, od głowy do ogona. Trzy segmenty to trzy pary liczb w liście. Kiedy to widzisz, ruch węża przestaje być tajemnicą. Nowa głowa wchodzi na początek listy, ostatni kawałek ogona wypada z końca. Reszta zostaje na miejscu, a na ekranie wygląda to tak, jakby całe ciało przesunęło się o jedno pole.
Poniżej jest prawdziwy Python. Wąż leży poziomo, głowa na polu (5, 3). Kliknij Uruchom i zobacz, co robi jeden ruch w prawo.
↑ kliknij „Uruchom", żeby zobaczyć wynik
Dwie linijki: insert dokłada nową głowę, pop zabiera ogon. A teraz najlepsze.
Wzrost węża po zjedzeniu to ta sama operacja bez jednej linijki. Nowa głowa wchodzi,
ogon zostaje, lista jest o jeden dłuższa. Nie ma osobnego kodu na rośnięcie. Jest tylko warunek:
jeśli głowa trafiła na jedzenie, nie wywołuj pop.
Siedem kroków, w których wąż staje się grą
Gra nie powstaje naraz. Kolejność poniżej to kolejność, w której każdy krok daje coś widocznego na ekranie, a następny buduje na poprzednim.
- Okno i pętla. Pygame otwiera okno, a program wchodzi w pętlę, która w kółko robi trzy rzeczy: czyta klawisze, przelicza stan gry i rysuje klatkę. Zegar pilnuje, żeby na każdym komputerze działo się to w tym samym tempie.
- Siatka zamiast pikseli. Okno ma setki pikseli, ale wąż myśli polami. Jedno pole to na przykład dwadzieścia pikseli. Od tej chwili każda pozycja w grze to mała liczba, którą da się sprawdzić w głowie.
- Ruchoma głowa. Dwie zmienne mówią, o ile pól w poziomie i w pionie przesuwa się głowa w każdej klatce. Jedna linijka z
+=i kwadrat jedzie po ekranie. To jest pierwszy moment, w którym coś się dzieje samo, i pierwszy, w którym ludzie zaczynają się uśmiechać. - Sterowanie. Strzałka zmienia kierunek. Do tego jedna zasada, o której początkujący zawsze zapominają: wąż nie może zawrócić w miejscu, bo wjechałby w własne ciało.
- Ciało. Tu wchodzi lista z przykładu wyżej. Rysowanie całego węża to pętla po liście, ruch to
insertipop. - Jedzenie i wzrost. Losowe pole na planszy, z jednym haczykiem: losujesz tak długo, aż jedzenie nie wypadnie na wężu. Głowa równa jedzeniu oznacza zjedzenie, a zjedzenie oznacza brak
pop. - Śmierć, ekran końcowy i restart. Głowa poza planszą albo głowa w ciele kończy grę. Jedna zmienna pamięta, czy gra trwa. Na ekranie pojawia się napis, klawisz R zaczyna od nowa, a z każdym zjedzonym kawałkiem wąż przyspiesza.
Po siódmym kroku masz grę, w którą ktoś inny może zagrać bez tłumaczenia. Nic więcej nie jest potrzebne, żeby to była gra. Wszystko więcej, na przykład rekord zapisany na dysku, to już dodatek na deser.
Ile to realnie trwa
Ruchoma głowa węża powstaje w pierwszy wieczór. Nic nie trzeba wcześniej instalować, bo kod pisze się i uruchamia w przeglądarce, w oknie kursu o nazwie Kokpit. Cała gra, z jedzeniem, śmiercią i ekranem końcowym, to w naszym kursie 25 lekcji. Przy pół godzinie dziennie to kilka tygodni. Kto obiecuje kompletnego Snake'a w godzinę, mówi o przepisaniu gotowego kodu, a to kończy się w miejscu opisanym w tekście o tym, czego nie nauczy YouTube: wąż jeździ, a pierwszej własnej zmiany nie da się zrobić.
Kilka tygodni brzmi długo tylko do momentu, w którym policzysz, co po drodze powstaje. Listy, krotki, funkcje, losowanie, warunki złożone, maszyna stanów. To są te same klocki, z których zbudowany jest statek strzelający w asteroidy i każda następna gra.
Co trzeba umieć, zanim usiądziesz do węża
Uczciwie, bo od tego zależy, czy Snake będzie frajdą, czy ścianą. Snake nie uczy Pythona od zera.
Zakłada, że zmienna, warunek if, pętla i funkcja to słowa, które już coś znaczą. Listy
i krotki kurs wprowadza sam, w momencie, w którym są potrzebne.
Kto ma te podstawy z Podstaw Pythona albo z innego miejsca, jest na miejscu. Kto zaczyna kompletnie od zera, lepiej zrobi, jeśli najpierw przejdzie Podstawy. Działają w przeglądarce, bez instalowania, a każde ćwiczenie sprawdza kod od razu. Wąż poczeka i będzie potem dwa razy prostszy.
Druga rzecz do powiedzenia wprost: gra z oknem i klawiszami potrzebuje Pythona i Pygame na komputerze. Instalacja jest częścią kursu, krok po kroku, i robi się ją raz. Jeśli przed decyzją chcesz jeszcze porównać drogi, mamy tekst o tym, od czego zacząć robienie gry w Pythonie.
Zbuduj własnego węża
Kurs Snake XTRA prowadzi od pustego okna do gry, która liczy punkty, kończy się ekranem końcowym i przyspiesza z każdym zjedzonym jabłkiem. Pierwsze lekcje są darmowe i sięgają węża, który słucha strzałek i nie da się go zawrócić w samego siebie.
Zobacz kurs Snake →Zupełnie od zera? Zacznij od Podstaw Pythona, w przeglądarce.
Uczymy Pythona przez budowanie własnych gier: od pierwszej linijki po działający efekt. Kto za tym stoi?