Alexandru-Marian ATANASIU (24985) - Flappy Bird

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Am ales sa implementez jocul Flappy-Bird pe un ecran LCD. Jocul se poate juca de o singura persoana folosind butoanele de pe placa. Flappy bird a fost un joc de mare succes pentru dispozitivele mobile: Android/IOS, foarte usor de inteles si destul de captivant.

Descriere generală

Jocul va folosi un display LCD pe care va afisa starea jocului, acesta fiind controlat fie din butonul de pe placa, fie din accelerometrul atasat placii. Accelerometrul are rolul de a varia modul de control al jocului prin miscarea usoara a placii pentru a putea face personajul sa sara. Jocul consta in controlul personajului principal prin salturi repetate pentru a evita obstacolele care ii vin in cale. Cu fiecare obstacol trecut jucatorul primeste un punct si in momentul in care jucatorul nu reuseste sa evite la timp un obstacol pierde.

SCHEMA BLOC HARDWARE

SCHEMA BLOC SOFTWARE

Hardware Design

Software Design

Ca implementare software, am folosit o biblioteca pentru a comunica cu LCD-ul prin SPI. Biblioteca avea implementata functionalitaile de desenare dreptunghiuri si pixeli pe LCD. Libraria abstractizeaza toata comunicatia cu microcontrolerul prin cateva functii de desenare, initializare si clean-up. La nivel de implementare, programul final scris pe microcontroller, introduce o metoda de start care pregateste toate variabilele pentru inceputul jocului, o metoda die(), care se apeleaza atunci cand jocul s-a terminat datorita faptului ca protagonistul fie s-a lovit de unul dintre obstacole fie a iesit din ecran.

Pentru controlul personajului am hotarat sa folosim butonul de pe placa, datorita vitezei de scriere scazute a lcd-ului, feedback-ul de la accelerometru fiind mult prea lent pentru a putea controla in timp real personajul. Astfel metoda main contine o parte de initializare si o bucla while(1), unde avem 2 etape: una de update, unde se calculeaza coliziuni si daca protagonistul a iesit din ecran, si urmareste user-input-ul, calculeaza urmatorul punct de desenare in functie de viteza si acceleratie; si etapa de desenare, unde in functie de informatia calculata anterior se deseneaza elementele de pe ecran (in cazul nostru personajul principal si obstacolele eferente).

Rezultate Obţinute

Rezultatele obtinute: o varianta “jucabila” a proiectului intentionat, o “problema sa zic asa” este frecventa relativ scazuta de scriere a LCD-ului, care face inutilizabil accelerometru (de aceea nu a fost implementat), si de asemenea ofera un usor efect de flicker al ecranului deoarece frecventa in care se pot observa si elementele pe ecran este mai mica decat aceea de perceptie a miscarii de catre om (30 - 60 de cadre pe secunda).

Concluzii

Download

Jurnal

  • 11 Aprilie 2016: Am finalizat lipirea placii de baza
  • 15 Aprilie 2016: Am achizitionat lcd-ul restul componentelor necesare
  • 24 Mai 2016: Am finalizat partea software a proiectului

Bibliografie/Resurse

pm/prj2016/mandrei/23456.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