This is an old revision of the document!


Reversed Snake

Introducere

Reversed Snake reprezinta o varianta modificata a jocului clasic Snake (telefon, PC etc.) si se diferentiaza prin faptul ca nu sarpele trebuie controlat de jucator, ci mancarea. Scopul jocului este sa nu fii prins de sarpe, care, pe masura ce timpul trece, devine din ce in ce mai lung, ingreunand astfel jocul.

Descriere generală

Jocul se bazeaza pe utilizarea unui joystick spre a controla sarpele, miscandu-l in 4 directii posibile. Afisarea se va face prin intermediul unei matrice cu leduri, deci plansa jocului va fi implicit de 8×8. Prin intermediul unui buzzer pasiv se va informa jucatorul cand sarpele creste sau cand jocul s-a terminat (jucatorul este prins). Potentiometrul are rolul de a schimba viteza de joc, atat pentru sarpe, cat si pentru mancare.

Hardware Design

Componente folosite:

  • placa Arduino UNO
  • breadboard
  • joystick
  • matrice cu leduri
  • potentiometru
  • fire mama-tata
  • fire tata-tata
  • buzzer pasiv


Schema electrica:


Software Design

Programul este constituit din 4 functii majore, detaliate in randurile urmatoare.

*generateFood()* va genera mancarea (personajul principal) dupa ce a verificat ca nu se afla pe harta. Verificarea se face prin intermediul coordonatelor mancarii (row, col != -1).

*scanJoystick()* scaneaza informatia primta de la joystick (sus, jos, stanga, dreapta) si modifica, daca e cazul, directia in care se deplaseaza mancarea. Tot aici este implementata si inteligenta artificiala a sarpelui, care se va deplasa intotdeauna spre mancare.

*calculateSnake()* modifica si afiseaza noua matrice dupa ce obiectele s-au miscat. Tot aici se verifica si daca jocul a luat sfarsit.

*handleGameStates()* verifica daca s-a terminat jocul si il reporneste in caz afirmativ, resetand pozitia sarpelui si cea a mancarii.

Pentru utilizarea matricii de leduri am folosit biblioteca LedControl.h. Variabila *snakeSpeed* este cea care decide cat de repede se vor misca personajele pe mapa si este afectata in mod direct de petentiometru in functia scanJoystick().

Rezultate obtinute

TODO

Concluzii

TODO

Download

TODO

Jurnal

TODO

Bibliografie/Resurse

TODO

pm/prj2021/abasoc/reversedsnake.1622667623.txt.gz · Last modified: 2021/06/03 00:00 by marian.burcea
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