Differences

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

Link to this comparison view

pm:prj2024:rpascale:darius.calota [2024/05/15 03:26]
darius.calota [Hardware Design]
pm:prj2024:rpascale:darius.calota [2024/05/21 23:33] (current)
darius.calota [Software Design]
Line 60: Line 60:
  
 ===== Software Design ===== ===== Software Design =====
 +Mediu de Dezvoltare:
 +Codul aplicației este dezvoltat folosind Arduino IDE.
 +
 +Librării și Surse 3rd-Party:
 +Codul utilizează biblioteca standard LiquidCrystal.h,​ care facilitează interacțiunea cu afișajele LCD bazate pe controlere HD44780. Aceasta permite controlul ecranului pentru a afișa caractere și grafică personalizată.
 +
 +Algoritmi și Structuri Implementate:​
 +Aplicația implementează un joc simplu de tip runner, unde jucătorul controlează un erou ce se deplasează printr-un teren care se derulează continuu de la dreapta la stânga. Principalele componente ale algoritmului includ:
 +  * Inițializarea Graficii: Funcția initializeGraphics() definește și încarcă caractere personalizate pentru afișajul LCD, utilizând funcția lcd.createChar() pentru a crea sprite-uri pentru erou și teren.
 +  * Avansarea Terenului: Funcția advanceTerrain() deplasează terenul cu o unitate spre stânga, ajustând caracterele pentru a simula mișcarea continuă a terenului.
 +  * Desenarea Eroului: Funcția drawHero() gestionează afișarea eroului în diferite poziții (alergare, săritură) și detectează coliziunile cu terenul.
 +  * Gestionarea Interacțiunilor:​ Funcția buttonPush() tratează apăsările de buton folosind întreruperi hardware pentru a declanșa salturi ale eroului. În funcția loop(), starea jocului este actualizată continuu, avansând terenul, schimbând poziția eroului și verificând coliziunile. Jocul reîncepe atunci când este detectată o coliziune.
 +  * Controlul Jocului: Folosind variabile statice pentru a menține starea jocului între iterațiile buclei principale, jocul este controlat printr-o serie de stări și tranziții care determină acțiunile eroului și actualizarea ecranului.
 +
 +Surse și Funcții Implementate:​
 +  * initializeGraphics():​ Definește caracterele personalizate pentru erou și teren și inițializează matricele de teren.
 +  * advanceTerrain(char terrain, byte newTerrain) : Actualizează matricele de teren prin deplasarea conținutului spre stânga și adăugarea de noi elemente la capătul din dreapta.
 +  * drawHero(byte position, char terrainUpper,​ char terrainLower,​ unsigned int score): Desenează eroul în poziția sa actuală și verifică coliziunile cu terenul. Afișează și scorul curent pe ecranul LCD.
 +  * buttonPush():​ Setează un flag atunci când butonul este apăsat, utilizat pentru a declanșa saltul eroului.
 +  * setup(): Configurarea inițială a pinilor, afișajului LCD și întreruperilor hardware.
 +  * loop(): Buclează continuu pentru a actualiza starea jocului, incluzând avansarea terenului, gestionarea poziției eroului și verificarea coliziunilor. De asemenea, gestionează starea de așteptare înainte de începerea unui nou joc.
 + 
  
  
-<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 =====
pm/prj2024/rpascale/darius.calota.1715732807.txt.gz · Last modified: 2024/05/15 03:26 by darius.calota
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