This shows you the differences between two versions of the page.
pm:prj2021:alazar:joc_pong [2021/05/27 21:02] alexandru.cioplean [Introducere] |
pm:prj2021:alazar:joc_pong [2021/05/30 19:31] (current) alexandru.cioplean [Descriere generală] |
||
---|---|---|---|
Line 3: | Line 3: | ||
Cioplean Alexandru-Mihai 331CB | Cioplean Alexandru-Mihai 331CB | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Prezentarea pe scurt a proiectului vostru: | + | Prezentarea pe scurt a proiectului: |
- | * un joc de pong pe un ecran lcd cu 2 playeri, fiecare player sa aiba cate 2 butoane pentru miscarea fiecarei platforme | + | * un joc de pong pe un ecran LCD cu 2 playeri |
+ | * fiecare player are cate 2 butoane pentru deplasare | ||
* scorul este afisat dupa marcarea unui punct | * scorul este afisat dupa marcarea unui punct | ||
+ | * punctele se marcheaza atunci cand unul dintre jucatori trimite mingea pe langa celalalt jucator si atinge peretele din spatele acestuia | ||
* difuzarea unui sunet atunci cand un jucator castiga un punct | * difuzarea unui sunet atunci cand un jucator castiga un punct | ||
+ | * jocul este castigat atunci cand unul dintre jucatori ajunge la 11 puncte si jocul se reseteaza | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Schema bloc:\\ {{:pm:prj2021:alazar:pong_flowchart.png?400|}} | + | Schema bloc:\\ {{:pm:prj2021:alazar:pong_flowchart.jpg?500|}} |
+ | * Jucatorii sunt reprezentati prin 2 linii trase pe orizontala pe ecran, aproape lipite de margini | ||
+ | * Mingea este reprezentata de un pixel de culoare albastra care se misca pe ecran | ||
+ | * Fiecare jucator isi controleaza linia prin cate 2 butoane, unul pentru deplasarea in sus si altul pentru deplasarea in jos | ||
+ | * La inscrierea unui punct, buzzerul scoate un zgomot scurt | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Lista de piese: | Lista de piese: | ||
Line 16: | Line 23: | ||
* ecran LCD | * ecran LCD | ||
* buzzer | * buzzer | ||
- | Schema electrica:\\ {{:pm:prj2021:alazar:pong_electrical_scheme.png?300|}} | + | Schema electrica:\\ {{:pm:prj2021:alazar:pong_schema_electrica.jpeg?700|}} |
===== Software Design ===== | ===== Software Design ===== | ||
Am scris codul in mediul de dezvoltare: Arduino IDE. | Am scris codul in mediul de dezvoltare: Arduino IDE. | ||
Line 38: | Line 45: | ||
* game_over() - afiseaza ecranul de game over atunci cand un jucator ajunge la 11 puncte | * game_over() - afiseaza ecranul de game over atunci cand un jucator ajunge la 11 puncte | ||
* reset() - functie folosita pentru a reseta pozitia jucatorilor si a mingii | * reset() - functie folosita pentru a reseta pozitia jucatorilor si a mingii | ||
+ | Functionare generala: | ||
+ | * In setup() se initializeaza pinii si ecranul LCD | ||
+ | * Jocul incepe cu mingea la mijlocul terenului, deplasandu-se spre unul dintre jucatori | ||
+ | * Mingea se deplaseaza folosindu-se de variabilele ball_dir_x si ball_dir_y. | ||
+ | * La un numar fix de milisecunde(date de variabila ball_delay) pozitia mingii se actualizeaza pe axele Ox si Oy | ||
+ | * Atunci cand mingea loveste unul dintre peretii ecranului sau unul dintre jucatori, directia mingii pe acea axa se inverseaza si traiectoria se mingii schimba cu 45 de grade | ||
+ | * Atunci cand un jucator reuseste sa trimita mingea pana la peretele ecranului corespunzator celuilalt jucator, primeste un punct | ||
+ | * La primirea unui punct, jocul iese din starea running si se afiseaza ecranul cu scorul timp de 5 secunde, dupa care pozitiile mingii si a jucatorilor sunt resetate la cele initiale | ||
+ | * Atunci cand un jucator ajunge la 11 puncte, jocul este castigat si se afiseaza ecranul de "Game Over", pe langa pozitii, este resetat si scorul | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Circuitul electric:\\ {{:pm:prj2021:alazar:pong_poza_circuit.jpeg?300|}} | Circuitul electric:\\ {{:pm:prj2021:alazar:pong_poza_circuit.jpeg?300|}} | ||
Line 45: | Line 61: | ||
Ecranul de scor:\\ {{:pm:prj2021:alazar:pong_poza_scor.jpeg?300|}} | Ecranul de scor:\\ {{:pm:prj2021:alazar:pong_poza_scor.jpeg?300|}} | ||
- | Ecranul de game over:\\ {{:pm:prj2021:alazar:pong_poza_gameover.jpeg?300|}} | + | Ecranul de game over:\\ {{:pm:prj2021:alazar:pong_poza_gameover.jpeg?300|}}\\ |
+ | Demo-ul care arata cum functioneaza jocul se gaseste aici: [[https://youtu.be/QwO5V8TQJNI|Demo Proiect]] | ||
+ | ===== Concluzii ===== | ||
+ | Proiectul a fost unul interesant, cea mai grea parte a proiectului a fost sa conectez in mod corect ecranul LCD la Arduino deoarece pe site-ul de unde l-am cumparat nu exista vreun link cu documentatia. De asemenea, am avut dificultati in a gasi o biblioteca pentru a controla afisarea pe ecran din cod. | ||
+ | Intr-un final am obtinut ce mi-am dorit, jocul este perfect functional si poate fi jucat. | ||
===== Download ===== | ===== Download ===== | ||
{{:pm:prj2021:alazar:cioplean_alexandru.zip|Cod sursa}} | {{:pm:prj2021:alazar:cioplean_alexandru.zip|Cod sursa}} | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note><html><a class="media mediafile mf_pdf" href="?do=export_pdf">Joc Pong</a></html></note> | + | [[https://ocw.cs.pub.ro/courses/pm/lab/lab0-2021|Folosire butoane]]\\ |
+ | [[https://www.youtube.com/watch?v=xDgwxYMmhGI|Conectare ecran LCD la Arduino]]\\ | ||
+ | [[https://www.ardumotive.com/how-to-use-a-buzzer-en.html|Folosire buzzer]] | ||
+ | <note>Download PDF pagina curenta :<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Joc Pong</a></html></note> | ||