This shows you the differences between two versions of the page.
pm:prj2021:apredescu:snake [2021/06/03 10:21] gloria.popa [Rezultate obținute] |
pm:prj2021:apredescu:snake [2021/06/03 15:30] (current) gloria.popa |
||
---|---|---|---|
Line 4: | Line 4: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | * Proiectul consta in implementarea unui joc de Snake putin imbunatatit pe un display LCD. | + | * Proiectul constă în implementarea unui joc de Snake puțin îmbunătățit pe un display LCD. |
- | * Permite jucatorului sa interactioneze cu elementele din joc prin intermediul unor butoane. | + | * Permite jucătorului să interacționeze cu elementele din joc prin intermediul unor butoane. |
- | * Jocul consider ca ar fi util pentru ca este un mod bun de relaxare. | + | * Jocul consider că ar fi util pentru că este un mod bun de relaxare. |
===== Descriere generală ===== | ===== Descriere generală ===== | ||
{{ :pm:prj2021:apredescu:popa_gloria1.png?400 |}} | {{ :pm:prj2021:apredescu:popa_gloria1.png?400 |}} | ||
- | * Jocul va rula pe un display LCD, iar controlul se va realiza prin 4 butoane (sus/jos/stanga/dreapta). | + | * Jocul va rula pe un display LCD, iar controlul se va realiza prin 4 butoane (sus/jos/stânga/dreapta). |
- | * Viteza sarpelui este reglabila printr-un potentiometru. | + | * Viteza șarpelui este reglabilă printr-un potențiometru. |
- | * Sistem de sunet la colectarea mancarii si game over printr-un buzzer. | + | * Sistem de sunet la colectarea mâncării și game over printr-un buzzer. |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 33: | Line 33: | ||
- Mediu de dezvoltare: | - Mediu de dezvoltare: | ||
- Arduino IDE | - Arduino IDE | ||
- | - Fritzing → schema electrica | + | - Fritzing → schema electrică |
- Librării utilizate: | - Librării utilizate: | ||
- **stdio.h** si **stdlib.h** → biblioteci standard | - **stdio.h** si **stdlib.h** → biblioteci standard | ||
- | - **string.h** → pentru lucrul pe sirurile de caractere | + | - **string.h** → pentru lucrul pe șirurile de caractere |
- | - **SPI.h** → pentru a permite comunicarea cu LCD-ul SPI, placuta Arduino fiind pe post de master | + | - **SPI.h** → pentru a permite comunicarea cu LCD-ul SPI, plăcuța Arduino fiind pe post de master |
- **TFT.h** → pentru a simplifica procesul de desenat pe ecran | - **TFT.h** → pentru a simplifica procesul de desenat pe ecran | ||
- Fișiere sursă: | - Fișiere sursă: | ||
Line 44: | Line 44: | ||
=== Logica jocului === | === Logica jocului === | ||
- | In primul rand, am desenat ecranul de start in care jucatorul este indemnat sa apese pe un buton pentru a incepe jocul. In urma acestei actiuni este redat fundalul si este plasata prima bucata de mancare pe harta. De asemenea, este afisat sarpele la o pozitie prestabilita (acesta incepe sa se miste intr-o directie determinata de care dintre butoane a fost apasat). | + | În primul rând, am desenat ecranul de start în care jucătorul este îndemnat să apese pe un buton pentru a începe jocul. În urma acestei acțiuni este redat fundalul și este plasată prima bucată de mâncare pe harta. De asemenea, este afișat șarpele la o poziție prestabilită (acesta începe să se miște într-o direcție determinată de care dintre butoane a fost apăsat). |
- | Jocul se petrece intr-un loop infinit, fiind resetat in momentul in care sarpele se loveste fie de un perete, fie de propriul sau corp. In acel moment apare ecranul de game over si buzzer-ul scoate un sunet specific. | + | Jocul se petrece într-un loop infinit, fiind resetat în momentul în care șarpele se lovește fie de un perete, fie de propriul său corp. În acel moment apare ecranul de game over și buzzer-ul scoate un sunet specific. |
- | Logica jocului se bazeaza in principiu pe implementarea unei liste simplu inlantuite, in care un nod reprezinta un patrat care alcatuieste sarpele. La fiecare iteratie, stabilesc care este noua pozitie a capului in functie de ce input este primit de la butoane. Practic, este nevoie doar sa desenez capul si sa sterg coada (ultimul nod din lista), restul sarpelui ramanand in pozitia precedenta. Asa se pastreaza dimensiunea sa constanta, iar in cazul in care creste punctajul nu se mai sterge ultimul bloc, incrementandu-se astfel aceasta dimensiune. | + | Logica jocului se bazează în principiu pe implementarea unei liste simplu înlănțuite, în care un nod reprezintă un pătrat care alcătuiește șarpele. La fiecare iterație, stabilesc care este noua poziție a capului în funcție de ce input este primit de la butoane. Practic, este nevoie doar să desenez capul și să șterg coada (ultimul nod din lista), restul șarpelui rămânând în poziția precedentă. Așa se păstrează dimensiunea sa constantă, iar în cazul în care crește punctajul nu se mai șterge ultimul bloc, incrementându-se astfel această dimensiune. |
- | Punctele se acumuleaza pe masura ce sarpele colecteaza mancarea spawnata aleator pe harta, la o pozitie diferita de a sa. Fiecare punct obtinut este semnalat de catre buzzer printr-un bipait scurt. | + | Punctele se acumulează pe măsură ce șarpele colectează mâncarea spawnată aleator pe harta, la o poziție diferită de a sa. Fiecare punct obținut este semnalat de către buzzer printr-un bipăit scurt. |
- | Viteza sarpelui poate fi variata de catre player cu ajutorul unui potentiometru, aspect care ofera o dinamica mai buna jocului. | + | Viteza șarpelui poate fi variată de către player cu ajutorul unui potențiometru, aspect care oferă o dinamică mai bună jocului. |
Line 58: | Line 58: | ||
{{:pm:prj2021:apredescu:gloria_hardware1.png?320 |}} | {{:pm:prj2021:apredescu:gloria_hardware1.png?320 |}} | ||
- | {{:pm:prj2021:apredescu:gloria_hardware2.png?320 |}} | + | {{:pm:prj2021:apredescu:gloria_hardware2.png?320 |}}\\ |
- | {{:pm:prj2021:apredescu:gloria_hardware4.png?320|}} | + | {{:pm:prj2021:apredescu:gloria_hardware4.png?320 |}} |
- | {{:pm:prj2021:apredescu:gloria_hardware5.png?320|}} | + | {{:pm:prj2021:apredescu:gloria_hardware5.png?320 |}} |
- | {{:pm:prj2021:apredescu:gloria_hardware6.png?300|}} | + | {{:pm:prj2021:apredescu:gloria_hardware6.png?320 |}} |
- | {{ :pm:prj2021:apredescu:gloria_hardware3.png?350 |}} | + | {{:pm:prj2021:apredescu:gloria_hardware7.png?320 |}} |
+ | |||
+ | === Demo === | ||
+ | |||
+ | [[https://drive.google.com/file/d/1ntT1oRqcfP05LMMt7KTXZiZ0p_mXRs-t/view?usp=sharing]] | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | * Am reusit sa finalizez implementarea propusa, atat partea de software cat si cea de hardware, cea din urma ajutandu-ma sa inteleg mai bine anumite concepte care stau la baza electronicii. | + | * Am reușit să finalizez implementarea propusă, atât partea de software cât și cea de hardware, cea din urmă ajutându-mă să înțeleg mai bine anumite concepte care stau la bazele electronicii. |
- | * In mod clar proiectul ar putea fi imbunatatit, in sensul in care este destul de dificil pentru un jucator nou sa se acomodeze cu inghesuiala de pe breadboard. O mai buna organizare a componentelor in prealabil ar fi fost de ajutor in acest sens. | + | * În mod clar proiectul ar putea fi îmbunătățit, în sensul în care este destul de dificil pentru un jucător nou să se acomodeze cu înghesuiala de pe breadboard. O mai bună organizare a componentelor în prealabil ar fi fost de ajutor în acest sens. |
- | * Per total, a fost o experienta foarte placuta sa am ocazia de a implementa unul din jocurile copilariei in aceasta maniera. | + | * Per total, a fost o experiență foarte plăcută să am ocazia de a implementa unul din jocurile copilăriei în această manieră. |
===== Download ===== | ===== Download ===== | ||
+ | |||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">PDF proiect</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">PDF proiect</a></html> | ||
+ | {{:pm:prj2021:apredescu:ard_snake.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
+ | |||
+ | * alegerea proiectului | ||
+ | * crearea paginii de wiki | ||
+ | * cumpărarea pieselor | ||
+ | * realizarea hardware-ului | ||
+ | * realizarea software-ului | ||
+ | * schemă electrică | ||
+ | * completarea documentației | ||
+ | * filmuleț demo | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
[[https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/gesture_controlled_music|https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/gesture_controlled_music]] | [[https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/gesture_controlled_music|https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/gesture_controlled_music]] | ||
+ | [[https://www.youtube.com/watch?v=72SrQuVU3Ww&ab_channel=Mr.maker]] | ||
+ | [[https://www.arduino.cc/en/Tutorial/BuiltInExamples/Button]] | ||
+ | [[https://create.arduino.cc/projecthub/SURYATEJA/use-a-buzzer-module-piezo-speaker-using-arduino-uno-89df45]] | ||
+ | [[https://www.arduino.cc/en/Reference/TFTLibrary]] | ||
+ |