Cum se creează un joc 2D cu Python și Biblioteca Arcade

Python este un limbaj remarcabil pentru persoanele care învață să programeze și perfect pentru oricine dorește să „facă lucruri” și să nu petreacă grămezi de timp pe codul boilerplate. Arcade este o bibliotecă Python pentru crearea de jocuri video 2D, care este ușor de a începe să utilizați, și foarte capabil ca să câștige experiență. În acest articol, vă voi explica cum să începeți să utilizați Python și Arcade pentru a programa jocuri video.am început dezvoltarea pe Arcade după ce i-am învățat pe elevi folosind biblioteca PyGame., Am predat în persoană folosind PyGame timp de aproape 10 ani, și am dezvoltat ProgramArcadeGames.com pentru a preda on-line. PyGame este grozav, dar în cele din urmă am simțit că pierd timpul pentru a acoperi bug-uri care nu au fost niciodată reparate.

am îngrijorat de predare lucruri cum ar fi bucla eveniment, care nu mai era modul în care am Cod. Am avut o întreagă secțiune în care am explicat de ce coordonatele y au fost inversate. Deoarece PyGame a fost rareori actualizat și se bazează pe o veche bibliotecă SDL 1, mai degrabă decât ceva mai modern ca OpenGL, nu am avut prea multe speranțe pentru viitor.,am vrut o bibliotecă care a fost mai ușor de utilizat, mai puternic, și a folosit unele dintre noile caracteristici ale Python 3, cum ar fi decoratori și type-aluzie. Arcade este. Și acesta este modul de a începe.

Instalare

Arcade, la fel ca multe alte pachete, este disponibil prin intermediul PyPi, ceea ce înseamnă că puteți instala Arcade folosind pip comanda (sau pipenv de comandă)., Dacă aveți deja Python instalat, puteți probabil doar pentru a deschide un prompt de comandă pe Windows și de tip:

pip install arcade

Sau pe MacOS și Linux de tip:

pip3 install arcade

Pentru mai multe instrucțiuni detaliate de instalare, puteți face referire la Arcade documentației de instalare.

desen simplu

puteți deschide o fereastră și puteți crea desene simple cu doar câteva linii de cod. Să creăm un exemplu care desenează o față zâmbitoare precum figura de mai jos:

scriptul de mai jos arată cum puteți utiliza comenzile de desen ale Arcade pentru a face acest lucru., Rețineți că nu trebuie să știți cum să utilizați clase sau chiar să definiți funcții. Programarea cu feedback vizual rapid este excelentă pentru oricine dorește să înceapă să învețe să programeze.

utilizarea funcțiilor

desigur, scrierea codului în contextul global nu este o formă bună. Din fericire, îmbunătățirea programului dvs. prin utilizarea funcțiilor este ușoară. Aici putem vedea un exemplu de desen un PIN la un anumit (x, y) locație folosind o funcție:

pentru exemplul complet, a se vedea desen cu funcții.,programatorul mai experimentat va ști că programele grafice moderne încarcă mai întâi informațiile de desen pe placa grafică și apoi solicită plăcii grafice să o deseneze mai târziu ca lot. Arcade sprijină acest lucru, de asemenea. Desenarea a 10.000 de dreptunghiuri în mod individual durează aproximativ 0.800 de secunde. Desenarea lor ca lot durează mai puțin de 0,001 secunde.

clasa fereastră

programele mai mari vor deriva de obicei din clasa fereastră sau vor folosi decoratori. Acest lucru permite unui programator să scrie cod pentru a gestiona desenarea, actualizarea și manipularea intrărilor de la utilizator., Un șablon pentru o pornire a Window-program bazat este de mai jos.

clasa Window are mai multe metode pe care programele dvs. le pot înlocui pentru a oferi funcționalitate programului. Iată câteva dintre cele mai frecvent utilizate:

  • on_draw: tot codul pentru a desena ecranul merge aici.
  • update: tot codul pentru a muta elementele și de a efectua logica jocului merge aici. Aceasta se numește de aproximativ 60 de ori pe secundă.,
  • on_key_press: gestionați evenimentele atunci când este apăsată o tastă, cum ar fi acordarea unei viteze unui jucător.
  • on_key_release: mâner atunci când o cheie este eliberată, aici s-ar putea opri un jucător de la mișcare.
  • on_mouse_motion: aceasta se numește de fiecare dată când mouse-ul se mișcă.
  • on_mouse_press: numit atunci când este apăsat un buton al mouse-ului.
  • set_viewport: această funcție este utilizată în jocurile de defilare, atunci când aveți o lume mult mai mare decât ceea ce poate fi văzut pe un singur ecran., Apelarea set_viewport permite unui programator să stabilească ce parte a acelei lumi este vizibilă în prezent.

Sprites

Sprites sunt o modalitate ușoară de a crea un obiect bitmap 2D în Arcade. Arcade are metode care facilitează desenarea, mutarea și animarea spritelor. De asemenea, puteți utiliza cu ușurință sprite pentru a detecta coliziuni între obiecte.

crearea unui sprite

crearea unei instanțe a clasei Sprite a arcadei dintr-un grafic este ușoară. Un programator are nevoie doar de numele fișierului unei imagini pentru a baza sprite-ul și, opțional, un număr pentru a scala imaginea în sus sau în jos., De exemplu:

SPRITE_SCALING_COIN = 0.2
coin = arcade.Sprite("coin_01.png", SPRITE_SCALING_COIN)

Acest cod va crea un sprite folosind imaginea stocată în coin_01.png. Imaginea va fi redusă la 20% din înălțimea și lățimea inițială.

liste de Sprite

spritele sunt organizate în mod normal în liste. Aceste liste facilitează gestionarea spritelor. Sprites într-o listă va folosi OpenGL la lot-trage sprites ca un grup. Codul de mai jos stabilește un joc cu un jucător, și o grămadă de monede pentru player-ul pentru a colecta. Folosim două liste, una pentru jucător și una pentru monede.,

putem trage cu ușurință toate monedele în monedă liste:

def on_draw(self):
""" Draw everything """
arcade.start_render()
self.coin_list.draw()
self.player_list.draw()

Detectarea sprite coliziuni

funcția check_for_collision_with_list ne permite să vedem dacă un sprite execută într-un alt sprite într-o listă. Putem folosi acest lucru pentru a vedea toate monedele jucător sprite este în contact cu. Folosind un simplufor buclă, putem scăpa de monedă din joc și de a crește scorul nostru.

pentru exemplul complet, consultați collect_coins.py.

Fizica jocului

multe jocuri includ un fel de fizică., Cele mai simple sunt programele de sus în jos care împiedică jucătorul să meargă prin pereți. Platformerii adaugă mai multă complexitate gravitației și platformelor care se mișcă. Unele jocuri folosesc un motor complet de fizică 2d cu masă, frecare, arcuri și multe altele.pentru jocuri simple de sus în jos, un program Arcade are nevoie de o listă de pereți prin care jucătorul (sau orice altceva) nu se poate deplasa. De obicei, numesc acest wall_list., Apoi, un motor de fizica este creat în Window clasa e codul de instalare cu:

self.physics_engine = arcade.PhysicsEngineSimple(self.player_sprite, self.wall_list)

player_sprite este dat de o mișcare vector cu două atribute change_x și change_y. Un exemplu simplu de a face acest lucru ar fi de a avea player-ul muta cu tastatura. De exemplu, acest lucru ar putea fi în copilul personalizat al clasei Window:

deși codul stabilește viteza jucătorului, acesta nu mișcă playerul., În update metoda de Window clasa, de asteptare physics_engine.update() va muta player-ul, dar nu prin pereți.

def update(self, delta_time):
""" Movement and game logic """
self.physics_engine.update()

Pentru a vedea un exemplu complet sprite_move_walls.py.

Platformers

se Deplasează la o parte platformer este destul de ușor. Un programator trebuie doar să comute motorul fizicii la PhysicsEnginePlatformer și să adauge constanta gravitațională.

self.physics_engine = arcade.PhysicsEnginePlatformer(self.player_sprite,
self.wall_list,
gravity_constant=GRAVITY)

puteți utiliza un program ca gresie pentru a pune gresie/blocuri care alcătuiesc nivelul.

pentru un exemplu, consultați sprite_tiled_map.,py.pentru Fizica completă 2D puteți integra biblioteca PyMunk.

învățați prin exemplu

unul dintre cele mai bune moduri de a învăța este prin exemplu. Biblioteca Arcade are o listă lungă de programe de exemplu pe care o persoană le poate folosi pentru a crea jocuri. Aceste exemple arată fiecare un concept de joc pe care elevii l-au cerut în clasele mele sau online de-a lungul anilor.rularea oricăreia dintre aceste demo-uri este ușoară odată ce Arcade a fost instalat., Fiecare dintre probe are un comentariu de la începutul programului cu o comandă aveți posibilitatea să tastați în linia de comandă pentru a rula proba, de exemplu:

python -m arcade.examples.sprite_moving_platforms

Sumar

Arcade vă permite să începeți de programare grafică și jocuri cu ușor de înțeles de cod. Mulți programatori noi au creat jocuri minunate nu după mult timp după ce au început. Dă-o încercare!pentru a afla mai multe, participați la discuția lui Paul Vincent Craven, crearea ușoară a jocurilor 2D cu Arcade, la PyCon Cleveland 2018.

Share

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *