Diaconu Victor - Flappy Bird

Introducere

Realizarea proiectului consta in implementarea jocului Flappy Bird. Imaginea va fi redata pe un ecran LCD, iar jucatorul va putea interactiona cu acesta prin intermediul a 2 butoane, unul de navigare (va face pasarea sa sara) si unul de selectie / anulare.

Jocul nu va fi structurat pe nivele, ci va fi de tipul endless run, insa va avea de ales intre 3 dificultati, diferentele intre dificultati fiind viteza cu care apar obstacolele si spatiul liber prin care caracterul poate trece. De asemenea, la cea mai mare dificultate exista si o limita de timp, verificata prin folosirea unui timer. Astfel, jucatorul poate juca pana cand va pierde, putand obtine un punctaj cat mai mare, avand posibilitatea de a intra in Leaderboard unde sunt afisate cele mai mari 5 scori of all time. De asemenea voi introduce un buzzer, care va scoate un sunet de avertizare in cazul pierderii jocului si un alt sunet atunci cand jucatorul face 1 punct.

Descriere generala

Pe LCD vor aparea niste obstacole si pasarea controlata de catre jucator prin butonul de navigare, acesta avand ca scop sa se fereasca de obstacole, primind cate un punct pentru fiecare obstacol depasit.

Schema Bloc

Schema Electrica

Hardware Design

Lista Piese

  • ATmega324
  • rezistente, condensatoare, diode
  • LCD Nokia
  • 2 butoane
  • buzzer

Software Design

  • Am lucrat pe Windows, folosind bootloader-ul oferit pe elf.cs in PowerShell
  • Pentru Makefile am pornit de la cel de la laboratorul 1
  • Pentru utilizarea LCD-ului grafic am folosit lcd.c si lcd.h dintr-o biblioteca pentru acest model.

Functionalitati

Meniul de baza ofera jucatorului posibilitatea de a alege intre inceperea unui joc nou si vizualizarea leaderboard-ului.

Jocul

La selectarea optiunii de New Game, se va incepe un joc nou in cadrul caruia, caracterul jucatorului (pasarea care nu prea arata a pasare) incepe de la o anumita inaltime si cade putin in fiecare tura. Odata cu apasarea butonului de navigare, se genereaza o intrerupere care va face pasarea sa sara. Scopul jucatorului este sa mentina pasarea la o anumita inaltime astfel incat aceasta sa treaca printre obstacolele generate aleator odata la cateva secunde, acesta primind cate un punct pentru fiecare obstacol depasit. Daca este selectata dificultatea Hard, atunci la inceputul jocului se porneste un timer care genereaza cate o intrerupere la fiecare 4 secunde iar dupa un numar fixat de astfel de intreruperi, jucatorul va pierde jocul.

Leaderboard

Lista de highscores este mentinuta persistent in eeprom. La intrarea in pagina de Leaderboard, se parcurg cele 5 valori salvate in eeprom (din implementare vor fi tot timpul stocate in ordine descrescatoare) si sunt afisate pe cele 5 linii ale LCD-ului.

Cand un jucator pierde, se verifica daca punctajul acestuia este mai mare decat cel mai mic punctaj din leaderboard si in acest caz se cauta pozitia acestuia si se updateaza corespunzator tabela stocata in eeprom.

Rezultate Obtinute

Demo

Imagini

Concluzii

Download

Jurnal

Bibliografie/Resurse

pm/prj2019/mlungoci/lcd-flappybird.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