Differences

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

Link to this comparison view

pm:prj2021:alazar:space_invaders [2021/05/29 00:45]
dan_andrei.ursu
pm:prj2021:alazar:space_invaders [2021/05/29 16:30] (current)
dan_andrei.ursu
Line 8: Line 8:
 Proiectul propune realizarea unei versiuni personalizate a celebrului joc de tip arcade [[https://​en.wikipedia.org/​wiki/​Space_Invaders|Space Invaders]] si are scop de entertainment. Proiectul propune realizarea unei versiuni personalizate a celebrului joc de tip arcade [[https://​en.wikipedia.org/​wiki/​Space_Invaders|Space Invaders]] si are scop de entertainment.
  
-{{ pm:​prj2021:​alazar:​dan_andrei_ursu:​space_invaders.gif |Space Invaders}}+{{ pm:​prj2021:​alazar:​dan_andrei_ursu:​space_invaders_original_game.gif |Space Invaders ​original game}}
  
-Obiectivul jocului este neutralizarea tuturor extraterestrilor prin lansarea unor proiectile inainte ca acestia sa distruga nava controlata de jucator. Se pot primi diverse power-ups pentru distrugerea unui cargo ship, precum proiectile de dimensiune marita, o viata suplimentara,​ extinderea razei unui scutetc. Daca jucatorul nu mai are vieti ramase si este lovit de un extraterestru jocul se considera pierdut si se afiseaza scorul final.+Obiectivul jocului este neutralizarea tuturor extraterestrilor prin lansarea unor proiectile inainte ca acestia sa distruga nava controlata de jucator. Se pot primi diverse power-ups pentru distrugerea unui cargo ship, precum proiectile de dimensiune marita, o viata suplimentara,​ extinderea razei unui scut etc.. Daca jucatorul nu mai are vieti ramase si este lovit de un extraterestru jocul se considera pierdut si se afiseaza scorul final.
  
 ===Descriere generala=== ===Descriere generala===
Line 16: Line 16:
 ==Schema bloc== ==Schema bloc==
  
-{{ pm:​prj2021:​alazar:​dan_andrei_ursu:​schema_bloc.png |Schema ​electrica}}+{{ pm:​prj2021:​alazar:​dan_andrei_ursu:​schema_bloc.png |Schema ​bloc}}
  
 ==Functionalitatea modulelor== ==Functionalitatea modulelor==
  
- * Arduino Uno: logica jocului implementata in microprocesorul ATmega328p  + * **Arduino Uno**: logica jocului ​este implementata in microprocesorul ​**ATmega328p**  
- * Input: 1 joystick biaxial pentru pozitionarea navei, conectat la arduino ​prin 2 pini analogigi ​si un pin GPIO + 1 buton pentru tragere conectat la placa Arduino prin printr-un pin GPIO + * **Input**: 1 joystick biaxial pentru pozitionarea navei, conectat la Arduino ​prin 2 pini de tip analog ​si un pin GPIO + 1 buton pentru tragere conectat la placa printr-un pin GPIO 
- * Display: un ecran OLED legat la placa Arduino ​prin SPI+ * **Display**: un ecran OLED ce comunica cu placa prin SPI
  
 ===Hardware Design=== ===Hardware Design===
Line 28: Line 28:
 ==Schema electrica== ==Schema electrica==
  
-{{pm:​prj2021:​alazar:​dan_andrei_ursu:​schema_electrica.png|Schema ​bloc}}+{{ pm:​prj2021:​alazar:​dan_andrei_ursu:​schema_electrica.png |Schema ​electrica}}
  
 ==Componente== ==Componente==
Line 42: Line 42:
 ===Software Design=== ===Software Design===
  
-==Programe ​de dezvoltare==+==Programe ​utilizate pentru ​dezvoltare==
  
- * **Arduino IDE**: pentru incarcarea codului pe placuta+ * **Arduino IDE**: pentru incarcarea codului pe placuta ​si debugging
  * **Sublime**:​ pentru realizarea implementarii codului  * **Sublime**:​ pentru realizarea implementarii codului
  * **Eagle**: pentru proiectarea schemei electrice  * **Eagle**: pentru proiectarea schemei electrice
Line 62: Line 62:
  
  - asigurarea comunicatiei cu perifericele hardware (//display OLED, joystick, shoot button//)  - asigurarea comunicatiei cu perifericele hardware (//display OLED, joystick, shoot button//)
- * **initHardwareComponents()**:​ apeleaza functiile de initializarea specifice obiectelor responsabile de getiunea ​componentelor hardware pentru stabilirea piniilor la care sunt legate perifericele,​ dimensiunile acestora, protocolul de comunicare ​utilizatetc+ * **initHardwareComponents()**:​ apeleaza functiile de initializarea specifice obiectelor responsabile de gestiunea ​componentelor hardware pentru stabilirea piniilor la care sunt legate perifericele,​ dimensiunile acestora, protocolul de comunicatie ​utilizat etc.
  - afisarea meniului jocului si asteptarea selectarii unei optiuni din acesta  - afisarea meniului jocului si asteptarea selectarii unei optiuni din acesta
  * **displayNewGameScreen()**  * **displayNewGameScreen()**
Line 94: Line 94:
  * meniul de pornire ofera doar posibilitatea inceperii unui nou joc, vreau sa fac posibila si oprirea jocului curent si reluarea ulterioara a acestuia  * meniul de pornire ofera doar posibilitatea inceperii unui nou joc, vreau sa fac posibila si oprirea jocului curent si reluarea ulterioara a acestuia
  * scorul este salvat in memorie volatila si se pierde la deconectarea alimentarii  * scorul este salvat in memorie volatila si se pierde la deconectarea alimentarii
- * multe dintre limitarile descrise mai sus au fost cauzate de dimensiunea mica a memoriei RAM si frecventa redusa a microprocesorului,​ din acest motiv pentru a putea extinde functionalitatiile jocului trebuie sa achizitionez o placuta ce dispune de mai mlte resurse hardware+ * multe dintre limitarile descrise mai sus au fost cauzate de dimensiunea mica a memoriei RAM si frecventa redusa a microprocesorului,​ din acest motivpentru a putea extinde functionalitatiile joculuitrebuie sa achizitionez o placuta ce dispune de resurse hardware ​mai performante
  
 ==Galerie foto== ==Galerie foto==
  
-{{pm:​prj2021:​alazar:​dan_andrei_ursu:​hardware_1.png?​225|Schema bloc}} +{{pm:​prj2021:​alazar:​dan_andrei_ursu:​hardware_1.png?​220|Hardware 1}} 
-{{pm:​prj2021:​alazar:​dan_andrei_ursu:​hardware_2.png?​225|Schema bloc}} +{{pm:​prj2021:​alazar:​dan_andrei_ursu:​hardware_2.png?​220|Hardware 2}} 
-{{pm:​prj2021:​alazar:​dan_andrei_ursu:​hardware_3.png?​225|Schema bloc}}+{{pm:​prj2021:​alazar:​dan_andrei_ursu:​hardware_3.png?​220|Hardware 3}}
  
-{{pm:​prj2021:​alazar:​dan_andrei_ursu:​new_game.png?​225|Schema bloc}} +{{pm:​prj2021:​alazar:​dan_andrei_ursu:​new_game.png?​220|New game}} 
-{{pm:​prj2021:​alazar:​dan_andrei_ursu:​end_game_won.png?​225|Schema bloc}} +{{pm:​prj2021:​alazar:​dan_andrei_ursu:​end_game_won.png?​220|End game won}} 
-{{pm:​prj2021:​alazar:​dan_andrei_ursu:​end_game_lost.png?​225|Schema bloc}}+{{pm:​prj2021:​alazar:​dan_andrei_ursu:​end_game_lost.png?​220|End game lost}}
  
-{{pm:​prj2021:​alazar:​dan_andrei_ursu:​game_play_1.png?​225|Schema bloc}} +{{pm:​prj2021:​alazar:​dan_andrei_ursu:​game_play_1.png?​220|Game play 1}} 
-{{pm:​prj2021:​alazar:​dan_andrei_ursu:​game_play_2.png?​225|Schema bloc}} +{{pm:​prj2021:​alazar:​dan_andrei_ursu:​game_play_2.png?​220|Game play 2}} 
-{{pm:​prj2021:​alazar:​dan_andrei_ursu:​game_play_3.png?​225|Schema bloc}}+{{pm:​prj2021:​alazar:​dan_andrei_ursu:​game_play_3.png?​220|Game play 3}}
  
-==Video==+==Galerie video==
  
-TODO+{{ pm:​prj2021:​alazar:​dan_andrei_ursu:​space_invaders.gif |Space Invaders}}
  
 ==Demo== ==Demo==
  
-TODO+Link demo: https://​youtu.be/​7K6zVms1858
  
 ===Concluzii=== ===Concluzii===
  
-Desi n-am reusit sa implementez toate functionalitatiile pe care mi le-am propus initial, consider ca proiectul a fost unul reusit, la care am lucrat cu placere. Dificultatea realizarii jocului a constat in gestiunea restrictiilor impuse de memoria RAM si de capacitatea de calcul a microprocesorului. Aceste limitari in care a trebuit sa ma incadrez m-au ajutat sa imi dezvolt abilitatiile de administrare a resurselor hardware limitate.+Desi n-am reusit sa implementez toate functionalitatiile pe care mi le-am propus initial, consider ca proiectul a fost unul reusit, la care am lucrat cu placere. Dificultatea realizarii jocului a constat in gestiunea restrictiilor impuse de memoria RAM si de capacitatea ​redusa ​de calcul a microprocesorului. Aceste limitari in care a trebuit sa ma incadrez m-au ajutat sa imi dezvolt abilitatiile de administrare a resurselor hardware limitate.
  
 ===Download=== ===Download===
  
- * {{pm:​prj2021:​alazar:​dan_andrei_ursu:​space_invaders.pdf|Space invaders}} + * {{pm:​prj2021:​alazar:​dan_andrei_ursu:​space_invaders.zip|Source Code}} 
-TODOadd codefile+{{pm:prj2021:​alazar:​dan_andrei_ursu:​space_invaders.pdf|This page as pdf}}
  
 ===Bibliografie si Resurse=== ===Bibliografie si Resurse===
Line 138: Line 138:
  * [[https://​github.com/​madleech/​Button|Button.h]]  * [[https://​github.com/​madleech/​Button|Button.h]]
  * [[https://​github.com/​janelia-arduino/​Vector|Vector.h]]  * [[https://​github.com/​janelia-arduino/​Vector|Vector.h]]
- * [[https://​giphy.com/​gifs/​auditoriumparcodellamusica-KZqcV1ghLOdJ29uPTN|Sursa gif]]+ * [[https://​giphy.com/​gifs/​auditoriumparcodellamusica-KZqcV1ghLOdJ29uPTN|space_invaders_original_game.gif]] 
 + * [[https://​downloads.khinsider.com/​game-soundtracks/​album/​space-invaders-91-sega-genesis|Demo'​s soundtrack]]
  
pm/prj2021/alazar/space_invaders.1622238318.txt.gz · Last modified: 2021/05/29 00:45 by dan_andrei.ursu
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