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.
Diff: spremanje.cpp
- Revision:
- 0:316948794d55
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spremanje.cpp Mon Nov 19 13:22:48 2018 +0000 @@ -0,0 +1,57 @@ +#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 + +} + + \ No newline at end of file