Creați un omagiu pentru Excitebike folosind Python

Creați un omagiu pentru Excitebike folosind Python

Excitebike este un joc cu derulare laterală în care navighezi cu o motocicletă peste salturi, manevrezi în jurul obstacolelor și vitezi spre linia de sosire.





Nintendo a lansat pentru prima dată acest joc de curse BMX pentru NES. De acolo, compania a modernizat Excitebike și l-a lansat pe N64 și, în cele din urmă, pe Wii.





Nu mai există multe console NES, ceea ce face ca jocul Excitebike să fie din nou greu de găsit. Datorită unor fani retro de la Wireframe Magazine, un fragment de cod Python poate recrea acest clasic NES pentru ore întregi de distracție pe Raspberry Pi sau pe computerul de acasă.





REALIZAREA VIDEOCLIPULUI ZILEI

Obținerea codului și configurarea

Deși puteți folosi nano sau vim pentru a vă edita codul Python, veți dori să profitați de o aplicație completă editor de text sau IDE .

Va trebui să instalați Pygame Zero pentru a susține funcțiile construite în acest omagiu adus Excitebike. Pygame Zero conține module Python pentru ca creatorii de jocuri să se concentreze fără a fi nevoiți să repete baze simple.



Dacă nu aveți python3 instalat pe computer, puteți descărcați cea mai recentă versiune direct din Python. O să vrei și tu asigurați-vă că aveți instalat PIP de asemenea.

Cu cea mai recentă versiune de Python și PIP instalată, deschideți terminalul PowerShell sau Linux și tastați:





pip3 install pgzero 

În cele din urmă, va trebui să ridicați o copie a codului Python din depozitul GitHub al revistei Wireframe. Tastați următoarea comandă într-un terminal:

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

Alternativ, puteți descărcați codul arhivat direct de pe pagina Wireframe GitHub.





Defalcarea Codului

Pentru a înțelege ce face codul, mai întâi rulați jocul Excitebike. Faceți acest lucru navigând la codul sursă și apoi rulând-l folosind Pygame Zero:

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

Apoi puteți deschide fișierul exitebike.py cu un editor de text pentru a vedea codul.

  fragment de cod excitebike python

The a desena funcția desenează fundalul pe măsură ce imaginea bicicletei se mișcă. A ' stau ' se referă la un bloc care este desenat pe ecran. Cuvântul ' fundal,' se referă la imaginea de fundal (legarea imaginilor la blocul de fundal se datorează modulelor Pygame Zero importate).

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)

Veți observa și calcule pentru timpul de tură și ultima tură (aceasta este reprezentată de contorul de timp din partea de jos a ecranului). Timpul pe tur calculează constant diferența dintre apăsarea inițială a tastei săgeată dreapta (ora de pornire) și ora curentă.

cum să revii la Snapchat

Ultimul tur este un calcul similar. În loc de ora de pornire, timpul este calculat de la momentul în care motocicleta trece de o poziție predefinită de cale (menționată ca trackPos < -4800 în cod). Elementele de mai jos între ghilimele reprezintă o imagine.

Acest cod desenează blocuri de imagini pe ecran la anumite intervale și anumite poziții de pe ecran. Imaginea publică furnizată are o lățime de numai 100 px. Cu toate acestea, codul de mai jos îi spune computerului când să deseneze imaginea, astfel încât să pară ca și cum există o mulțime simulată în spatele motocicletei în timp ce aceasta se mișcă.

Imaginile rock sunt afișate pe ecran în două părți. A doua și a treia linie de cod, de mai jos, funcționează împreună pentru a simula peisajul într-un mod ordonat.

După ce creați o copie de rezervă a codului Python, încercați să schimbați numerele de mai jos pentru a vedea ce se întâmplă cu pietrele de pe ecran!

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

Doriți să vă înlocuiți motocicleta cu un camion Monster, un vehicul cu patru roți sau un alt vehicul? Poate vrei să alergi cu un unicorn până la linia de sosire?

Tot ce trebuie să faceți este să desenați o imagine de 50x50px (cu fundal transparent). Apoi, plasați acest fișier (picture.png) în „ imagini dosarul (în cadrul cod sursă-excitebike pliant). Veți dori să creați două imagini (una cu o înălțime ușor crescută) pentru a adăuga puțin realism. Tot ce trebuie să faceți este să schimbați referința la „ Fă-o Aici:

bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  joc excitebike python cu camion

De asemenea, asigurați-vă că efectuați o acțiune de căutare și înlocuire cu numele imaginii (fără extensia imaginii).

verifica BikeRamp() este funcția care face treaba pentru a calcula axa Y, astfel încât motocicleta (sau camionul) să urce pe rampă (și să primească puțin aer serios dacă aveți noroc). The tastatura.dreapta și tastatură.stânga parametrii sunt definiți în Actualizați() funcţie.

Acești biți de cod îi spun computerului să încetinească sau să accelereze motocicleta (în funcție de ce tastă apăsă utilizatorul de pe tastatură). Traducere: Cu cât motocicleta ta se mișcă mai repede, cu atât este mai mare numărul axei Y (sau un salt foarte mare).

Transversal, cel on_key_down(key) funcția va trimite motocicleta dvs. într-o adâncime.

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

The muckLane parametrul va încetini motocicleta dvs. folosind următorul calcul:

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

Linia 66 a codului determină când să se afișeze imaginea „muck” pe ecran. Acum că computerul știe când motocicleta ta va trece peste noroi, va încetini viteza motocicletei la jumătate pe măsură ce te deplasezi peste noroiul de pe pistă. Schimbați valoarea muckLane de la /50 la /25 sau /75 pentru a vedea ce se întâmplă în continuare.

Racers (ahem, programatori Python)! Porniți-vă motoarele!

Chiar dacă nu vă simțiți confortabil să programați acest omagiu adus Excitebike de la zero, acest cod este totuși un primer excelent. Modificându-l și realizând impactul vizual al schimbărilor, puteți învăța multe. Veți încerca să adăugați mai multe funcții sau curse AI în jocul dvs.? Du-te!

Cu puțină practică Python sub centură, o altă idee pe care să o încerci este să adaugi diferite niveluri odată ce treci de linia de sosire după 4 sau 5 ori. De asemenea, poate doriți să adăugați recompense pentru primul, al doilea și al treilea loc. Dacă ești pe primul loc, adaugă și un fișier audio care aplaudă mulțimea! Există atât de multe posibilități.

Când ești mulțumit de îmbunătățirile tale Excitebike, de ce să nu te ocupi de crearea unui joc de aventură text? Există o mulțime de piese diferite care vă vor asigura că învățați ceva interesant ore, zile sau chiar săptămâni!