Table of Contents

Emanuel NECULA (78263) - Joc Racheta

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul este o implementare a unei combinatii dintre doua jocuri de pe vechea consola Brick Game.

Jucatorul are la dispozitie 5 butoane: 4 pentru deplasare (racheta se poate deplasa doar pe o axa, in functie de nivelul la care a ajuns jucatorul) si unul pentru impuscaturi. Scopul jucatorului este de a ajunge la sfarsitul nivelului fara sa se buseasca de ziduri/meteoriti. Acesta se poate folosi de “gloante” pentru a distruge zidurile/meteoritii care ii stau in cale.

In general, jocul poate fi util pentru relaxare, dar mai degraba pentru retrairea unor momente frumoase din copilarie.

Descriere generală

Placuta va avea 5 butoane pe care jucatorul le poate folosi pentru a misca racheta si pentru a impusca obstacolele. Deoarece racheta se poate misca doar pe o axa, doar doua dintre butoane vor fi folosite in fiecare nivel. Motivul pentru care am ales sa folosesc 4 butoane (in loc de 2) este ca axa pe care se misca racheta si directia de deplasare se vor schimba de la un nivel la altul.

Jucatorul are un numar de 3 vieti, iar la atingerea unui anumit nivel, poate primi vieti extra. La pierderea unei vieti, acesta trebuie sa reia nivelul curent de la incecput, iar la pierderea tuturor vietilor, trebuie sa reia jocul de la inceput.

LCD-ul va fi folosit pentru afisarea jocului, iar buzzer-ul pentru producerea unor sunete la miscare, impuscare, ciocnire cu un obstacol, la terminarea unui nivel sau la terminarea jocului.

Hardware Design

Lista de piese

Software Design

Ca si schelet de cod am pornit de la codul unei studente care a realizat acum 2 ani un joc folosind acelasi tip de LCD ca mine (acesta a fost criteriul principal pentru alegerea unui punct de start). Adresa paginei de wiki a studentei respective se gaseste in Bibliografie. In plus, am folosit si putin cod din laborator (cea mai mare parte de cod din laborator o reprezinta functia “speaker_reda” (din Laboratorul 0), dar si pe aceasta am modificat-o putin).

Structurile principale folosite sunt doua matrici de dimensiuni 21×21 in care retin starea curenta a jocului si cea anterioara (i.e. pozitiile elementelor care vor fi/au fost afisate pe ecran). Fiecare element al matricelor corespunde unui patrat DIM x DIM (cu DIM=6) de pixeli de pe ecran.

Notele folosite pentru redarea melodiilor au frecvente luate de pe google.

Jucatorul poate folsi butonul de FIRE pentru inceperea jocului si selectarea modului de joc si cate 2 din cele 4 butoane (la un moment dat) pentru a se deplasa pe axa pe care este situat. Fiecare nivel are propria directie in care se “deplaseaza” racheta (evident, directiile se repeta).

Scopul este de a ajunge la sfarsitul nivelului fara ca racheta sa se loveasca de vreun meteorit sau zid. Pentru a distruge obstacolele se poate folosi de gloante.

Interfata cu utilizatorul si mecanismul jocului:

Biblioteci: In principiu, am folosit bibliotecile studentei careia i-am folosit codul pe post de schelet, dar, am sters anumite functii pe care nu le-am folosit.

Mentiuni: Am folosit intreruperi pentru oprirea anumitor melodii, pentru a trece de meniul principal al jocului si de meniul de alegere a modului de joc. In plus, pentru a nu intra fara rost in handler-ul respectiv (si a rula niste instructiuni inutile), intreruperile sunt activate doar atunci cand este nevoie.

Mediul de dezvoltare folosit este Visual Studio.

}

Rezultate Obţinute

Din pacate, din cauza lipsei de memorie, melodia de sfarsit de nivel este mai scurta decat mi-am dorit, dar este :-) .

Concluzii

Desi am fost descurajat de faptul ca o perioada destul de mare de timp nu am avut partea hardware terminata, datorita ajutorului lui Dumnezeu, am reusit sa o termin, ba chiar sa fac si partea software (la care renuntasem la un moment dat). Acum, desi “nu sunt pasionat” de hardware, ma bucur ca am terminat acest proiect si nu mai regret asa mult ca nu am schimbat materia =) .

Download

rocket_game.zip

Jurnal

18.05.2018 - Am terminat partea hardware.

19.05.2018 - M-am apucat de partea software.

22.05.2018 - Am actualizat schema electrica.

23.05.2018 - Am actualizat lista de piese, am terminat partea software si am finalizat pagina de wiki.

Bibliografie/Resurse

Resurse hardware

Resurse software