This is an old revision of the document!


Pong Game

Introducere

Prezentarea pe scurt:

  • Proiectul este reprezentat de un joc, Pong Game, în care o paletă este controlata pentru a respinge o minge de-a lungul terenului de joc, astfel incat să o ducă în jumătatea adversarului, câștigând astfel puncte. Ecranul OLED afișează imaginea jocului, iar butoanele sunt utilizate pentru a controla mișcarea paletei și,inclusiv, a mingii.
  • Scopul proiectului este de a crea un joc interactiv și distractiv, folosind o placă Arduino Uno, un ecran OLED și butoane de control, și de a exersa abilitățile de programare Arduino și de construcție de proiecte electronice
  • Ideea de la care s-a pornit a fost de a crea un joc clasic și popular ca Pong, folosind tehnologia Arduino și componente electronice simple precum un ecran OLED și butoane de control, pentru a face proiectul accesibil pentru începători în domeniul programării și electronicii
  • Acest proiect poate fi util pentru alții ca o introducere în programarea Arduino și electronica, deoarece oferă o modalitate accesibilă de a învăța și de a aplica abilitățile de programare și construcție de proiecte. De asemenea, poate fi util pentru a-i inspira pe alții să creeze propriile lor proiecte electronice și să-și dezvolte creativitatea și abilitățile practice.

Descriere generală

Hardware Design

Materiale necesare:

  • Placă Arduino Uno
  • Ecran color OLED
  • Butoane
  • Breadboard
  • Fire de conexiune

Software Design

Se începe prin includerea bibliotecilor necesare pentru comunicarea cu afișajul OLED și alte componente.

Sunt definite constante pentru butoanele de sus și de jos utilizate pentru mișcarea jucătorului.

Sunt definite și inițializate variabilele pentru poziția bilei, direcția de deplasare a bilei, ratele de actualizare pentru mișcarea bilei și a paletelor, înălțimea paletei și pozițiile inițiale ale paletei CPU și jucătorului.

Funcția setup() este apelată o singură dată la pornirea programului și se ocupă de inițializarea afișajului OLED și a pinilor pentru butoane. De asemenea, afișează un teren de joc gol pentru o scurtă perioadă de timp.

Funcția loop() rulează într-o buclă continuă și gestionează mișcarea bilei și a paletelor în fiecare cadru.

În fiecare cadru, se verifică dacă trebuie actualizată poziția bilei. Dacă a trecut suficient timp de la ultima actualizare a bilei, se calculează noua poziție a bilei și se verifică dacă a lovit pereții verticali, pereții orizontali sau paletele CPU și jucătorului. Dacă bilea a lovit un obiect, direcția ei este inversată și noua poziție este calculată corespunzător.

În fiecare cadru, se verifică dacă trebuie actualizată poziția paletelor. Dacă a trecut suficient timp de la ultima actualizare a paletelor, se calculează noua poziție a paletei CPU pe baza poziției actuale a bilei și se verifică starea butoanelor pentru mișcarea paletei jucătorului. Apoi, se actualizează pozițiile paletei CPU și jucătorului și se desenează paletele pe afișaj.

La fiecare cadru în care s-a produs o actualizare, se actualizează afișajul pentru a reflecta noile poziții ale bilei și paletelor.

Funcția drawCourt() este folosită pentru a desena terenul de joc pe afișaj la începutul programului

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

pm/prj2023/alexau/ponggame.1684693813.txt.gz · Last modified: 2023/05/21 21:30 by cerasela.enus
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0