Table of Contents

Snake

Autor: Popa Gloria-Alexandra 336CA

Introducere

Descriere generală

Hardware Design

Listă de componente

  1. Arduino UNO
  2. Mini breadboard
  3. ECRAN LCD 1.8” SPI
  4. 4 Butoane
  5. Buzzer
  6. Potențiometru
  7. 5 Rezistențe
  8. Fire

Schemă electrică

Software Design

  1. Mediu de dezvoltare:
    1. Arduino IDE
    2. Fritzing → schema electrică
  2. Librării utilizate:
    1. stdio.h si stdlib.h → biblioteci standard
    2. string.h → pentru lucrul pe șirurile de caractere
    3. SPI.h → pentru a permite comunicarea cu LCD-ul SPI, plăcuța Arduino fiind pe post de master
    4. TFT.h → pentru a simplifica procesul de desenat pe ecran
  3. Fișiere sursă:
    1. snake.ino

Logica jocului

Î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 î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 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 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 șarpelui poate fi variată de către player cu ajutorul unui potențiometru, aspect care oferă o dinamică mai bună jocului.

Rezultate obținute


Demo

https://drive.google.com/file/d/1ntT1oRqcfP05LMMt7KTXZiZ0p_mXRs-t/view?usp=sharing

Concluzii

Download

PDF proiect ard_snake.zip

Jurnal

Bibliografie/Resurse

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