Excitebike on külgkerimisega mäng, kus navigeerite mootorrattaga üle hüpete, manööverdate ümber takistuste ja kiirustate finišijoone poole.

Nintendo käivitas selle BMX võidusõidumängu esmakordselt NES-i jaoks. Sealt edasi moderniseeris ettevõte Excitebike'i ja andis selle välja N64-le ja lõpuks ka Wiile.

NES-i konsoole pole enam palju, mis muudab Excitebike'i taasesitamise raskeks. Tänu mõnele Wireframe Magazine'i retrofännile saab Pythoni koodijupiga selle NES-i klassika taasluua, et teie Raspberry Pi või koduarvutis tundide kaupa lõbutseda.

Koodi hankimine ja seadistamine

Kuigi saate oma pythoni koodi redigeerimiseks kasutada nano- või vimi-i, soovite kasutada täisfunktsionaalsust tekstiredaktor või IDE.

Peate installima Pygame Zero, et toetada Excitebike'i austusavalduses loodud funktsioone. Pygame Zero sisaldab Pythoni mooduleid, mille abil mängude loojad saavad keskenduda ilma lihtsaid aluseid korrata.

Kui teie arvutisse pole installitud python3, saate seda teha laadige alla uusim versioon otse Pythonist. Sa tahad ka veenduge, et PIP on installitud ka.

instagram viewer

Kui Pythoni ja PIP-i uusim versioon on installitud, avage oma PowerShelli või Linuxi terminal ja tippige:

pip3 installida pgzero

Lõpuks peate korjama Pythoni koodi koopia ajakirja Wireframe'i GitHubi hoidlast. Tippige terminali järgmine käsk:

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

Teise võimalusena saate laadige alla postikood otse Wireframe GitHubi lehelt.

Koodi lõhkumine

Et mõista, mida kood teeb, käivitage esmalt mäng Excitebike. Selleks navigeerige lähtekoodi ja käivitage see Pygame Zero abil:

cd Wireframe-66/allikas-kood-excitebike/
pgzrunexitebike.py

Seejärel saate koodi vaatamiseks avada faili exitebike.py tekstiredaktoriga.

The joonistada funktsioon joonistab rattapildi liikumisel tausta. A"blit" viitab plokile, mis on ekraanile joonistatud. Sõna, "taust," viitab taustapildile (piltide linkimine taustaplokiga on tänu imporditud Pygame Zero moodulitele).

defjoonistada():
screen.blit("taustal", (0, 0))
drawTrack()
jalgratas.joonista()
screen.draw.text("RINGI AEG: "+str (int (aeg.aeg() - algusaeg)), (20, 555),värv=(255,255,255), fondi suurus=50)
screen.draw.text("VIIMANE RING: "+str (lastLap), ülemine parempoolne = (780, 555), värv = (255 255 255), fondi suurus = 50)

Samuti näete arvutusi ringiaja ja viimase ringi kohta (seda näitab ajaloendur ekraani allosas). Ringiaeg arvutab pidevalt vahet algse paremnooleklahvivajutuse (algusaeg) ja praeguse aja vahel.

Viimane ring on sarnane arvestus. Stardiaja asemel arvutatakse aega alates hetkest, mil mootorratas läbib etteantud rajaasendi (nimetatakse kui trackPos < -4800 koodis). Allpool jutumärkides olevad üksused esindavad pilti.

See kood joonistab ekraanile pildiplokid teatud ajavahemike järel ja teatud kohtades ekraanil. Kaasasoleva publiku kujutise laius on vaid 100 pikslit. Kuid allolev kood annab arvutile teada, millal pilt joonistada, nii et mootorratta taga oleks simuleeritud rahvahulk, kui see liigub.

Kivikujutised kuvatakse ekraanil kahes osas. Teine ja kolmas koodirida allpool töötavad koos, et simuleerida maastikku korrastatult.

Kui olete pythoni koodist varukoopia loonud, proovige allolevaid numbreid muuta, et näha, mis juhtub ekraanil olevate kividega!

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

Kas soovite oma mootorratta asendada Monster trucki, neljarattalise või mõne muu sõidukiga? Võib-olla tahad ükssarvikuga finišisse kihutada?

Kõik, mida pead tegema, on joonistada 50x50px pilt (läbipaistva taustaga). Seejärel asetage see fail (picture.png) kausta "pilte' kaustas (seoses lähtekood-excitebike kaust). Realismi lisamiseks võiksite luua kaks pilti (üks veidi suurendatud kõrgusega). Kõik, mida pead tegema, on muuta viidet "jalgratas0' siin:

jalgratas = näitleja('jalgratas0', keskpunkt=(150, 350), ankur=('Keskus', 'põhja'))

Samuti tehke kindlasti otsingu ja asendamise toiming pildi nimega (ilma pildilaiendita).

checkBikeRamp() on funktsioon, mis arvutab Y-telje nii, et teie mootorratas (või veoauto) sõidab kaldteest üles (ja saab õnne korral tõsiselt õhku). The klaviatuur.paremal ja klaviatuur.vasak parameetrid on määratletud värskenda() funktsiooni.

Need koodibitid käsivad arvutil mootorratta kiirust aeglustada või kiirendada (olenevalt sellest, millist klahvi kasutaja klaviatuuril vajutab). Tõlge: Mida kiiremini teie mootorratas liigub, seda suurem on Y-telje number (või väga suur hüpe).

Ristsuunas, on_key_down (klahv) funktsioon saadab teie mootorratta ummikusse.

kui võti.nimi == "ALLA":
bike.direction = 1
bike.laneY = piiri(bike.laneY + 50, 375, 525)
bike.y += bike.direction

The muckLane parameeter aeglustab teie mootorratast järgmise arvutuse abil:

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

Koodi rida 66 määrab, millal kuvada ekraanil "muck" pilt. Nüüd, kui arvuti teab, millal teie mootorratas üle sodi sõidab, aeglustab see teie mootorratta kiirust poole võrra, kui liigute rajal üle sodi. Muutke muckLane'i väärtust /50 väärtuselt /25 või /75, et näha, mis järgmisena juhtub.

Võidusõitjad (ah, Pythoni programmeerijad)! Käivitage oma mootorid!

Isegi kui te ei tunne end mugavalt Excitebike'ile austust nullist programmeerimas, on see kood ikkagi suurepärane aabits. Seda kohandades ja muudatuste visuaalset mõju mõistes saate palju õppida. Kas proovite oma mängu lisada rohkem funktsioone või AI võidusõitjaid? Tee seda!

Pisut Pythoni harjutamist võite proovida ka erinevate tasemete lisamises, kui olete pärast 4 või 5 korda finišijoont läbinud. Samuti võite lisada preemiaid esimese, teise ja kolmanda koha eest. Kui olete esikohal, lisage ka rahvahulka rõõmustav helifail! Võimalusi on nii palju.

Kui olete oma Excitebike'i täiustustega rahul, siis miks mitte tegeleda tekstilise seiklusmängu loomisega? Seal on palju erinevaid tükke, mis tagavad, et õpite tundide, päevade või isegi nädalate jooksul midagi põnevat!