Készítsen tiszteletet az Excitebike előtt Python használatával

Készítsen tiszteletet az Excitebike előtt Python használatával

Az Excitebike egy oldalsó görgetős játék, ahol motorkerékpárral navigálhatsz ugrásokon, manőverezhetsz az akadályokon, és gyorsulhatsz a célvonal felé.





A Nintendo először indította el ezt a BMX-es versenyjátékot a NES számára. Innentől kezdve a cég modernizálta az Excitebike-ot, és kiadta az N64-en és végül a Wii-n.





hogyan lehet mappákat átvinni az egyik Google meghajtóról a másikra

Már nem sok NES konzol létezik, ami megnehezíti az Excitebike újrajátszását. A Wireframe Magazine retró rajongóinak köszönhetően egy Python-kódrészlet újrateremtheti ezt a NES-klasszikust, és órákig szórakozhat Raspberry Pi-n vagy otthoni számítógépén.





MAKEUSEOF A NAP VIDEÓJA

A kód lekérése és a beállítás

Bár a nano vagy a vim segítségével szerkesztheti a python kódot, érdemes kihasználnia egy teljes értékű szövegszerkesztő vagy IDE .

Telepítened kell a Pygame Zero-t, hogy támogasd az Excitebike tiszteletére épülő funkciókat. A Pygame Zero Python modulokat tartalmaz a játékkészítők számára, hogy az egyszerű alapok megismétlése nélkül összpontosíthassanak.



Ha nincs telepítve a python3 a számítógépére, megteheti töltse le a legújabb verziót közvetlenül Pythonból. Te is szeretnéd győződjön meg arról, hogy a PIP telepítve van is.

A Python és a PIP legújabb verziója telepítve nyissa meg a PowerShell vagy Linux terminált, és írja be:





pip3 install pgzero 

Végül fel kell vennie a Python-kód másolatát a Wireframe magazin GitHub-tárából. Írja be a következő parancsot egy terminálba:

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

Alternatív megoldásként megteheti töltse le az irányítószámot közvetlenül a Wireframe GitHub oldaláról.





A kódex lebontása

A kód működésének megértéséhez először futtassa az Excitebike játékot. Ehhez navigáljon a forráskódhoz, majd futtassa a Pygame Zero segítségével:

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

Ezután megnyithatja az exitebike.py fájlt egy szövegszerkesztővel a kód megtekintéséhez.

  excitebike python kódrészlet

Az húz funkció megrajzolja a hátteret, ahogy a kerékpár kép mozog. A ' marad ' a képernyőre rajzolt blokkra utal. A '' szó háttér,' a háttérképre vonatkozik (a képek és a háttérblokk összekapcsolása az importált Pygame Zero moduloknak köszönhető).

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)

Látni fogja a köridő és az utolsó kör számításait is (ezt a képernyő alján lévő időszámláló jelzi). A köridő folyamatosan számolja a különbséget a jobbra nyíl első megnyomása (kezdési idő) és a pontos idő között.

Az utolsó kör is hasonló számítás. A kezdési időpont helyett az idő onnan számítódik, amikor a motorkerékpár áthalad egy előre meghatározott pályapozíción (mint pl. trackPos < -4800 a kódban). Az alábbi tételek idézőjelben egy képet ábrázolnak.

Ez a kód bizonyos időközönként és a képernyő bizonyos pozícióiban képblokkokat rajzol a képernyőre. A mellékelt tömegkép mindössze 100 képpont széles. Az alábbi kód azonban megmondja a számítógépnek, hogy mikor kell megrajzolnia a képet, hogy úgy tűnjön, mintha egy szimulált tömeg lenne a motorkerékpár mögött, miközben mozog.

A sziklaképek két részletben jelennek meg a képernyőn. Az alábbi második és harmadik kódsor együtt működik, hogy rendezett módon szimulálja a tájat.

Miután elkészítette a python kód biztonsági másolatát, próbálja meg megváltoztatni az alábbi számokat, hogy megnézze, mi történik a képernyőn megjelenő sziklákkal!

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

Le szeretné cserélni motorját Monster teherautóra, négykerekűre vagy más járműre? Talán egy unikornissal akarsz versenyezni a célig?

Nincs más dolgod, mint rajzolni egy 50x50px-es képet (átlátszó háttérrel). Ezután helyezze ezt a fájlt (picture.png) a ' képeket ' mappába (a forráskód-excitebike mappa). Létre kell hoznia két képet (az egyiket kissé megnövelt magassággal), hogy valósághűbb legyen. Csak annyit kell tennie, hogy megváltoztatja a hivatkozást csináld itt:

bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  excitebike python játék teherautóval

Ügyeljen arra is, hogy a kép nevével (a képkiterjesztés nélkül) végezzen keresést és cserét.

checkBikeRamp() az a függvény, amely elvégzi az Y tengely kiszámítását úgy, hogy a motorja (vagy teherautója) felmegy a rámpán (és ha szerencséd van, komoly levegőt kap). Az billentyűzet.jobbra és billentyűzet.balra paramétereket a frissítés() funkció.

Ezek a kódbitek azt mondják a számítógépnek, hogy lassítsa vagy gyorsítsa fel a motorkerékpárt (attól függően, hogy a felhasználó milyen billentyűt nyom meg a billentyűzeten). Fordítás: Minél gyorsabban mozog a motorja, annál nagyobb az Y tengely száma (vagy nagyon nagy ugrás).

Keresztirányban a on_key_down(kulcs) funkcióval a motorkerékpár orrba fog kerülni.

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

Az muckLane paraméter lelassítja a motorkerékpárját a következő számítással:

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

A kód 66. sora határozza meg, hogy mikor jelenítse meg a „szar” képet a képernyőn. Most, hogy a számítógép tudja, hogy a motorod mikor halad át a sáron, felére lassítja a motorkerékpár sebességét, amint áthalad a sáron a pályán. Módosítsa a muckLane értéket /50-ről /25-re vagy /75-re, hogy megnézze, mi történik ezután.

Versenyzők (ah, Python programozók)! Indítsa be motorjait!

Még ha nem is érzi kényelmesen az Excitebike előtti hódolatot a semmiből programozni, ez a kód még mindig nagyszerű alapozó. A módosítással és a változások vizuális hatásának felismerésével sokat tanulhatsz. Megpróbál további funkciókat vagy AI versenyzőket hozzáadni a játékhoz? Hajrá!

Egy kis Python-gyakorlattal az öved alatt egy másik ötlet, amit érdemes kipróbálnod, ha 4 vagy 5 alkalom után áthaladsz a célvonalon, adj hozzá különböző szinteket. Emellett érdemes lehet jutalmakat hozzáadni az első, második és harmadik helyért. Ha az első helyen áll, adjon hozzá egy tömegvidám hangfájlt is! Annyi lehetőség van.

Ha elégedett vagy az Excitebike fejlesztéseivel, miért nem foglalkozol egy szöveges kalandjáték létrehozásával? Rengeteg különböző darab van, amelyek biztosítják, hogy órákon, napokon vagy akár hetekig tanulj valami izgalmasat!