Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:alazar:joc_pong [2021/05/27 20:39]
alexandru.cioplean
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 playerifiecare player ​sa aiba cate 2 butoane pentru ​miscarea fiecarei platforme +  * un joc de pong pe un ecran LCD cu 2 playeri 
-  * scorul este afisat ​in partea de sus+  * fiecare player ​are cate 2 butoane pentru ​deplasare 
 +  * 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 34: Line 41:
 Functiile implementate sunt: Functiile implementate sunt:
   * setup() - initializarea pinilor si a ecranului   * setup() - initializarea pinilor si a ecranului
-  * loop() - se detecteaza apasarile de butoane pentru modificarea pozitiei jucatorilor,​ se deplaseaza mingea conform cu ball_dir_x si ball_dir_y, atunci cand mingea atinge unul dintre peretii playerilor, scorul se actualizeaza si programul iese din starea de running+  * loop() - se detecteaza apasarile de butoane pentru modificarea pozitiei jucatorilor,​ se deplaseaza mingea conform cu ball_dir_x si ball_dir_y, atunci cand mingea atinge unul dintre peretii playerilor, scorul se actualizeaza, este difuzat un sunet si programul iese din starea de running
   * display_score() - afiseaza pe ecran scorul curent al jocului   * display_score() - afiseaza pe ecran scorul curent al jocului
   * 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 =====
 +Circuitul electric:\\ {{:​pm:​prj2021:​alazar:​pong_poza_circuit.jpeg?​300|}}
  
 +Jocul:\\ {{:​pm:​prj2021:​alazar:​pong_poza_joc.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|}}\\
 +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 =====
 +{{:​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>​
  
pm/prj2021/alazar/joc_pong.1622137157.txt.gz · Last modified: 2021/05/27 20:39 by alexandru.cioplean
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