Table of Contents

Laurențiu-Gheorghe PICIU (66936) - Snake game++

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Scopul acestui proiect este de a reinterpreta celebrul joc Snake, pe care îl juca toată lumea în copilărie.

Varianta clasică

Utilizatorul va controla șarpele pe un LCD, folosind 4 butoate prin care se specifică direcția. Inițial, șarpele va fi situat în mijlocul ecranului și va avea o dimensiune redusă. Pe măsură ce va consuma hrana care va apărea random pe ecran, el va crește. În momentul în care șarpele își va atinge cu capul orice parte a corpului, jocul se va termina.

Reinterpretare

Pentru a da o notă personală acestui joc și pentru a-l face cât mai interesant, voi implementa următoarele aspecte în plus:

Descriere generală

Hardware Design

Listă de piese
Nume Distribuitor
Placa de baza Echipa PM
ATMega324A, rezistente, condensatoare etc Denisa Sandu
Placă de Test Universală Verde 70×90 mm Optimus Digital
Fire Colorate Mamă-Mamă (10p) 10 cm Optimus Digital
4 x Buton 6x6x6 Optimus Digital
Header de pini albastru 2.54 mm (40p) Optimus Digital
LCD Nokia 5110 OLX

Placa de bază:

fullsizeoutput_378.jpg

Schema electrică în Eagle:

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare: WinAVR cu Programmer's Notepad
  • Biblioteci: <avr/io.h>; <avr/interrupt.h>; <util/delay.h>
  • Algoritm: dezvoltarea jocului in sine care sa indeplineasca toate functionalitatile mentionate

Implementare

In rezolvarea partii software pt acest proiect, m-am folosit de o biblioteca facuta pt LCD de Nokia 3310.
Cea mai grea parte a fost desenarea pixelilor, pe care i-am retinut intr-o matrice si la fiecare operatie, faceam actualizari asupra lor

Ce am implementat?
- intampinarea utilizatorului cu un mesaj pana in momentul in care acesta decide sa apese un buton
- crearea unui meniu din care utilizatorul isi poate alege 4 nivele: easy, medium1, medium2, hard.
- Pentru medium1 -> creste viteza; medium2 -> apar obstacole; hard -> viteza crescuta + obstacole
- am creat si niste obiecte mai speciale care reprezinta bonus pt utilizator si ii cresc scorul
- Am retinut coordonatele pentru head in 2 variabile, cele pt coada tot in 2 variabile si am mai retinut 2 vectori de coordonate pentru
corp. Toata treaba se intampla intr-un while(1) in care pot misca sarpele cu ajutorul butoanelor; senzatia de miscare este data de
deplasarea head-ului in directia corespunzatoare si shiftarea tuturor pixelilor, impreuna cu stergerea pixelului corespunzator cozii.
Mai mult, ii dau posibilitate utilizatorului sa reia jocul dupa ce a terminat o partida.

Rezultate Obţinute

img_0926.jpgimg_0929.jpg

Video cu functionalitatile proiectului: watch

Concluzii

- am avut parte de o experiență plăcută, mai ales că nu mai lucrasem pe partea de hardware niciodata

- mi-a plăcut faptul că a trebuit să ne lipim noi toate componentele - parte practică, că de teorie tot avem parte :D

- partea software a fost mai complicată decât cea hardware - LCD-ul Nokia este foarte ușor de folosit

Download

Schematic

Parte software

Jurnal

Bibliografie/Resurse

Nume Link
Laboratoare PM PM wiki
Eagle IC wiki
Datasheet ATMega324 doc8272.pdf
Datasheet LCD Nokia https://www.sparkfun.com/datasheets/LCD/Monochrome/Nokia5110.pdf
Schema electrica ATMega324 proiect2017
Exemple de proiecte halloffame