Excitebike on sivurullapeli, jossa voit navigoida moottoripyörällä hyppyjen yli, kiertää esteitä ja nopeuttaa maaliviivaa.
Nintendo julkaisi ensimmäisen kerran tämän BMX-ajopelin NES: lle. Sieltä yritys modernisoi Excitebiken ja julkaisi sen N64:lle ja lopulta Wiille.
NES-konsoleita ei ole enää montaa, mikä tekee Excitebiken pelaamisen jälleen vaikeaksi. Joidenkin Wireframe Magazinen retro-fanien ansiosta Python-koodinpätkä voi luoda tämän NES-klassikon uudelleen tuntikausiksi hauskoja hetkiä varten Raspberry Pi: llä tai kotitietokoneellasi.
Koodin hakeminen ja käyttöönotto
Vaikka voit käyttää nanoa tai vimiä python-koodin muokkaamiseen, sinun kannattaa hyödyntää monipuolinen tekstieditori tai IDE.
Pygame Zero on asennettava, jotta voit tukea tämän Excitebiken kunnianosoituksen sisältämiä ominaisuuksia. Pygame Zero sisältää Python-moduuleja, joiden avulla pelintekijät voivat keskittyä ilman yksinkertaisia perusteita.
Jos sinulla ei ole python3:a asennettuna tietokoneellesi, voit lataa uusin versio Pythonista suoraan. Haluat myös varmista, että PIP on asennettu liian.
Kun Pythonin ja PIP: n uusin versio on asennettu, avaa PowerShell- tai Linux-pääte ja kirjoita:
pip3 Asentaa pgzero
Lopuksi sinun on noudettava kopio Python-koodista Wireframe-lehden GitHub-arkistosta. Kirjoita seuraava komento terminaaliin:
git klooni https://github.com/Wireframe-Magazine/Wireframe-66.git
Vaihtoehtoisesti voit lataa postinumero suoraan Wireframe GitHub -sivulta.
Koodin rikkominen
Ymmärtääksesi, mitä koodi tekee, aja ensin Excitebike-peli. Tee se siirtymällä lähdekoodiin ja suorittamalla se Pygame Zerolla:
CD Wireframe-66/lähde-koodi-excitebike/
pgzrunexitebike.py
Voit sitten avata exitebike.py-tiedoston tekstieditorilla nähdäksesi koodin.
The piirtää toiminto piirtää taustan pyörän kuvan liikkuessa. A "blit" viittaa lohkoon, joka on piirretty näytölle. sana, "tausta," viittaa taustakuvaan (kuvien linkittäminen taustalohkoon on tuotujen Pygame Zero -moduulien ansiosta).
defpiirtää():
screen.blit("tausta", (0, 0))
drawTrack()
pyörä.draw()
screen.draw.text("LAP-AIKA: "+str (int (aika.aika() - aloitusaika)), (20, 555),väri=(255,255,255), fontsize=50)
screen.draw.text("VIIMEINEN kierros: "+str (lastLap), yläoikea = (780, 555), väri=(255 255 255), fontsize=50)
Huomaat myös kierrosajan ja viimeisen kierroksen laskelmat (tätä edustaa näytön alareunassa oleva aikalaskuri). Kierrosaika laskee jatkuvasti alkuperäisen oikean nuolinäppäimen painalluksen (aloitusaika) ja nykyisen ajan välistä eroa.
Viimeinen kierros on samanlainen laskelma. Aloitusajan sijaan aika lasketaan siitä, kun moottoripyörä ohittaa ennalta määritellyn radan (mainittu trackPos < -4800 koodissa). Alla olevat lainausmerkeissä olevat kohteet edustavat kuvaa.
Tämä koodi piirtää kuvalohkoja näytölle tietyin väliajoin ja tietyin kohtiin näytöllä. Toimitettu yleisökuva on vain 100 pikseliä leveä. Kuitenkin alla oleva koodi kertoo tietokoneelle, milloin kuva on piirrettävä, jotta se näyttää siltä, että moottoripyörän takana on simuloitu väkijoukko sen liikkuessa.
Kalliokuvat näkyvät näytöllä kahdessa osassa. Alla oleva toinen ja kolmas koodirivi toimivat yhdessä simuloidakseen maisemaa siististi.
Kun olet luonut varmuuskopion python-koodista, yritä muuttaa alla olevia numeroita nähdäksesi, mitä tapahtuu näytöllä oleville kiville!
screen.blit("joukko 1", ((t*100)+trackOffset-100, 0))
screen.blit("rock1", ((t*100)+trackOffset-100, 270))
screen.blit("rock1", ((t*100)+trackOffset-50, 270))
Haluatko vaihtaa moottoripyöräsi Monster truckiin, nelipyöräiseen tai muuhun ajoneuvoon? Ehkä haluat kilpailla yksisarvisella maaliin?
Sinun tarvitsee vain piirtää 50x50px kuva (läpinäkyvällä taustalla). Aseta sitten tämä tiedosto (picture.png)kuvia'-kansiossa (sisällä lähdekoodi-excitebike kansio). Haluat luoda kaksi kuvaa (yksi, jonka korkeus on hieman suurempi) lisätäksesi hieman realistisuutta. Sinun tarvitsee vain muuttaa viittaus "pyörä0' tässä:
pyörä = näyttelijä('pyörä 0', keskipiste=(150, 350), ankkuri=('keskusta', 'pohja'))
Muista myös suorittaa haku- ja korvaustoiminto kuvan nimellä (ilman kuvatunnistetta).
checkBikeRamp() on funktio, joka laskee Y-akselin niin, että moottoripyöräsi (tai kuorma-autosi) nousee ramppia ylös (ja saa vakavasti ilmaa, jos olet onnekas). The näppäimistö.oikea ja näppäimistö.vasen parametrit on määritelty kohdassa päivittää() toiminto.
Nämä koodibitit käskevät tietokoneen hidastamaan tai nopeuttamaan moottoripyörää (riippuen siitä, mitä näppäintä käyttäjä painaa näppäimistöstä). Käännös: Mitä nopeammin moottoripyöräsi liikkuu, sitä suurempi on Y-akselin numero (tai erittäin suuri hyppy).
Poikittain, on_key_down (näppäin) toiminto lähettää moottoripyöräsi nokkarataan.
jos avain.nimi == "ALAS":
pyörä.suunta = 1
bike.laneY = raja(bike.laneY + 50, 375, 525)
pyörä.y += pyörä.suunta
The muckLane parametri hidastaa moottoripyörääsi seuraavan laskelman avulla:
muckLane = int((bike.laneY-375)/50)+1
Koodin rivi 66 määrittää, milloin "muck"-kuva näytetään näytöllä. Nyt kun tietokone tietää, milloin moottoripyöräsi kulkee sotan yli, se hidastaa moottoripyöräsi nopeutta puoleen, kun siirryt sian yli radalla. Muuta muckLane-arvo arvosta /50 arvoon /25 tai /75 nähdäksesi, mitä tapahtuu seuraavaksi.
Kilpailijat (ah, Python-ohjelmoijat)! Käynnistä moottorisi!
Vaikka et olisikaan mukava ohjelmoida tätä kunnianosoitusta Excitebikelle tyhjästä, tämä koodi on silti loistava aluke. Säätämällä sitä ja ymmärtämällä muutosten visuaaliset vaikutukset voit oppia paljon. Yritätkö lisätä peliisi enemmän ominaisuuksia tai AI-kilpareita? Anna palaa!
Pienellä Python-harjoittelulla voit kokeilla myös eri tasojen lisäämistä, kun olet ohittanut maaliviivan 4 tai 5 kertaa. Voit myös lisätä palkintoja ensimmäisestä, toisesta ja kolmannesta sijasta. Jos olet ykkönen, lisää myös yleisöä kannustava äänitiedosto! Mahdollisuuksia on niin monia.
Kun olet tyytyväinen Excitebike-parannuksiisi, miksi et ryhtyisi luomaan tekstiseikkailupeli? On olemassa monia erilaisia kappaleita, jotka varmistavat, että opit jotain jännittävää tunteja, päiviä tai jopa viikkoja!