Excitebike to gra typu side-scroller, w której poruszasz się motocyklem po skokach, manewrujesz wokół przeszkód i pędzisz w kierunku mety.

Nintendo po raz pierwszy wypuściło tę grę wyścigową BMX na konsolę NES. Stamtąd firma zmodernizowała Excitebike i wypuściła go na N64, a ostatecznie na Wii.

Nie ma już zbyt wielu konsol NES, co sprawia, że ​​ponowne granie w Excitebike jest trudne. Dzięki fanom retro z Wireframe Magazine fragment kodu w Pythonie może odtworzyć ten klasyk z NES i zapewnić wiele godzin zabawy na twoim Raspberry Pi lub domowym komputerze.

Pobieranie kodu i konfiguracja

Chociaż możesz użyć nano lub vima do edycji kodu Pythona, będziesz chciał skorzystać z w pełni funkcjonalnego edytor tekstu lub IDE.

Musisz zainstalować Pygame Zero, aby obsługiwać funkcje wbudowane w ten hołd dla Excitebike. Pygame Zero zawiera moduły Pythona, dzięki którym twórcy gier mogą się skupić bez konieczności powtarzania prostych podstaw.

Jeśli nie masz zainstalowanego python3 na swoim komputerze, możesz

instagram viewer
pobierz najnowszą wersję bezpośrednio z Pythona. Ty też będziesz chciał upewnij się, że masz zainstalowane PIP zbyt.

Po zainstalowaniu najnowszej wersji Pythona i PIP otwórz terminal PowerShell lub Linux i wpisz:

pip3 zainstalować pgzero

Na koniec musisz pobrać kopię kodu Pythona z repozytorium GitHub magazynu Wireframe. Wpisz następujące polecenie w terminalu:

git klon https://github.com/Wireframe-Magazine/Wireframe-66.git

Alternatywnie możesz pobierz spakowany kod bezpośrednio ze strony Wireframe GitHub.

Łamanie kodu

Aby zrozumieć, co robi kod, najpierw uruchom grę Excitebike. Zrób to, przechodząc do kodu źródłowego, a następnie uruchamiając go za pomocą Pygame Zero:

płyta CD Model szkieletowy-66/źródło-code-excitebike/
pgzrunwyjdź z roweru.py

Następnie możesz otworzyć plik exitebike.py za pomocą edytora tekstu, aby wyświetlić kod.

The rysować Funkcja rysuje tło podczas ruchu obrazu roweru. A "plama" odnosi się do bloku rysowanego na ekranie. Słowo, "tło," odnosi się do obrazu tła (połączenie obrazów z blokiem tła odbywa się dzięki zaimportowanym modułom Pygame Zero).

pokrysować():
ekran.blit("tło", (0, 0))
rysujTrack()
rower.rysować()
screen.draw.text("CZAS OKRĄŻENIA: "+str (int (time.time() - startTime)), (20, 555), color=(255,255,255), fontsize=50)
screen.draw.text("OSTATNIE OKRĄŻENIE: "+str (ostatnie okrążenie), prawy górny róg = (780, 555), kolor = (255,255,255), rozmiar czcionki = 50)

Zauważysz również obliczenia czasu okrążenia i ostatniego okrążenia (jest to reprezentowane przez licznik czasu u dołu ekranu). Czas okrążenia stale oblicza różnicę między początkowym naciśnięciem klawisza strzałki w prawo (czas rozpoczęcia) a bieżącym czasem.

Ostatnie okrążenie to podobna kalkulacja. Zamiast czasu startu, czas jest obliczany od momentu, w którym motocykl przejedzie określoną pozycję na torze (określoną jako torPoz < -4800 w kodzie). Poniższe pozycje w cudzysłowach przedstawiają obraz.

Ten kod rysuje bloki obrazu na ekranie w określonych odstępach czasu iw określonych pozycjach na ekranie. Dostarczony obraz tłumu ma tylko 100 pikseli szerokości. Jednak poniższy kod mówi komputerowi, kiedy narysować obraz, aby wyglądał tak, jakby za poruszającym się motocyklem znajdował się symulowany tłum.

Obrazy skał są wyświetlane na ekranie w dwóch częściach. Druga i trzecia linia kodu poniżej współpracują ze sobą, aby symulować scenerię w uporządkowany sposób.

Po utworzeniu kopii zapasowej kodu Pythona spróbuj zmienić poniższe liczby, aby zobaczyć, co stanie się ze skałami na ekranie!

ekran.blit("tłum1", ((t*100)+przesunięcie ścieżki-100, 0))
ekran.blit("rock1", ((t*100)+przesunięcie ścieżki-100, 270))
ekran.blit("rock1", ((t*100)+przesunięcie ścieżki-50, 270))

Chcesz zamienić swój motocykl na Monster Trucka, quada lub inny pojazd? Może chcesz ścigać się jednorożcem do mety?

Wystarczy narysować obrazek o wymiarach 50x50px (z przezroczystym tłem). Następnie umieść ten plik (picture.png) w folderze „obrazy' folder (w kod-źródłowy-excitebike teczka). Będziesz chciał utworzyć dwa obrazy (jeden o nieco zwiększonej wysokości), aby dodać trochę realizmu. Wszystko, co musisz zrobić, to zmienić odniesienie do „rower0' Tutaj:

rower = aktor('rower0', środek=(150, 350), kotwica=('Centrum', 'spód'))

Upewnij się również, że wykonujesz akcję znajdź i zamień z nazwą obrazu (bez rozszerzenia obrazu).

sprawdź rampę rowerową() to funkcja, która oblicza oś Y, aby Twój motocykl (lub ciężarówka) wjechał na rampę (i dostał trochę powietrza, jeśli masz szczęście). The klawiatura.prawa I klawiatura.lewo parametry są określone w aktualizacja() funkcjonować.

Te bity kodu mówią komputerowi, aby zwolnił lub przyspieszył motocykl (w zależności od tego, jaki klawisz naciśnie użytkownik na klawiaturze). Tłumaczenie: Im szybciej porusza się motocykl, tym wyższy numer osi Y (lub bardzo duży skok).

Poprzecznie, on_key_down (klawisz) funkcja spowoduje, że Twój motocykl spadnie z nosa.

jeśli nazwa.klucza == "W DÓŁ":
kierunek.roweru = 1
pas rowerowyY = limit(rower.pas Y + 50, 375, 525)
rower.y += kierunek.roweru

The MuckLane parametr spowolni Twój motocykl za pomocą następującego obliczenia:

muckLane = int((rower.pas Y-375)/50)+1

Linia 66 kodu określa, kiedy wyświetlić obraz „błota” na ekranie. Teraz, gdy komputer wie, kiedy twój motocykl przejedzie przez błoto, zmniejszy prędkość twojego motocykla o połowę, gdy będziesz poruszał się po błocie na torze. Zmień wartość muckLane z /50 na /25 lub /75, aby zobaczyć, co stanie się dalej.

Zawodnicy (ehem, programiści Pythona)! Włącz silnik!

Nawet jeśli nie czujesz się komfortowo programując ten hołd dla Excitebike od podstaw, ten kod jest nadal świetnym podkładem. Dostosowując go i zdając sobie sprawę z wizualnego wpływu zmian, możesz się wiele nauczyć. Czy spróbujecie dodać więcej funkcji lub wyścigów AI do swojej gry? Idź po to!

Mając trochę praktyki w Pythonie, kolejnym pomysłem do wypróbowania jest dodanie różnych poziomów po przekroczeniu linii mety po 4 lub 5 razach. Możesz także dodać nagrody za pierwsze, drugie i trzecie miejsce. Jeśli jesteś na pierwszym miejscu, dodaj także plik audio dopingujący tłum! Jest tak wiele możliwości.

Jeśli jesteś zadowolony z ulepszeń Excitebike, dlaczego nie zająć się tworzeniem tekstowej gry przygodowej? Istnieje wiele różnych elementów, dzięki którym nauczysz się czegoś ekscytującego przez wiele godzin, dni, a nawet tygodni!