1
Ovo je jednostavna igra, ne previše zanimljiva, napravljena od mbed LPC1768 mikrokontrolera, 16x2 LCD-a i jedne tipke.
Napravljena su 3 custom charactera za animaciju lika i izgled neprijatelja, koji se na početku koda zapisuju u memoriju LCD-a.
Priključivanjem mbed-a na napajanje kod prvo poziva funkciju čitaj iz „spremanje.cpp“ koja povlači trenutni highscore iz datoteke log.txt koja se nalazi u flashu mbeda-a, sprema ga u varijablu i prikazuje na ekranu.
Nakon toga poziva se funkcija koja zapiše custom charactere iz arraya u memoriju LCD-a. Obzirom da se jedan segment LCD-a sastoji od 5x8px, custom znakove je moguće kreirati na način da se na mjesto svakog bita u bajtu koji želimo prikazati stavi 1.
Primjer kvadrat:
1 1 1 1 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 1 1 1 1
Od toga dobijemo niz od 8 byteova ({0x1F,0x11,0x11,0x11,0x11,0x11,0x11,0x1F})koji možemo zapisati kao custom char.
U beskonačnoj petlji istovremeno se vrši animacija i manipulacija likom, crtanje i animacija prepreke, sve dok ne dođe do kolizije i kraja igre, ispisuje se rezultat i igra se vraća na početni ekran.
Za mjerenje rezultata u sekundama je zadužen timer koji resetiramo svakom novom igrom, nakon što je igra gotova vrši se provjera da li je oboren highscore, ako je zapisuje se u log.txt u flashu putem funkcije upis.
spremanje.cpp
- Committer:
- kyzo
- Date:
- 2018-11-19
- Revision:
- 0:316948794d55
File content as of revision 0:316948794d55:
#include "spremanje.h" #include "mbed.h" LocalFileSystem local("local"); // kreuranje local file system za r/w filea int rekord; // varijabla za upis() Serial pc(USBTX,USBRX); // serijska komunikacija za debug //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////Funkcija za upis rekorda////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// void upis(int rekord) { FILE *logFile = NULL; // pointer za file logFile = fopen("/local/log.txt", "w"); // otvori log.txt file za pisanje if (logFile == NULL) { // ako nije moguće otvoriti pc.printf("Ne mogu otvoriti file.\n"); // javi err na teraterm while (1) { wait(100); } }else (pc.printf("OTVOREN FILE.")); // inače javi da je ok fprintf(logFile, "%d\r\n", rekord); // upiši var rekord u file log.txt fclose(logFile); // zatvori file } //////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////Funkcija za čitanje rekorda////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// int citaj(void) { FILE *set = fopen("/local/log.txt", "r"); // otvori log.txt za čitanje fscanf(set,"%i", &rekord); // pročitaj i spremi u rekord var fclose(set); // zatvori file pc.printf("Iz varijable je procitano: %i", rekord); // javi podatak u teraterm return(rekord); // vrati info glavnoj funkciji }