„Excitebike“ yra šoninis slinkties žaidimas, kuriame galite važiuoti motociklu per šuolius, manevruoti aplink kliūtis ir greitai pasiekti finišo liniją.

„Nintendo“ pirmą kartą pristatė šį BMX lenktynių žaidimą NES. Iš ten bendrovė modernizavo „Excitebike“ ir išleido „N64“ ir galiausiai „Wii“.

NES konsolių nebėra daug, todėl vėl žaisti „Excitebike“ sunku. Kai kurių „Wireframe Magazine“ retro gerbėjų dėka Python kodo fragmentas gali atkurti šią NES klasiką ir smagiai praleisti valandas jūsų Raspberry Pi arba namų kompiuteryje.

Kodo gavimas ir nustatymas

Nors python kodui redaguoti galite naudoti nano arba vim, norėsite pasinaudoti visomis funkcijomis teksto redaktorius arba IDE.

Turėsite įdiegti Pygame Zero, kad palaikytumėte funkcijas, sukurtas šioje „Excitebike“ pagarboje. Pygame Zero yra Python moduliai, skirti žaidimų kūrėjams sutelkti dėmesį nekartojant paprastų pagrindų.

Jei jūsų kompiuteryje nėra įdiegta python3, galite parsisiųsti naujausią versiją tiesiogiai iš Python. Jūs taip pat norėsite įsitikinkite, kad įdiegtas PIP taip pat.

instagram viewer

Įdiegę naujausią Python ir PIP versiją, atidarykite PowerShell arba Linux terminalą ir įveskite:

pip3 diegti pgzero

Galiausiai turėsite pasiimti Python kodo kopiją iš žurnalo „Wireframe“ „GitHub“ saugyklos. Į terminalą įveskite šią komandą:

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

Arba galite atsisiųskite pašto kodą tiesiai iš Wireframe GitHub puslapio.

Kodo suskaidymas

Norėdami suprasti, ką daro kodas, pirmiausia paleiskite žaidimą „Excitebike“. Padarykite tai eidami į šaltinio kodą ir paleisdami jį naudodami Pygame Zero:

cd Wireframe-66/šaltinis-code-excitebike/
pgzrunexitebike.py

Tada galite atidaryti failą exitebike.py naudodami teksto rengyklę, kad peržiūrėtumėte kodą.

The piešti funkcija piešia foną, kai dviračio vaizdas juda. Ablit“ reiškia bloką, nupieštą ekrane. Žodis, "fonas“, nurodo fono paveikslėlį (vaizdų susiejimas su fono bloku yra dėl importuotų Pygame Zero modulių).

defpiešti():
screen.blit("fone", (0, 0))
DrawTrack()
dviratis.pieškite()
screen.draw.text("LAP LAIKAS: "+str (int (time.time() - startTime)), (20, 555),spalva=(255,255,255), šrifto dydis=50)
screen.draw.text("PASKUTINIS RAJAS: "+str (lastLap), viršuje dešinėje = ​​(780, 555), spalva = (255 255 255), šrifto dydis = 50)

Taip pat pastebėsite rato laiko ir paskutinio rato skaičiavimus (tai rodoma laiko skaitikliu ekrano apačioje). Rato laikas nuolat skaičiuoja skirtumą tarp pradinio dešiniojo rodyklės klavišo paspaudimo (pradžios laiko) ir dabartinio laiko.

Paskutinis ratas yra panašus skaičiavimas. Vietoj starto laiko laikas skaičiuojamas nuo to momento, kai motociklas pravažiuoja iš anksto nustatytą trasos padėtį (minima kaip trackPos < -4800 kode). Žemiau pateikti elementai kabutėse yra vaizdas.

Šis kodas tam tikrais intervalais ir tam tikrose ekrano vietose piešia vaizdo blokus ekrane. Pateiktas minios vaizdas yra tik 100 pikselių pločio. Tačiau toliau pateiktas kodas nurodo kompiuteriui, kada nupiešti vaizdą, kad atrodytų, tarsi už motociklo judant būtų imituojama minia.

Uolos vaizdai ekrane rodomi dviem dalimis. Žemiau esančios antrosios ir trečiosios kodo eilutės veikia kartu, kad būtų tvarkingai imituojamos dekoracijos.

Sukūrę atsarginę python kodo kopiją, pabandykite pakeisti toliau pateiktus skaičius, kad pamatytumėte, kas atsitiks su akmenimis ekrane!

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

Ar norite pakeisti savo motociklą Monster sunkvežimiu, keturračiu ar kita transporto priemone? Galbūt norite lenktyniauti vienaragiu iki finišo linijos?

Tereikia nupiešti 50x50px vaizdą (su permatomu fonu). Tada įdėkite šį failą (picture.png) į "vaizdai' aplanką (per šaltinio kodas-excitebike aplankas). Norėdami suteikti tikroviškumo, norėsite sukurti du vaizdus (vieną su šiek tiek padidintu aukščiu). Viskas, ką jums reikia padaryti, tai pakeisti nuorodą į „dviratis0' čia:

dviratis = aktorius ('dviratis0', centras=(150, 350), inkaras=('centras', 'apačioje'))

Taip pat būtinai atlikite paieškos ir pakeitimo veiksmą paveikslėlio pavadinimu (be vaizdo plėtinio).

checkBikeRamp() yra funkcija, kuri apskaičiuoja Y ašį, kad jūsų motociklas (arba sunkvežimis) pakiltų rampa (ir, jei pasiseks, gautų šiek tiek oro). The klaviatūra.dešinė ir klaviatūra.kairėje parametrai yra apibrėžti atnaujinti () funkcija.

Šie kodo bitai nurodo kompiuteriui sulėtinti arba pagreitinti motociklą (atsižvelgiant į tai, kokį klavišą vartotojas paspaudžia klaviatūroje). Vertimas: kuo greičiau juda jūsų motociklas, tuo didesnis Y ašies skaičius (arba labai didelis šuolis).

Skersai, on_key_down (raktas) funkcija nusuks jūsų motociklą į nosį.

jei raktas.vardas == "ŽEMYN":
dviratis.kryptis = 1
dviratis.laneY = riba(bike.laneY + 50, 375, 525)
dviratis.y += dviratis.kryptis

The muckLane parametras sulėtins jūsų motociklą, naudojant šį skaičiavimą:

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

66 kodo eilutė nustato, kada ekrane rodyti „nešvario“ vaizdą. Dabar, kai kompiuteris žino, kada jūsų motociklas pravažiuos per dumblą, jis sumažins jūsų motociklo greitį per pusę, kai važiuosite per dumblą trasoje. Pakeiskite muckLane reikšmę iš /50 į /25 arba /75, kad pamatytumėte, kas nutiks toliau.

Lenktynininkai (ahem, Python programuotojai)! Užveskite savo variklius!

Net jei jums nepatogu programuoti šią pagarbą „Excitebike“ nuo nulio, šis kodas vis tiek yra puikus pradžiamokslis. Pakoreguodami jį ir suvokdami vizualinį pakeitimų poveikį, galite daug išmokti. Ar bandysite į savo žaidimą įtraukti daugiau funkcijų ar AI lenktynininkų? Pirmyn!

Šiek tiek praktikuojant Python, dar viena idėja, kurią galite išbandyti, yra pridėti skirtingus lygius, kai įveiksite finišo liniją po 4 ar 5 kartų. Taip pat galbūt norėsite pridėti apdovanojimų už pirmą, antrą ir trečią vietas. Jei esate pirmoje vietoje, pridėkite ir minią džiuginantį garso failą! Yra tiek daug galimybių.

Jei esate patenkinti savo „Excitebike“ patobulinimais, kodėl gi ne sukurti tekstinį nuotykių žaidimą? Yra daugybė skirtingų kūrinių, kurie užtikrins, kad valandas, dienas ar net savaites išmoksite kažko įdomaus!