Utwórz hołd dla Excitebike za pomocą Pythona

Utwórz hołd dla Excitebike za pomocą Pythona

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





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





Niewiele konsol NES już istnieje, co sprawia, że ​​gra w Excitebike jest trudna do zdobycia. Dzięki niektórym fanom retro w Wireframe Magazine, fragment kodu Pythona może odtworzyć ten klasyk NES na wiele godzin zabawy na twoim Raspberry Pi lub komputerze domowym.





MAKEUSEOF WIDEO DNIA

Pobieranie kodu i konfiguracja

Chociaż możesz użyć nano lub vim 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 pobierz najnowszą wersję bezpośrednio z Pythona. Będziesz także chciał upewnij się, że masz zainstalowany PIP także.

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





pip3 install pgzero 

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

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

Alternatywnie możesz pobierz skompresowany kod bezpośrednio ze strony GitHub szkieletowej.





Ł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:

cd Wireframe-66/source-code-excitebike/ 
pgzrun exitebike.py

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

  Fragment kodu excitebike python

The remis funkcja rysuje tło w miarę poruszania się obrazu roweru. A ' zostawać „ odnosi się do bloku narysowanego 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).

jak sprawdzić wiadomości z Instagrama na komputerze?
def draw(): 
screen.blit("background", (0, 0))
drawTrack()
bike.draw()
screen.draw.text("LAP TIME: "+str(int(time.time() - startTime)), (20, 555),color=(255,255,255) , fontsize=50)
screen.draw.text("LAST LAP: "+str(lastLap), topright = (780, 555),color=(255,255,255) , fontsize=50)

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

Ostatnie okrążenie to podobna kalkulacja. Zamiast czasu startu, czas jest liczony od momentu, w którym motocykl mija wcześniej określoną pozycję na torze (wspomniana jako trackPos < -4800 w kodzie). Poniższe pozycje w cudzysłowie 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 ma narysować obraz, aby wyglądało to 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 dzieje się z kamieniami na ekranie!

screen.blit("crowd1", ((t*100)+trackOffset-100, 0)) 
screen.blit("rock1", ((t*100)+trackOffset-100, 270))
screen.blit("rock1", ((t*100)+trackOffset-50, 270))

Chcesz zastąpić swój motocykl monster truckiem, czterokołowcem lub innym pojazdem? Może chcesz ścigać się z jednorożcem do mety?

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

bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  gra w pytona excitebike z ciężarówką

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

checkRampaRowerowa() to funkcja, która wykonuje pracę, aby obliczyć oś Y, dzięki czemu Twój motocykl (lub ciężarówka) wjedzie na rampę (i dostaje solidne powietrze, jeśli masz szczęście). The klawiatura.prawo oraz klawiatura.lewa parametry są zdefiniowane w aktualizacja() funkcjonować.

Te bity kodu informują komputer o spowolnieniu lub przyspieszeniu motocykla (w zależności od tego, jaki klawisz naciśnie użytkownik na klawiaturze). Tłumaczenie: Im szybciej porusza się twój motocykl, tym wyższa liczba osi Y (lub bardzo duży skok).

Poprzecznie, on_key_down(klucz) funkcja wyśle ​​​​Twój motocykl do nurkowania.

if key.name == "DOWN": 
bike.direction = 1
bike.laneY = limit(bike.laneY + 50, 375, 525)
bike.y += bike.direction

The muckLane parametr spowolni Twój motocykl przy użyciu następującego obliczenia:

muckLane = int((bike.laneY-375)/50)+1

Linia 66 kodu określa, kiedy wyświetlić na ekranie obraz „muck”. Teraz, gdy komputer wie, kiedy motocykl przejedzie przez błoto, spowolni go o połowę, gdy przejedziesz przez błoto na torze. Zmień wartość muckLane z /50 na /25 lub /75, aby zobaczyć, co stanie się dalej.

Kierowcy (ahem, 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. Modyfikując go i zdając sobie sprawę z wizualnego wpływu zmian, możesz się wiele nauczyć. Czy spróbujesz dodać więcej funkcji lub kierowców AI do swojej gry? Idź po to!

Z odrobiną praktyki Pythona za pasem, innym pomysłem, który możesz wypróbować, jest dodanie różnych poziomów po przekroczeniu linii mety po 4 lub 5 razach. Możesz też dodać nagrody za pierwsze, drugie i trzecie miejsce. Jeśli jesteś na pierwszym miejscu, dodaj też plik audio dopingujący tłum! Jest tak wiele możliwości.

Kiedy jesteś zadowolony z ulepszeń Excitebike, dlaczego nie zająć się tworzeniem tekstowej gry przygodowej? Istnieje wiele różnych elementów, które zapewnią, że będziesz uczyć się czegoś ekscytującego przez godziny, dni, a nawet tygodnie!