This shows you the differences between two versions of the page.
pm:prj2024:alucaci:maria.costea2604 [2024/05/23 16:35] maria.costea2604 |
pm:prj2024:alucaci:maria.costea2604 [2024/05/23 17:12] (current) maria.costea2604 [Concluzii] |
||
---|---|---|---|
Line 36: | Line 36: | ||
* Am utilizat o structura pentru șarpele din joc, care salveaza potitiile capului, corpului, lungimea sa si directia. | * Am utilizat o structura pentru șarpele din joc, care salveaza potitiile capului, corpului, lungimea sa si directia. | ||
* Am utilizat o structura pentru mărul pe care trebuie să-l mănânce pentru a putea crește. După ce șarpele ajunge să ia un măr altul va apărea într-un alt loc random din matrice. | * Am utilizat o structura pentru mărul pe care trebuie să-l mănânce pentru a putea crește. După ce șarpele ajunge să ia un măr altul va apărea într-un alt loc random din matrice. | ||
- | * Actualizarea și Mișcarea Șarpelui: | + | Actualizarea și Mișcarea Șarpelui: |
* Direcția șarpelui este controlată de valorile citite de la joystick (varXPin și varYPin). Dacă joystick-ul este mișcat într-o direcție, direcția șarpelui se schimbă corespunzător. Mișcarea șarpelui este realizată prin actualizarea poziției capului (head) pe baza direcției curente (dir). Dacă capul șarpelui se mută peste marginea matricei de LED-uri, poziția sa este ajustată pentru a apărea pe partea opusă (efect de teleportare). | * Direcția șarpelui este controlată de valorile citite de la joystick (varXPin și varYPin). Dacă joystick-ul este mișcat într-o direcție, direcția șarpelui se schimbă corespunzător. Mișcarea șarpelui este realizată prin actualizarea poziției capului (head) pe baza direcției curente (dir). Dacă capul șarpelui se mută peste marginea matricei de LED-uri, poziția sa este ajustată pentru a apărea pe partea opusă (efect de teleportare). | ||
* Coliziunea cu sine: Verifică dacă coordonatele capului șarpelui coincid cu oricare parte a corpului său. Dacă da, jocul se resetează, iar jucătorul pierde o viață. | * Coliziunea cu sine: Verifică dacă coordonatele capului șarpelui coincid cu oricare parte a corpului său. Dacă da, jocul se resetează, iar jucătorul pierde o viață. | ||
* Coliziunea cu mărul: Dacă capul șarpelui ajunge la poziția mărului, șarpele crește în lungime, scorul este incrementat și un nou măr este generat la poziții aleatorii. | * Coliziunea cu mărul: Dacă capul șarpelui ajunge la poziția mărului, șarpele crește în lungime, scorul este incrementat și un nou măr este generat la poziții aleatorii. | ||
* Matricea de LED-uri este actualizată pentru a afișa noua poziție a șarpelui și a mărului. Șarpele este desenat folosind array-ul pic, iar mărul este făcut să clipească pentru a fi mai vizibil. | * Matricea de LED-uri este actualizată pentru a afișa noua poziție a șarpelui și a mărului. Șarpele este desenat folosind array-ul pic, iar mărul este făcut să clipească pentru a fi mai vizibil. | ||
- | * Meniuri și Interfață: | + | Meniuri și Interfață: |
* Interfața jocului este realizată folosind un ecran LCD. Meniurile sunt navigate utilizând butonul joystick-ului. Există mai multe meniuri și submeniuri pentru opțiuni precum începerea jocului, setările, etc. | * Interfața jocului este realizată folosind un ecran LCD. Meniurile sunt navigate utilizând butonul joystick-ului. Există mai multe meniuri și submeniuri pentru opțiuni precum începerea jocului, setările, etc. | ||
- | * Funcții Importante | + | Funcții Importante: |
- | * - playGame(): Gestionează logica principală a jocului. | + | - playGame(): Gestionează logica principală a jocului. |
- | * - showIntro(): Afișează introducerea jocului. | + | - showIntro(): Afișează introducerea jocului. |
- | * - showMenu(): Afișează meniul principal și permite navigarea prin opțiuni. | + | - showMenu(): Afișează meniul principal și permite navigarea prin opțiuni. |
- | * - Update(): Actualizează starea șarpelui și a mărului. | + | - Update(): Actualizează starea șarpelui și a mărului. |
- | * - Render(): Redă (desenează) jocul pe matricea de LED-uri. | + | - Render(): Redă (desenează) jocul pe matricea de LED-uri. |
- | * - calculateDeltaTime(): Calculează timpul trecut între cadre pentru a controla viteza jocului. | + | - calculateDeltaTime(): Calculează timpul trecut între cadre pentru a controla viteza jocului. |
- | * - removeFirst(): Elimină prima parte a corpului șarpelui pentru a simula mișcarea sa înainte. | + | - removeFirst(): Elimină prima parte a corpului șarpelui pentru a simula mișcarea sa înainte. |
Line 56: | Line 56: | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Pe matricea de leduri apare un model initial. Apăsarea joystick-ului duce la începerea jocului. Un snake format inițial din două cercuri luminoase se deplasează pe matrice și este controlat de către jucător cu ajutorul joystick-ului. La începutul jocului se poate auzi un cântecel, un sunet scurt se aude la mâncarea merelor, apare câte unul pe rând în locuri random. Șarpele crește odată cu mâncarea punctelor lumninoase și își pierde viața dacă își atinge propriul corp. La pierderea jocului se va auzi un sunet mai lung și mai puteric. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | {{ :pm:prj2024:alucaci:whatsapp_image_2024-05-23_at_16.47.10_1_.jpeg?nolink&300 |}} |
- | </note> | + | {{ :pm:prj2024:alucaci:whatsapp_image_2024-05-23_at_16.47.10.jpeg?nolink&300 |}} |
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Mi-a făcut plăcere să lucrez cu ceva nou și să pot implementa un joc clasic care mi-a plăcut foarte mult în copilărie. | ||
===== Download ===== | ===== Download ===== | ||
<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ă ;-). | + | {{:pm:prj2024:alucaci:costea_maria_cristina_pm.zip|}} |
- | + | ||
- | 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**. | + | |
</note> | </note> | ||
Line 90: | Line 89: | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | * https://docs.arduino.cc/built-in-examples/usb/JoystickMouseControl/ |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * https://docs.arduino.cc/built-in-examples/display/RowColumnScanning/ |
- | </note> | + | * https://www.arduino.cc/reference/en/libraries/liquidcrystal/ |
- | + | * https://projecthub.arduino.cc/SURYATEJA/use-a-buzzer-module-piezo-speaker-using-arduino-uno-cf4191 | |
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | + | * https://docs.arduino.cc/built-in-examples/display/RowColumnScanning/ |
+ | * https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoToBreadboard/ | ||
+ | * https://www.tinkercad.com/dashboard |