Dimitria-Oana-Maria RĂDOI (78393) - Frogger pe LCD cu redare de sunete

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Pentru proiect, am ales sa implementez un joc pe LCD, la care adaug si sunete, redate printr-un difuzor. Jocul pe care l-am implementat se numeste Frogger si consta intr-un personaj care trebuie sa ajunga de pe o parte a spatiului, pe partea opusa, si sa colecteze stelute, ocolind niste obstacole care se deplaseaza. Functionalitati:

  • miscarile personajului sunt controlate prin intermediul unui joystick
  • la fiecare miscare este redat un zgomot prin difuzor
  • sunt doua niveluri: unul usor, in care obstacolele se misca lent si unul greu, in care obstacolele misca mai repede
  • jucatorul porneste cu 3 vieti
  • la pierderea a 3 meciuri consecutive, jucatorul pierde jocul, fiind afisat “You lost!”
  • la castigarea celor 3 stelute de la nivelul 1, se trece la nivelul urmator
  • la castigarea nivelului 2 este afisat mesajul “You won!”
  • la castigarea sau pierderea jocului, dar si la colectarea stelutelor sunt redate zgomote diferite

Descriere generală

Hardware Design

Lista de piese include:

  • ecran LCD tip Nokia 5110
  • joystick cu 2 axe, pentru controlul jucatorului
  • buzzer, pentru feedback sonor
  • regulator de tensiune de 3.3V, pentru alimentarea LCD-ului
  • piesele pentru placa de baza

Schema electrica actualizata:

Software Design

Pentru programare s-a folosit mediul de dezvoltare Atmel Studio 7, pentru scrierea codului propriu-zis, si AVRDude pentru a scrie fisierul .hex in memoria microcontrollerului. Legatura cu PC-ul s-a realizat printr-un programmer de tip USBASP (conectat la pinii SPI ai placii PM 2018).

Jocul se desfasoara pe o matrice de 7 linii x 16 coloane, retinuta in memorie. Playerul controleaza o broasca care trebuie sa se fereasca de obstacole si sa colecteze toate cele 3 stelute pentru a trece la nivelul urmator (sunt 2 niveluri). La castigarea nivelului 2, se castiga si jocul. Scorul porneste de la 999 si numara descrescator. Jucatorul are 3 vieti, care se reumplu atunci cand trece la nivelul urmator.

Coloanele impare cu obstacole se deplaseaza in sus, iar cele pare in jos. Acest lucru se intampla la fiecare 20(la nivelul 1) sau 10(la nivelul 2) unitati scazute din scor. Daca playerul atinge un obstacol, este respawnat si i se scade o viata. Playerul se respawneaza si cand colecteaza o steluta.

In main.c au loc verificarile legate de conditiile de miscare, de castig si de pierdere, respectiv de actualizarea scorului.

In nokia5110.c exista functiile lcd-ului si functiile jocului:

  • Draw_hud, actualizeaza numarul de vieti si scorul
  • Draw_borders, deseneaza chenarul jocului
  • Initialize_arena, deseneaza obstacolele prima oara
  • Refresh_arena, muta obstacolele, actualizand matricea
  • Redraw_arena, redeseneaza matricea pe ecran
  • Move_frog, muta playerul in directia dorita

Caracterele de pe ecran se afiseaza cu functia nokia_lcd_draw_char.

Rezultate Obţinute

Concluzii

Am implementat tot ce am specificat la inceputul proiectului.

Download

Bibliografie/Resurse

Resurse hardware:

Resurse software:

  • Documentația în format PDF
pm/prj2018/astratulat/2696.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