Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul consta in implementarea jocului Snake pe un LCD. Initial pe ecran va aparea scris Snake, iar in urma apasarii unui buton de start, jocul va incepe. Dimensiunea sarpelui va fi de 3 unitati(patratele), insa daca acesta reuseste sa manance din mancarea ce va fi distribuita random pe ecran atunci sarpele isi va creste dimensiunea cu o unitate.
Deplasarea sarpelui se va face folosind patru butoane(sus, jos, stanga, dreapta), iar in coltul din dreapta voi tine scorul la care s-a ajuns, acesta fiind reprezentat de numarul de unitati pe care sarpele a reusit sa le manance. Daca sarpele va intra in unul din cele patru laturi sau se va manca singur atunci jocul se va sfarsi.
Scopul proiectului este de a realiza un joc cu ajutorul placutei PM-2016 si pentru a aprofunda cunostintele acumulate pana acum la aceasta materie si pentru a oferi o forma de amuzament celor pasionati de jocuri.
Butoanele reprezinta inputul, ecranul LCD reprezinta outputul, iar microcontroller-ul Atmega324 este cel care ajuta la deplasarea sarpelui si la actualizarea noii sale pozitii pe ecran.
Index | Denumire | Cantitate | Cod |
---|---|---|---|
1 | placa de baza PM2016 | 1 | PM2016 |
2 | microcontroller ATMEGA324 | 1 | ATMEGA324PA-PU |
3 | soclu microcontroller | 1 | LC40 |
4 | dioda Zener | 2 | BZX55C3V3 |
5 | led 6mm rosu | 2 | CLL-50221 |
6 | quartz 16MHz | 1 | Q16.000 MHz HC-49S |
7 | rezistenta 470 | 3 | RW25CF 470R |
8 | rezistenta 100 | 2 | RW25CF 100R |
9 | rezistenta 1k5 | 1 | RW25CF 1K5 |
10 | rezistenta 10k | 1 | RW25CF 10K |
11 | conector USB-B | 1 | USB B-PCB-R |
12 | condensator ceramic 100nF | 3 | CML 100nF 50V NP0 |
13 | condensator ceramic 15pF | 2 | CML 15pF 50V NP0 |
14 | push-button | 2 | TS-06E (TS-3) |
15 | barete mama-mama | 32 | - |
Index | Denumire | Cantitate | Cod |
---|---|---|---|
1 | LCD grafic Nokia 5510 | 1 | |
2 | push-button | 5 | TS-06E (TS-3) |
3 | placa de test | 1 | |
4 | fire conductoare | 20 |
Jocul incepe prin afisarea unui meniu din care se poate face selectia modului de joc cu ajutorul butoanelor sus, jos. Atunci cand se parcurge meniul, va aparea o sageata in dreptul optiunii care marcheaza unde se afla utilizatorul in meniu. Dupa ce s-a luat hotararea se va apasa butonul de selectie, iar jocul va incepe. Cele 3 optiuni disponibile sunt:
Programul nu are un algoritm complicat, se cicleaza intr-o bucla in care se face actualizarea noii pozitii a sarpelui, se verifica de fiecare data daca sarpele a ajuns la mancare pentru a-i mari dimensiunea, daca s-a mancat sau daca este in contact cu peretii, daca e cazul si se genereaza o noua locatie pentru mancare daca aceasta a fost mancata.
/* optiunile din meniu */ #define NO_BORDER 0 #define BORDER 1 #define BONUS 2 /* dimensiunea si pozitia initiala a sarpelui */ #define START_SNAKE 4 #define START_X 60 #define START_Y 10 /* dimensiunea unui Block */ #define SIZE 2 /* numarul de mancare bonus */ #define NUM_OF_BONUS_FOOD 5
/* structura Block */ typedef struct { char x; char y; } Block; /* directiile posibile ale sarpelui */ typedef enum { UP = 0, LEFT = 1, RIGHT = 2, DOWN = 3 } direction;
A fost un proiect interesant si mi-a placut sa lipesc componentele pe placuta. La partea de soft, am spus initial ca voi avea intr-un colt scorul in timpul jocului, dar fiindca ecranul este mic si ar fi insemnat sa mai “tai” din aria de joc, am ales sa afisez scorul optinut la sfarsit dupa incheierea jocului. Cu toate acestea, nu imi propusesem initial sa fac 3 metode de joc, ultima fiind cea mai interesanta pentru ca evolutia jocului e mai rapida.
Arhiva arhiva contine:
Resurse Software
Resurse Hardware