This shows you the differences between two versions of the page.
pm:prj2022:cristip:pong_game_2 [2022/05/29 14:06] elena.calcan |
pm:prj2022:cristip:pong_game_2 [2022/05/29 21:39] (current) elena.calcan |
||
---|---|---|---|
Line 19: | Line 19: | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | <note tip> | ||
**Lista piese:** | **Lista piese:** | ||
Line 27: | Line 26: | ||
* OLED Display 0.96" 128x64 SPI | * OLED Display 0.96" 128x64 SPI | ||
* Fire | * Fire | ||
- | </note> | + | |
+ | **Schema electrica:** | ||
+ | |||
+ | {{ schematic_pong2.png?800x600 }} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Mediul de dezvoltare folosit: Arduino IDE. | ||
- | <note tip> | + | Biblioteci folosite: |
- | Descrierea codului aplicaţiei (firmware): | + | * Wire.h |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * SPI.h - folosit pentru comunicare SPI |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Adafruit_GFX.h - se foloseste pentru functiile de afisare pe ecran |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * Adafruit_SSD1306.h - folosit pentru comunicarea intre arduino si display |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | === 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 ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | {{ rezultat_pongv2.jpg?664 x 546 }} |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | ** 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 [[https://drive.google.com/drive/folders/1hT7z8P12vtGG49nF-HN9FSsSU9aWy-ET?usp=sharing| Demo]]. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | Proiectul a fost util pentru a intelege legatura dintre hardware si software si cum sa le combin rezultand astfel un produs palpabil. |
- | <note warning> | + | ===== 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**. | + | Codul sursa este valabil pe [[https://github.com/elenacalcan26/PongGame-v2.0 | GitHub]]. |
- | </note> | + | |
- | ===== Jurnal ===== | + | Arhiva: {{ponggamev2.zip}} |
- | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
- | </note> | ||
- | ===== Bibliografie/Resurse ===== | + | ===== Resurse ===== |
- | <note> | + | * https://learn.adafruit.com/monochrome-oled-breakouts/arduino-library-and-examples |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * https://lastminuteengineers.com/oled-display-arduino-tutorial/ |
- | </note> | + | * https://www.youtube.com/watch?v=u5drIsmr6UM&ab_channel=%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82%D0%B8%D0%BD |
+ | * https://create.arduino.cc/projecthub/ronfrtek/arduino-oled-display-menu-with-option-to-select-e85f04 | ||
+ | * https://create.arduino.cc/projecthub/GeneralSpud/passive-buzzer-song-take-on-me-by-a-ha-0f04a8 | ||
+ | * https://gist.github.com/mikeputnam/2820675 | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||