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
  • Buzzer
  • Butoane
  • Breadboard
  • Fire de conexiune

Software Design

pong_game_ec.zip video.zip

La începutul codului sunt incluse mai multe biblioteci necesare pentru controlul afișajului OLED, butoanelor și buzzer-ului.

Se definesc mai multe constante și variabile globale pentru a configura și a stoca starea jocului, inclusiv coordonatele bilei, direcțiile de deplasare, scorurile jucătorilor și pozițiile paletei pentru jucătorul și calculatorul controlate de cod.

Funcțiile setup_interrupts() și setup() sunt responsabile pentru inițializarea hardware-ului și a afișajului OLED. În setup_interrupts(), se configurează intrările de întreruperi pentru butoanele de sus și jos, iar în setup() se inițializează afișajul OLED.

Funcția ISR(INT0_vect) este o rutină de întrerupere pentru butonul de sus și ISR(INT1_vect) este o rutină de întrerupere pentru butonul de jos. Aceste rutine sunt declanșate atunci când se detectează o schimbare de stare a butoanelor și setează variabilele up și down în funcție de starea butoanelor.

Funcția loop() conține logica principală a jocului și este executată într-un ciclu continuu. În fiecare iterație a buclei, se verifică dacă a sosit momentul de actualizare a poziției bilei sau a paletei și se efectuează acțiunile corespunzătoare. De asemenea, se verifică dacă un jucător a marcat un punct și se afișează scorul pe afișajul OLED. Jocul se oprește atunci când un jucător atinge scorul de 5.

Funcția resetGame() este responsabilă de resetarea stării jocului la începutul fiecărei runde, inclusiv resetarea poziției bilei, direcțiilor de deplasare și a pozițiilor paletei.

Funcția drawCourt() desenează terenul de joc pe afișajul OLED, adică un chenar alb de dimensiune 128×64 pixeli.

În general, codul implementează logica de bază a jocului Pong și utilizează afișajul OLED și butoanele pentru a permite unui jucător să controleze o paletă și să joace împotriva calculatorului.

La final se afiseaza scorul.

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.txt · Last modified: 2023/05/28 22:19 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