Table of Contents

SNAKE 2010

Nume: Berteanu Vlad

Grupa: 331CC

logo-snake.jpg

Descriere generala

Proiectul de fata isi propune realizarea suportului hardware si software pentru jocul traditional Snake. Acest joc video a fost lansat prima data in anul 1970 si a reusit sa-si mentina popularitatea pana in zilele noastre intrand astfel in categoria de jocuri clasice. Nokia este una din companiile de telefonie mobila care furnizeaza o implementare a jocului Snake aprope pe fiecare device vandut, de aceea am si ales pentru suportul vizual un ecran LCD 3310 oferit de compania in discutie.

Hardware Design

.

Modul Atmel ATMega16

S-a utilizat acest tutorial pentru construirea modulului ATMega16.

Placa de baza - perspectiva frontala

Placa de baza - perspectiva anterioara

LCD Nokia 3310

Lista piese:

Rezistentele au fost folosite pentru construirea divizorului de tensiune pentru input-ul LCD-ului.

LCD - perspectiva frontala

LCD - perspectiva anterioara

Butoane Control

Lista piese:

Nu am mai utilizat rezistente de pull-up externe deoarece acestea exista deja in microcontroller si am avut grija ca in software sa le activez de fiecare data.

Atentie ! Ignorarea activarii rezistentelor interne poate duce la arderea microcontroller-ului.

void initButtons() {
	DDRD  &= ~(1 << LEFT_BUTTON);
	PORTD |= 1 << LEFT_BUTTON;
	DDRD  &= ~(1 << UP_BUTTON);
	PORTD |= 1 << UP_BUTTON;
	DDRD  &= ~(1 << RIGHT_BUTTON);
	PORTD |= 1 << RIGHT_BUTTON;
	DDRD  &= ~(1 << DOWN_BUTTON);
	PORTD |= 1 << DOWN_BUTTON;
}

Software Design

Biblioteci utilizate

Pentru afisare pe ecranul LCD Nokia 3310 am utilizat driver-ul PCD8544 bazat pe un cod scris de Sylvain Bissonette. Pentru mai multe detalii accesati acest link.

Fisierele utilizate sunt :

Desenare imagini

Pentru afisarea logo-ului de inceput al jocului am utilizat o imagine in format bmp 48×84 care ulterior a fost convertita intr-un format hexazecimal ce a favorizat afisarea acesteia cu usurinta pe ecarnul LCD. Utilitarul folosit in acest procedeu este FastLCD Designer 1.20 by Bojan I of Microdesign. In mod similar am lucrat pentru afisarea imaginii de Game Over atunci cand jocul s-a terminat.

Logica Jocului

Initial lungimea sarpelui este de 4 pixeli, iar scorul jucatorului este de 0 puncte. Pe masura trecerii timpului pe ecran apar o serie de puncte reprezentand hrana pentru sarpe. In momentul in care capul acestuia trece prin acel punct lungimea sa creste cu o unitate, iar scorul este incrementat la randul lui, dupa care este afisat pentru o scurta perioada de timp. In timpul deplasarii sarpelui acesta nu are voie sa atinga marginile ecranului sau capul acestuia sa treaca printr-unul din punctele corpului sau. In cazul in care acest lucru se intampla jocul se termina, utilizatorul pierzand toate punctele castigate.

Dupa terminarea jocului se va afisa logo-ul GameOver, iar prin apasarea oricarei taste utilizatorul poate relua jocul.

Rezultate obtinute

Proiect final - perspectiva frontala

Proiect final - perspectiva anterioara

Concluzii

  1. S-a realizat cu succes modulul software Snake
  2. Aplicatia Snake a fost testata cu succes in simulatorul Proteus, nefiind remarcate buguri.
  3. Montajul hardware a fost realizat in totalitate, verificat din punct de vedere al tensiunilor, scurt-circuitelor, contactelor, dar din pacate ecranul LCD nu se aprinde.

Downloads

Bibliografie/Resurse