Excitebike je hra s bočním posuvníkem, ve které jezdíte na motorce přes skoky, manévrujete kolem překážek a spěcháte k cílové čáře.

Nintendo poprvé spustilo tuto závodní hru BMX pro NES. Odtud společnost modernizovala Excitebike a vydala jej na N64 a nakonec na Wii.

Už neexistuje mnoho konzolí NES, což ztěžuje hraní Excitebike znovu. Díky některým retro fanouškům z Wireframe Magazine může úryvek kódu Python znovu vytvořit tuto klasiku NES pro hodiny zábavy na vašem Raspberry Pi nebo domácím PC.

Získání kódu a nastavení

Ačkoli můžete k úpravě kódu pythonu použít nano nebo vim, budete chtít využít plnohodnotné textový editor nebo IDE.

Budete si muset nainstalovat Pygame Zero, abyste podporovali funkce zabudované v této poctě Excitebike. Pygame Zero obsahuje moduly Pythonu, na které se mohou tvůrci her soustředit, aniž by museli opakovat jednoduché základy.

Pokud nemáte na svém PC nainstalovaný python3, můžete stáhnout nejnovější verzi přímo z Pythonu. Budete také chtít ujistěte se, že máte nainstalovaný PIP také.

instagram viewer

S nainstalovanou nejnovější verzí Pythonu a PIP otevřete svůj terminál PowerShell nebo Linux a zadejte:

pip3 Nainstalujte pgzero

Nakonec si budete muset vyzvednout kopii kódu Python z úložiště GitHub časopisu Wireframe. Do terminálu zadejte následující příkaz:

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

Případně můžete stáhněte si zazipovaný kód přímo ze stránky Wireframe GitHub.

Prolomení kodexu

Abyste pochopili, co kód dělá, nejprve spusťte hru Excitebike. Udělejte to tak, že přejdete na zdrojový kód a poté jej spustíte pomocí Pygame Zero:

CD Drátový model-66/zdroj-code-excitebike/
pgzrunexitebike.py

Poté můžete otevřít soubor exitebike.py pomocí textového editoru a zobrazit kód.

The kreslit funkce vykreslí pozadí při pohybu obrázku kola. A "vypálit"" označuje blok, který je nakreslen na obrazovce. Slovo, "Pozadí," odkazuje na obrázek na pozadí (propojení obrázků s blokem pozadí je díky importovaným modulům Pygame Zero).

defkreslit():
screen.blit("Pozadí", (0, 0))
drawTrack()
kolo.kreslit()
screen.draw.text("ČAS KOLA: "+str (int (time.time() - startTime)), (20, 555),color=(255,255,255), fontsize=50)
screen.draw.text("POSLEDNÍ KOLO: "+str (poslední kolo), nahoře = (780, 555), barva=(255,255,255), velikost písma=50)

Také si všimnete výpočtů času kola a posledního kola (toto je reprezentováno počítadlem času ve spodní části obrazovky). Čas kola neustále vypočítává rozdíl mezi počátečním stisknutím pravé šipky (čas začátku) a aktuálním časem.

Poslední kolo je podobný výpočet. Namísto počátečního času se čas počítá od okamžiku, kdy motorka projede předem definovanou traťovou pozici (uvedenou jako trackPos < -4800 v kódu). Níže uvedené položky v uvozovkách představují obrázek.

Tento kód kreslí obrazové bloky na obrazovku v určitých intervalech a na určitých pozicích na obrazovce. Dodaný davový obrázek je široký pouze 100 pixelů. Níže uvedený kód však počítači říká, kdy má obrázek nakreslit, aby to vypadalo, jako by se za motocyklem při jeho pohybu nacházel simulovaný dav.

Skalní obrazy se na obrazovce zobrazují ve dvou částech. Druhý a třetí řádek kódu níže spolupracují na simulaci scenérie úhledným způsobem.

Jakmile vytvoříte záložní kopii kódu python, zkuste změnit níže uvedená čísla, abyste viděli, co se stane s kameny na obrazovce!

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

Chcete vyměnit svou motorku za Monster truck, čtyřkolku nebo jiné vozidlo? Možná chcete závodit s jednorožcem až do cíle?

Vše, co musíte udělat, je nakreslit obrázek 50x50px (s průhledným pozadím). Poté umístěte tento soubor (picture.png) do 'snímky' složku (v rámci zdrojový kód-excitebike složka). Chcete-li přidat trochu realismu, budete chtít vytvořit dva obrázky (jeden s mírně zvýšenou výškou). Vše, co musíte udělat, je změnit odkaz na „kolo0' tady:

kolo = herec('kolo 0', střed=(150, 350), kotva=('centrum', 'dno'))

Nezapomeňte také provést akci najít a nahradit názvem obrázku (bez přípony obrázku).

checkBikeRamp() je funkce, která provádí výpočet osy Y, aby vaše motorka (nebo nákladní auto) vyjela po rampě (a pořádně se nadýchla, pokud budete mít štěstí). The klávesnice.vpravo a klávesnice.vlevo parametry jsou definovány v Aktualizace() funkce.

Tyto kódové bity říkají počítači, aby zpomalil nebo zrychlil motorku (v závislosti na tom, jakou klávesu uživatel na klávesnici stiskne). Překlad: Čím rychleji se vaše motorka pohybuje, tím vyšší je číslo osy Y (nebo velmi velký skok).

Příčně, on_key_down (klíč) funkce pošle vaši motorku do přídi.

if key.name == "DOLŮ":
směr kola = 1
bike.laneY = omezit(bike.laneY + 50, 375, 525)
kolo.y += kolo.směr

The muckLane parametr zpomalí vaši motorku pomocí následujícího výpočtu:

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

Řádek 66 kódu určuje, kdy se má na obrazovce zobrazit obrázek „muck“. Nyní, když počítač ví, kdy vaše motorka přejede bahno, zpomalí rychlost vaší motorky na polovinu, když se budete pohybovat po bahně na trati. Změňte hodnotu muckLane z /50 na /25 nebo /75, abyste viděli, co se stane dál.

Závodníci (ehm, programátoři Pythonu)! Nastartujte své motory!

I když vám není příjemné programovat tuto poctu Excitebike od nuly, tento kód je stále skvělý základ. Jeho vyladěním a uvědoměním si vizuálního dopadu změn se můžete hodně naučit. Pokusíte se do své hry přidat další funkce nebo AI závodníky? Jít na to!

S trochou praxe v Pythonu je dalším nápadem, který můžete vyzkoušet, přidání různých úrovní, jakmile projedete cílovou čárou po 4 nebo 5 případech. Možná budete chtít přidat odměny za první, druhé a třetí místo. Pokud jste na prvním místě, přidejte také zvukový soubor, který povzbuzuje davy! Je tolik možností.

Když jste spokojeni se svými vylepšeními Excitebike, proč se nepustit do vytváření textové adventury? Existuje mnoho různých kousků, které vám zajistí, že se budete učit něco vzrušujícího celé hodiny, dny nebo dokonce týdny!