This shows you the differences between two versions of the page.
pm:prj2023:vstoica:minesweeper [2023/05/28 18:48] andrei.anghel1111 [Software Design] |
pm:prj2023:vstoica:minesweeper [2023/05/28 18:58] (current) andrei.anghel1111 [Download] |
||
---|---|---|---|
Line 43: | Line 43: | ||
{{:pm:prj2023:vstoica:diagramastari.jpg?700|}} | {{:pm:prj2023:vstoica:diagramastari.jpg?700|}} | ||
- | Starea initiala este cea de MENU, in care este afisat nivelul de baterie al consolei si in care se poate alege dificultatea jocului. Odata ales nivelul de dificultate, se trece in starea de PLAYING. Cheia implementarii sunt matricile **boardState** - retine informatii despre stadiul curent al tablei de joc si **bombs** - retine pozitiile bombelor. | + | Starea initiala este cea de **MENU**, in care este afisat nivelul bateriei consolei si in care se poate alege dificultatea jocului. Odata ales nivelul de dificultate, se trece in starea de **PLAYING**. Cheia implementarii sunt matricile **boardState** - retine informatii despre stadiul curent al tablei de joc si **bombs** - retine pozitiile bombelor. |
''int boardState[ROWS][COLUMNS];'' 0-8 = number of adjacent bombs, 10 = not revealed, 11 = bomb, 12 = flag | ''int boardState[ROWS][COLUMNS];'' 0-8 = number of adjacent bombs, 10 = not revealed, 11 = bomb, 12 = flag | ||
Line 49: | Line 49: | ||
''int bombs[ROWS][COLUMNS] = {0};'' 0 = no bomb, 1 = bomb | ''int bombs[ROWS][COLUMNS] = {0};'' 0 = no bomb, 1 = bomb | ||
- | Matricea de stari este reprezentata in mod continuu pe ecranul LCD, iar orice modificare in starile acesteia este vizibila pe ecran. Odata ce se indeplineste conditia de victorie sau conditia de pierdere a jocului, se trece in una din starile WON sau LOST, din care se poate reveni in starea MENU prin apasarea butonului RESET de pe placuta. Am implementat diverse functii cu nume sugestive pentru implementarea logicii: | + | Matricea de stari este reprezentata in mod continuu pe ecranul **LCD**, iar orice modificare in starile acesteia este vizibila pe ecran. Odata ce se indeplineste conditia de victorie sau conditia de pierdere a jocului, se trece in una din starile **WON** sau **LOST**, din care se poate reveni in starea **MENU** prin apasarea butonului **RESET** de pe placuta. Am implementat diverse functii cu nume sugestive pentru implementarea logicii: |
<code c> | <code c> | ||
// Randomly generates boms. | // Randomly generates boms. | ||
Line 135: | Line 135: | ||
</note> | </note> | ||
- | **Buzzer-ul** este configurat prin intermediul registrului timer oferit de ATmega328pb si este configurat pentru a emite sunete la interval de o secunda. | + | **Buzzer-ul** este configurat prin intermediul registrului timer oferit de **ATmega328pb** si este configurat pentru a emite sunete la interval de o secunda. |
<code c> | <code c> | ||
// Setting up the timer register for the buzzer | // Setting up the timer register for the buzzer | ||
Line 162: | Line 162: | ||
</code> | </code> | ||
- | **Butoanele FLAG si REVEAL** sunt legate la pinii digitali 2 si 3, iar declasarea acestora este realizata prin intermediul **intreruperilor hardware.** | + | **Butoanele FLAG** si **REVEAL** sunt legate la pinii digitali 2 si 3, iar declasarea acestora este realizata prin intermediul **intreruperilor hardware.** |
<code c> | <code c> | ||
// Pentru butonul FLAG | // Pentru butonul FLAG | ||
Line 196: | Line 196: | ||
Realizarea acestui proiect a fost o experienta foarte interesanta, ce a pornit de la pasiunea mea pentru un joc simplist si foarte popular, anume **Minesweeper**. In timpul dezvoltarii proiectului, am venit cu numeroase imbunatatiri si idei suplimentare, ajungand in final la un produs ce reprezinta o consola de jocuri portabila, cu feedback video, dar si audio si un controller cu 6 butoane pentru input. Proiectul poate fi oricand extins si imbunatatit, implementand numeroase alte joculete pentru consola. | Realizarea acestui proiect a fost o experienta foarte interesanta, ce a pornit de la pasiunea mea pentru un joc simplist si foarte popular, anume **Minesweeper**. In timpul dezvoltarii proiectului, am venit cu numeroase imbunatatiri si idei suplimentare, ajungand in final la un produs ce reprezinta o consola de jocuri portabila, cu feedback video, dar si audio si un controller cu 6 butoane pentru input. Proiectul poate fi oricand extins si imbunatatit, implementand numeroase alte joculete pentru consola. | ||
===== Download ===== | ===== Download ===== | ||
+ | |||
+ | {{:pm:prj2023:vstoica:src_minesweeper.zip|}} | ||