Differences

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

Link to this comparison view

pm:prj2022:ionuto:ponggame [2022/05/12 22:32]
raluca_elena.aldea
pm:prj2022:ionuto:ponggame [2022/05/16 14:18] (current)
raluca_elena.aldea [Download]
Line 1: Line 1:
 ====== Pong Game ====== ====== Pong Game ======
  
-Autor: Raluca Elena Aldea+Autor: Raluca Elena Aldea\\
 Grupa: 334CB Grupa: 334CB
  
 ===== Introducere ===== ===== Introducere =====
 +{{ :​pm:​prj2022:​ionuto:​pong_1.jpg?​nolink&​200|}}
 +Proiectul consta in realizarea jocului Pong pe un ecran LCD. Jocul consta in doua palete ce se misca sus-jos. ​
 +Scopul jocului este de lovi mingea si a-l face pe oponent sa rateze.
 +
 +Exista modul de joc player vs player. Fiecare jucator va avea un joystick prin care isi poate controla paleta. La atingerea paletei, mingea ricoseaza si isi schimba directia de mers.
 +
 +Pe parcursul jocului, in fiecare runda, va aparea pe ecran o putere (care va mari lungimea paletei), iar jucatorul care a atins ultimul mingea este cel care o colecteaza. Efectul bonusului inceteaza la sfarsitul rundei.
 +
 +Un player primeste un punct in momentul in care adversarul rateaza mingea. Atunci cand unul dintre jucatori acumuleaza 3 puncte, jocul se termina si se poate incepe o noua runda.
 +
 +Am ales implementarea acestui joc pentru ca este probabil printre primele jocuri pe care l-am jucat in copilarie si s-a potrivit perfect cu dorinta mea de a lucra la un proiect ce implica un ecran LCD.
  
-<note tip> 
-Prezentarea pe scurt a proiectului vostru: 
-  * ce face 
-  * care este scopul lui 
-  * care a fost ideea de la care aţi pornit 
-  * de ce credeţi că este util pentru alţii şi pentru voi 
-</​note>​ 
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> +{{ :​pm:​prj2022:​ionuto:​pong_schematic_1.png?nolink |}} \\
-O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează.+
  
-Exemplu de schemă bloc: http://www.robs-projects.com/​mp3proj/​newplayer.html +Fiecare jucator va avea propriul modul joystick prin care controleaza paletaAsadar, sistemul are ca input comenzile jucatorilor,​ iar efectele acestora se regasesc in output, adica prin afisarea jocului pe display-ul atasatIn plus, terminarea unei runde si a jocului sunt anuntate prin sunete emise de buzzer.
-</​note>​+
  
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> +Lista de piese 
-Aici puneţi tot ce ţine de hardware design+ 
-  * listă de piese +  * Arduino Uno R3 ATmega328P ​ 
-  * scheme electrice ​(se pot lua şi de pe Internet şi din datasheet-urie.ghttp://www.captain.at/electronic-atmega16-mmc-schematic.png) +  * Ecran LCD 1.8" SPI (LCD TFT de 1,8 ", cu rezolutia de 128 x 160 pixeli si 262k de culori) 
-  * diagrame de semnal ​ +  * Modul Buzzer pasiv 
-  * rezultatele simulării +  * 2 Module Joystick PS2 
-</​note>​+  * Rezistente 
 +  * Fire de legatura 
 +  * Switch 
 +  * Buton 
 +  * Placa prototipare 
 +  * Breadboard 
 + 
 +Am inceput proiectul prin conectarea ecranului la placuta Arduino. Dupa ce am invatat sa lucrez cu el, am desenat paletele si mingea. Urmatorul pas a fost sa conectez joystick-urile si sa fac paletele sa se miste. Dupa ce am reusit sa fac jocul functional, am conectat butonul ce reseteaza runda de joc si buzzer-ul care face zgomot la fiecare "​gol"​ dat de oricare dintre jucatoriiar la finalul rundei am implementat coloana sonora de la jocul Pac ManProiectul fiind pe final, am ales sa il conectez la baterii si un switch pentru a nu fi dependent de calculator. 
 + 
 +Schema proiectului:​  
 + 
 +{{ :​pm:​prj2022:​ionuto:​screenshot_2022-05-16_at_11.07.32.png?​nolink&​800 |}} 
 + 
 +Schema detaliata a conexiunii ecranului (sursa: https://mschoeffler.com/2019/​06/​20/​arduino-tutorial-making-the-kmr-1-8-spi-tft-display-work/​):​  
 + 
 +{{ :​pm:​prj2022:​ionuto:​screenshot_2022-05-15_at_23.00.16.png?​nolink&​800 |}} 
 + 
 +Proiectul: ​ 
 + 
 +{{ :​pm:​prj2022:​ionuto:​img_8862.jpg?​nolink&​600 |}} 
 + 
 +Schema electrica:  
 + 
 +{{ :​pm:​prj2022:​ionuto:​pong_se-2.png?​nolink&​600 |}}
  
 ===== Software Design ===== ===== Software Design =====
  
 +Am realizat proiectul in Visual Studio Code, cu ajutorul extensiei Arduino.
 +
 +Proiectul este structurat in 6 fisiere.
 +
 +  * colors.h, ce contine codurile de culoare folosite pe parcursul proectului
 +  * constants.h,​ unde am definit diverse valori sau texte
 +  * song.h, ce contine codul sursa pentru coloana sonora a jocului Pac Man (sursa: https://​github.com/​robsoncouto/​arduino-songs/​blob/​master/​pacman/​pacman.ino)
 +  * lcd.cpp, ce contine implementarea metodelor ce tin de ecran (desenarea paletelor, a mingii, a puterii si a marginii ecranului)
 +  * lcd.h, header-ul fisierului lcd.cpp; contine semnaturile functilor
 +  * main.ino, ce contine toata logica jocului
 +
 +Pentru a porni jocul este nevoie de activarea switch-ului. Jocul incepe prin desenarea celor doua placute, a mingii, a puterii care apare random pe ecran si a marginii ecranului. Mingea merge spre paleta dreapta. In momentul in care puterea este colectata, paleta ultimului jucator care a atins mingea este marita cu 20 de pixeli. La acumularea unui punct, scorul este afisat peste marginea ecranului (stanga sus sau dreapta jos), sub forma unei mingi. La acumularea a 3 puncte, ecranul se actualizeaza cu textul "Left player won!" sau "Right player won", iar pe fundal se aude melodia tematica de la jocul Pac Man. La finalul cantecului, se poate apasa butonul de reset si se porneste o noua runda. ​
  
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi 
-  * (etapa 3) surse şi funcţii implementate 
-</​note>​ 
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Am obtinut un joc functional, iar procesul de dezvoltare a fost foarte placut
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+ 
-</​note>​+{{:​pm:​prj2022:​ionuto:​img_8845.jpg?​nolink&​300|}} 
 +{{:​pm:​prj2022:​ionuto:​img_8847.jpg?​nolink&​300|}} 
 +{{:​pm:​prj2022:​ionuto:​img_8901.jpg?​nolink&​300|}} 
 +{{:​pm:​prj2022:​ionuto:​img_8903.jpg?​nolink&​300|}}
  
 ===== Concluzii ===== ===== Concluzii =====
  
 +A fost un proiect foarte distractiv de realizat. Am invatat sa lucrez cu o placuta arduino, sa folosesc un letcon, sa fiu atenta la conectarea firelor si mi-am indeplinit dorinta de a lucra cu un ecran LCD. Consider ca a fost de o dificultate medie si a ajutat la consolidarea cunostintelor acumulate la laborator. ​
 +
 +Cele mai mare dificultate a fost realizarea coliziunilor cu paleta.
 ===== Download ===== ===== Download =====
  
-<note warning> +Arhiva codului sursa: 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, scheme, etcUn fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+ 
 +{{:pm:​prj2022:​ionuto:​ponggame_aldearalucae.zip|}} 
 + 
 +Galerie imagini si scheme:  
 + 
 +{{:​pm:​prj2022:​ionuto:​galerieimagini_scheme.zip|}}
  
-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**. 
-</​note>​ 
  
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +  * Alegerea proiectului si gandirea functionalitatilor 
-Puteți avea și o secțiune ​de jurnal în care să poată urmări asistentul ​de proiect progresul proiectului. +  * Realizare documentatie Milestone 1 
-</​note>​+  * Conectarea ecranului LCD si invatarea modului ​de functionare 
 +  * Desenarea paletelor, a mingii si realizarea functionalitatii ​de miscare 
 +  * Realizarea coliziunilor cu paletele 
 +  * Desenarea marginii ecranului si realizarea coliziunii cu aceasta 
 +  * Desenarea puterii si implementarea logicii de colectare 
 +  * Conectarea buzzer-ului si implementarea functionalitatilor asociate 
 +  * Implementarea logicii butonului de reset si a switch-ului legat la baterii 
 +  * Lipirea componentelor 
 +  * Realizare documentatie Milestone 2 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +  * Codul sursa pentru coloana sonora Pac Man : https://​github.com/​robsoncouto/​arduino-songs/​blob/​master/​pacman/​pacman.ino 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +  * Conectarea ecranului : https://​mschoeffler.com/​2019/​06/​20/​arduino-tutorial-making-the-kmr-1-8-spi-tft-display-work/​ 
-</​note>​+  ​Conectare buton : https://​www.arduino.cc/​en/​Tutorial/​BuiltInExamples/​Button 
 +  ​Conectare buzzer : https://​create.arduino.cc/​projecthub/​SURYATEJA/​use-a-buzzer-module-piezo-speaker-using-arduino-uno-89df45 
 +  ​Conectare switch : https://​www.instructables.com/​Powering-Arduino-with-a-Battery/​ 
 +  ​Logica coliziunilor:​ https://​gamedev.stackexchange.com/​questions/​4253/​in-pong-how-do-you-calculate-the-balls-direction-when-it-bounces-off-the-paddl 
 +  ​Diagramele au fost realizate cu ajutorul extensiei Drow.io pentru VS code si aplicatia Fritzing 
  
 <​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>​
  
pm/prj2022/ionuto/ponggame.1652383944.txt.gz · Last modified: 2022/05/12 22:32 by raluca_elena.aldea
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