This shows you the differences between two versions of the page.
pm:prj2021:alazar:space_invaders [2021/05/29 15:19] 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_original_game.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 scut, etc. 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 utilizat, etc | + | * **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 motiv, pentru a putea extinde functionalitatiile jocului, trebuie 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}} |
+ | |||
+ | ==Galerie video== | ||
+ | |||
+ | {{ pm:prj2021:alazar:dan_andrei_ursu:space_invaders.gif |Space Invaders}} | ||
==Demo== | ==Demo== | ||
Line 116: | Line 120: | ||
===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=== |