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:

  • Existența unui meniu în care utilizatorul poate alege dificultatea: easy, medium I (creșterea vitezei), medium II (apariția obstacolelor), hard (obstacole + viteză crescută).
  • Apariția pe ecran a unor obiecte mai speciale care pot oferi unul din următoarele bonusuri: scăderea vitezei pentru un mai bun control, puterea de a trece prin pereți, puncte în plus.
  • Clasament care să rețină topul punctajelor obținute de-a lungul timpului.
  • Sunete specifice pentru obiectele pe care le prinde șarpele (reproduse cu ajutorul buzzer-ului)

Descriere generală

  • Utilizatorul se va folosi de cele 4 butoane pentru a specifica direcția în care dorește să se miște șarpele
  • Microcontroller-ul va primi impulsurile necesare de la butoane și în funcție de acestea va schimba direcția șarpelui, lucru care se va vedea instantaneu pe LCD.

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

Jurnal

  • Finalizare placa de baza
  • Achizitionare componente auxiliare necesare proiectului meu
  • Integrarea acestor componente cu ATMega324
  • Verificare ca LCD + butoane functioneaza corespunzator
  • Implementare joc

Bibliografie/Resurse

  • Documentația în format PDF
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
pm/prj2017/dnovischi/lpiciu.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