Differences

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

Link to this comparison view

pm:prj2024:vstoica:gheorghe.grosu [2024/05/21 23:59]
gheorghe.grosu [Software Design]
pm:prj2024:vstoica:gheorghe.grosu [2024/05/26 18:13] (current)
gheorghe.grosu [Jurnal]
Line 49: Line 49:
  
 {{:​pm:​prj2024:​vstoica:​snake_2024_schem_v4.png?​600|}} {{:​pm:​prj2024:​vstoica:​snake_2024_schem_v4.png?​600|}}
 +
 +{{:​pm:​prj2024:​vstoica:​img_3423.jpeg?​600|}}
  
  
Line 56: Line 58:
  
 1. Mediu de dezvoltare: 1. Mediu de dezvoltare:
- 
 - **Platformă de dezvoltare**:​ Arduino IDE - **Platformă de dezvoltare**:​ Arduino IDE
-   Arduino IDE este utilizat pentru scrierea, compilarea și încărcarea firmware-ului pe un microcontroller Arduino.+    ​Arduino IDE este utilizat pentru scrierea, compilarea și încărcarea firmware-ului pe un microcontroller Arduino.
  
 2. Librării şi surse 3rd-party: 2. Librării şi surse 3rd-party:
Line 73: Line 74:
 3. Algoritmi şi structuri implementate:​ 3. Algoritmi şi structuri implementate:​
 - **Structuri de date**: - **Structuri de date**:
-  - `Joystick`+ 
 +**`Joystick`**
 Structura `Joystick` se ocupă de citirea pozițiilor analogice ale joystick-ului și de calcularea direcțiilor următoare pentru deplasarea șarpelui. Structura `Joystick` se ocupă de citirea pozițiilor analogice ale joystick-ului și de calcularea direcțiilor următoare pentru deplasarea șarpelui.
  
-  - `GameState`+**`GameState`**
  
 Structura `GameState` gestionează stările jocului și timpul de cadru pentru fiecare stare, facilitând tranzițiile între stări și verificarea momentului potrivit pentru actualizarea jocului. Structura `GameState` gestionează stările jocului și timpul de cadru pentru fiecare stare, facilitând tranzițiile între stări și verificarea momentului potrivit pentru actualizarea jocului.
  
-  - `Snake`+**`Snake` 
 +**
  
 Structura `Snake` gestionează pozițiile șarpelui, lungimea sa și funcțiile pentru resetare, mișcare și creștere. De asemenea, verifică dacă șarpele a colizionat cu el însuși. Structura `Snake` gestionează pozițiile șarpelui, lungimea sa și funcțiile pentru resetare, mișcare și creștere. De asemenea, verifică dacă șarpele a colizionat cu el însuși.
 +
 +Șarpele este reprezentat prin structura `Snake`, care conține:
 +* **`length`**:​ lungimea șarpelui.
 +* **`positions`**:​ array de tip `byte` ce stochează pozițiile fiecărui segment al șarpelui.
 +
 +Motive pentru această reprezentare:​
 +
 +1. **Eficiență Memorie**: Folosirea `byte` ocupă doar 1 octet, economisind memorie RAM limitată pe Arduino.
 +
 +2. **Simplitate și Performanță**:​ Acces rapid și simplu la pozițiile șarpelui pentru operațiuni de mișcare și creștere.
 +
 +3. **Gestionare Ușoară a Lungimii**: Lungimea și pozițiile sunt ușor de manipulat pentru actualizări rapide în timpul jocului.
  
  
 - **Algoritmi**:​ - **Algoritmi**:​
-   ​- ​Algoritm pentru controlul ​direcției șarpelui pe baza intrărilor de la joystick. +   ​- ​Controlul ​direcției șarpelui pe baza intrărilor de la joystick. 
-   ​- ​Algoritm pentru verificarea ​coliziunilor cu pereții, obstacolele și corpul șarpelui. +   ​- ​Verificarea ​coliziunilor cu pereții, obstacolele și corpul șarpelui. 
-   ​- ​Algoritm pentru gestionarea ​creșterii șarpelui și actualizarea scorului. +   ​- ​Gestionarea ​creșterii șarpelui și actualizarea scorului. 
-   ​- ​Algoritm pentru generarea ​aleatorie a pozițiilor merelor. +   ​- ​Generarea ​aleatorie a pozițiilor merelor. 
-   ​- ​Algoritm pentru stocarea ​și citirea scorurilor maxime din EEPROM.+   ​- ​Stocarea ​și citirea scorurilor maxime din EEPROM.
  
 Funcțiile implementate Funcțiile implementate
Line 160: Line 175:
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
- +{{:​pm:​prj2024:​vstoica:​snk3_gif.gif?250|}} {{:​pm:​prj2024:​vstoica:​snk2_gif.gif?​250|}}{{:​pm:​prj2024:​vstoica:​snk_gif.gif?​250|}}
-<note tip> +
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
 ===== Concluzii ===== ===== Concluzii =====
Line 170: Line 182:
  
 <note warning> <note warning>
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). 
  
-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**.+ 
 +{{:pm:prj2024:vstoica:snake.zip|}} 
 </​note>​ </​note>​
  
Line 182: Line 195:
   * 02/05/2024 - Crearea paginii proiectului si completarea partiala a acesteia   * 02/05/2024 - Crearea paginii proiectului si completarea partiala a acesteia
   * 12/05/2024 - Adaugarea schemei electrice si a schemei hardware   * 12/05/2024 - Adaugarea schemei electrice si a schemei hardware
 +  * 22/05/2024 - Adaugarea software designului
 +  * 24/05/2024 - Finisare proiect
 </​note>​ </​note>​
  
pm/prj2024/vstoica/gheorghe.grosu.1716325143.txt.gz · Last modified: 2024/05/21 23:59 by gheorghe.grosu
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