Pong Game v2.0

Calcan Elena-Claudia 331CA

Introducere

Joc interactiv de pong 1v1 in care jucatorii se deplaseaza folosind butoane. Fata de jocul clasic, jucatorii au posibilitatea de a controla directia bilei prin colectarea unui element de pick-up aparut in timpul jocului. De asemenea, in timpul jocului pot aparea obstacole astfel incat sa ii incurce pe cei doi jucatori.

Descriere generală

Schema Bloc:

pongv2_schema_bloc.jpg

Jocul este implementat pe o placuta Arduino Uno, afisarea realizandu-se pe un display. Controlul jucatorilor se face prin intermediul butoanelor, existand si un buton special pentru schimbarea directiei bilei. Exista si un buzzer pentru a semnala coliziunile bilei cu terenul si obstacolele si cand atunci cand un jucator inscrie.

Hardware Design

Lista piese:

  • Arduino Uno R3
  • Butoane
  • Buzzer pasiv
  • OLED Display 0.96” 128×64 SPI
  • Fire

Schema electrica:

Software Design

Mediul de dezvoltare folosit: Arduino IDE.

Biblioteci folosite:

  • Wire.h
  • SPI.h - folosit pentru comunicare SPI
  • Adafruit_GFX.h - se foloseste pentru functiile de afisare pe ecran
  • Adafruit_SSD1306.h - folosit pentru comunicarea intre arduino si display

Implementare

  • Inainte de de incepera jocului este afisat un meniu ce contiune optiunile jocului. Optiunile reprezinta punctajul pana la care se poate juca, acestea fiind: 3, 5 sau 7 puncte.
  • Navigarea prin meniu si alegerea optiunii se realizeaza prin intermediul butoanelor celui de al doilea jucator.
  • Dupa ce optiunea este selectata, jucatorii se pot pregati de joc in timp ce bara de loading se incarca pana la 100%.
  • Jucatorii sunt reprezentati de cate o bara verticala, mingea de un pixel, obstacolele de patrulatere de diferite dimensiuni, iar elementul de pick-up de un cerc.
  • Jucatorii se deplaseaza doar pe axa OY, iar mingea pe XOY.
Desfasurarea jocului
  • La inceputul fiecarei runde se alege random in ce directie porneste bila.
  • Jucatorii trebuie sa isi apere peretele din spatele fiecaruia, astfel daca mingea o loveste se pune punct pentru adversar.
  • Pe parcursul jocului se afiseaza scorul curent si cate elemente de pick-up au colectat jucatorii. De asemenea, apar obstacole si elemente de pick-up, pe pozitii random din ecran.
  • Elementul de pick-up apare pe teren dupa o anumita perioada de timp dupa colectarea acestuia. Atunci cand un jucator ia un element de pick-up, atunci el are posibilitatea de a schimba directia de mers a bilei atunci cand vrea. Elementul este luat de un jucator daca bila a fost lovita de acesta inainte.
  • Obstacolul isi schimba pozitia si dimensiunea dupa ce este lovit de minge sau la inceperea unei noi runde. Atunci cand bila loveste obstacolul, acesta ricoseaza.
  • Jocul se termina atunci cand unul dintre jucatori ajunge la numarul maxim de puncte, selectat din meniu.
  • La sfarsit se afiseaza pe display castigatorul si se sarbatoresete castigul lui prin redearea unei piese la buzzer. Pe urma se trece din nou la pagina de meniu.

Rezultate Obţinute

rezultat_pongv2.jpg

Reprezentare imagini

1. Stanga sus → circuit electric

2. Dreapta sus → pagina de meniu in care se doreste selectarea cifrei 5

3. Stanga jos → bara de loading

4. Dreapta jos → desfasurare joc

Aici se poate gasi un Demo.

Concluzii

Proiectul a fost util pentru a intelege legatura dintre hardware si software si cum sa le combin rezultand astfel un produs palpabil.

Download

Codul sursa este valabil pe GitHub.

Arhiva: ponggamev2.zip

Resurse

pm/prj2022/cristip/pong_game_2.txt · Last modified: 2022/05/29 21:39 by elena.calcan
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