In cadrul acestui proiect, actiunea se petrece in interiorul functiei de loop. Daca nu ruleaza jocul si nu este pauza atunci verific daca s-a scurs counter-ul care este timpul alocat jucatorului in acest caz 20 de secunde. Daca da, atunci inseamna ca nu a avut loc nici o coliziune si jucatorul a castigat. In continuare, resetez numaratorea si jocul o va lua de la capat cu mesajul “BEGIN ?” “PRESS START !”; tind sa mentionez faptul ca in aceasta faza, este si muzica ce va fi rulata am ales PinkPanther; muzica va fi redata pe masura ce mesajele “BEGIN ?” “PRESS START !” sunt afisate. In acest ipostaz, jucatorul se afla in postura de repaus. Ca sa inceapa jocul apas pe buton. Pentru realizarea unei astfel de operatii ma folosesc de intreruperi. Daca se va apasa pe buton, jocul incepe si harta incepe sa fie desenata. Aceasta contine mai multe obstacole sub forma unor copaci. Fiecare copac are un timp de viata cat este afisat pe ecran. Jucatorul in sine va fi mereu pozitionat pe celula de jos. Pentru a realiza lucrurile mai dinamic, am inclus si niste miscari de sarituri pentru jucator in matricea de miscare. Felul cum harta va fi generata in continuare este realizata tot in loop, unde in functie de pozitia jucatorului decid cum va arata urmatorul frame. Am si un buton de pause , care are rolul de a pune pauza jocului oricand jucatorul are nevoie iar dupa cateva secunde de la apasarea acestui buton se va rezuma la joc. O data ce butonul de pauza a fost apasat, un mesaj : “GAME PAUSED” va fi afisat pe ecranul LCD. Insotit de acest mesaj este printat si scorul actual al jucatorului. Daca a avut loc o coliziune, LED-ul rosu se va aprinde alaturi de mesajul “LOST ! AGAIN ?” urmat de scorul obtinut; daca aceste doua mesaje cu “GAME PAUSED” si “LOST ! AGAIN ?” sunt afisate pe ecran o muzica va fi redata este muzica de GameOver in cod. Daca jocul va fi pus pe pauza LED-ul galben se va aprinde, alaturi de mesajul “GAME PAUSED” si scorul actual. Iar daca jucatorul va castiga se va afisa mesajul “YOU WON” “ANOTHER ONE ?”, simultan cu el LED-ul verde se va aprinde.
In functia map_initialisation, harta este creata, iar in functia map_animation se va decide care va fi urmatorul pas in reprezentarea hartii.
In functia player_design, decid urmatoarele miscari ale playerului in functie de pozitia actuala. Tot aici in partea dreapa sus a ecranului reprezint timpul scurs.
In setup se fac initializarile pentru butoane, registrii folositi pentru intreruperi atat pentru butoane cat si pentru timer. Initializarea pentru buzzer este de asemenea reprezentata aici. In ceea ce priveste intreruperile si registrii pentru ele au fost realizate in stilul laboratorului. Pentru rutinele de intreruperi am folosit ISR.
In functia GAME_OVER_MELODY redau melodia de gameover in caz de pauza sau de pierdere.