Ioana-Cristina MEIROȘU (78548) - Snake++

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Snake++ reprezinta o varianta imbunatatita a clasicului joc Snake prin introducerea unor noi functionalitati precum:

  • posibilitatea alegerii unui nivel de dificultate: usor, mediu, greu;
  • aparitia unui item special pe plansa de joc: medicament(micsorarea dimensiunii sarpelui);

Scopul proiectului este de a obtine un joc amuzant si relaxant. Am pornit de la varianta clasica Snake si consider ca proiectul este util pentru relaxarea studentilor(mai ales ca sesiunea se apropie cu pasi repezi).

Descriere generală


Jucatorul poate controla sarpele folosind patru butoane(cate unul pentru fiecare directie: sus, jos, stanga, dreapta), iar jocul va fi afisat pe un LCD grafic. De asemenea, selectia nivelului si inceperea jocului se vor realiza tot prin intermediul butoanelor.

Hardware Design

Lista de componente:

  • LCD SPI de 2.8” - Controller ILI9341(240×320 px);
  • Butoane;
  • Fire de conexiune de tip mama-mama;
  • difuzor;
  • Rezistente.

Software Design

Am folosit ca mediu de dezvoltare SublimeText3. La inceput, jucatorul trebuie sa selecteze unul dintre cele trei nivele disponibile:

  1. Usor:
    • plansa nu este limitata de niciun perete;
    • vor fi plasate doar 5 obstacole pe plansa.
  2. Mediu:
    • plansa este limitata de 2 pereti;
    • vor fi plasate 15 obstacole pe plansa.
  3. Dificil:
    • plansa este limitata de 4 pereti;
    • vor fi plasate 30 de obstacole pe plansa

Dimensiunea initiala a sarpelui creste gradat. La fiecare 30 de puncte acumulate, sarpele va mai capata un “patratel” in corpul sau. Fiecare masa consumata(cercurile galbene de pe plasa de joc) inseamna 10 puncte castigate.

Exista si un item special(medicament - patratelele albastre) care reduc dimensiunea sarpelui cu un “patratel”. Desigur, acesta apare mai rar pe harta de joc comparativ cu celelalte item-uri.

Pentru a retine coordonatele sarpelui am folosit doi vectori(pos_x si pos_y). Directia initiala de miscare este SUD. La apasarea unui buton, rutina de intrerupere definita va face update directiei de deplasare, iar coordonatele sarpelui sunt actualizate ulterior in functia move_snake(). Aceasta sterge coada sarpelui(ultimul patratel din corpul sau) si adauga un nou patratel pentru a modifica coordonatele capului sarpelui.

In mod asemanator, am folosit vectorii obs_x si obs_y pentru a retine coordonatele la care randez obstacole. Acestea apar pe plansa la un anumit interval de timp si sunt generate la coordonate random, avand grija ca acestea sa nu se suprapuna cu peretii plansei, cu alte obstacole, cu item-ul medicament sau cu hrana sarpelui.

Hardware imbinat cu software

Pentru desenarea item-urilor am utilizat diverse functii ale controller-ului ILI9341, specific acestui model de LCD. Am utilzat diverse culori pentru a da un aspect mai simpatic jocului.

Am utilizat si un difuzor pentru a genera un sunet scurt in momentul in care sarpele mananca sau se trateaza cu un medicament.

Rezultate Obţinute

Concluzii

Nu credeam ca acest proiect va ajunge vreodata intr-o stare functionala, dar aparent cu suficiente nopti pierdute orice este posibil!:-D Hardware-ul nu a fost niciodata pasiunea mea si acest lucru s-a reflectat cumva si in proiectul meu. Cu extrem de multa panica la fiecare componenta lipita/conectata, am reusit in cele din urma sa realizez hardware-ul necesar pentru a putea crea jocul Snake.

A fost un proiect interesant din care am invatat cum functioneaza impreuna hardaware-ul si software-ul si, in final, pot spune ca sunt mandra de rezultatele obtinute.

Download

Jurnal

  • 21 aprilie 2018 - Descrierea generala a proiectului
  • 3 mai 2018 - Am realizat placa de baza
  • 6 mai 2018 - Am adaugat schema electrica a proiectului
  • 16 mai 2018 - am trecut placa la 3,3V
  • 18 mai 2018 - Am conectat difuzorul si cele 5 butoane si am testat functionalitatea lor
  • 20 mai 2018 - S-a rupt unul dintre firele cu care conectasem difuzorul
  • 21-23 mai 2018 - Am scris software-ul pentru joc
  • 24 mai 2018 - Am conectat difuzorul din nou si am incarcat arhiva finala

Bibliografie/Resurse

pm/prj2018/rbarbascu/mei123.txt · Last modified: 2021/04/14 17:07 (external edit)
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