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@0:316948794d55, 2018-11-19 (annotated)
- Committer:
- kyzo
- Date:
- Mon Nov 19 13:22:48 2018 +0000
- Revision:
- 0:316948794d55
Prva verzija
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kyzo | 0:316948794d55 | 1 | #include "spremanje.h" |
kyzo | 0:316948794d55 | 2 | #include "mbed.h" |
kyzo | 0:316948794d55 | 3 | |
kyzo | 0:316948794d55 | 4 | LocalFileSystem local("local"); // kreuranje local file system za r/w filea |
kyzo | 0:316948794d55 | 5 | int rekord; // varijabla za upis() |
kyzo | 0:316948794d55 | 6 | Serial pc(USBTX,USBRX); // serijska komunikacija za debug |
kyzo | 0:316948794d55 | 7 | |
kyzo | 0:316948794d55 | 8 | |
kyzo | 0:316948794d55 | 9 | //////////////////////////////////////////////////////////////////////////////////////// |
kyzo | 0:316948794d55 | 10 | //////////////////////////////Funkcija za upis rekorda////////////////////////////////// |
kyzo | 0:316948794d55 | 11 | //////////////////////////////////////////////////////////////////////////////////////// |
kyzo | 0:316948794d55 | 12 | |
kyzo | 0:316948794d55 | 13 | void upis(int rekord) { |
kyzo | 0:316948794d55 | 14 | |
kyzo | 0:316948794d55 | 15 | |
kyzo | 0:316948794d55 | 16 | |
kyzo | 0:316948794d55 | 17 | FILE *logFile = NULL; // pointer za file |
kyzo | 0:316948794d55 | 18 | |
kyzo | 0:316948794d55 | 19 | |
kyzo | 0:316948794d55 | 20 | |
kyzo | 0:316948794d55 | 21 | |
kyzo | 0:316948794d55 | 22 | logFile = fopen("/local/log.txt", "w"); // otvori log.txt file za pisanje |
kyzo | 0:316948794d55 | 23 | |
kyzo | 0:316948794d55 | 24 | if (logFile == NULL) { // ako nije moguće otvoriti |
kyzo | 0:316948794d55 | 25 | pc.printf("Ne mogu otvoriti file.\n"); // javi err na teraterm |
kyzo | 0:316948794d55 | 26 | while (1) { |
kyzo | 0:316948794d55 | 27 | wait(100); |
kyzo | 0:316948794d55 | 28 | } |
kyzo | 0:316948794d55 | 29 | }else (pc.printf("OTVOREN FILE.")); // inače javi da je ok |
kyzo | 0:316948794d55 | 30 | |
kyzo | 0:316948794d55 | 31 | |
kyzo | 0:316948794d55 | 32 | |
kyzo | 0:316948794d55 | 33 | |
kyzo | 0:316948794d55 | 34 | fprintf(logFile, "%d\r\n", rekord); // upiši var rekord u file log.txt |
kyzo | 0:316948794d55 | 35 | |
kyzo | 0:316948794d55 | 36 | fclose(logFile); // zatvori file |
kyzo | 0:316948794d55 | 37 | } |
kyzo | 0:316948794d55 | 38 | |
kyzo | 0:316948794d55 | 39 | |
kyzo | 0:316948794d55 | 40 | //////////////////////////////////////////////////////////////////////////////////////// |
kyzo | 0:316948794d55 | 41 | ///////////////////////////Funkcija za čitanje rekorda////////////////////////////////// |
kyzo | 0:316948794d55 | 42 | //////////////////////////////////////////////////////////////////////////////////////// |
kyzo | 0:316948794d55 | 43 | |
kyzo | 0:316948794d55 | 44 | int citaj(void) { |
kyzo | 0:316948794d55 | 45 | |
kyzo | 0:316948794d55 | 46 | |
kyzo | 0:316948794d55 | 47 | FILE *set = fopen("/local/log.txt", "r"); // otvori log.txt za čitanje |
kyzo | 0:316948794d55 | 48 | |
kyzo | 0:316948794d55 | 49 | fscanf(set,"%i", &rekord); // pročitaj i spremi u rekord var |
kyzo | 0:316948794d55 | 50 | |
kyzo | 0:316948794d55 | 51 | fclose(set); // zatvori file |
kyzo | 0:316948794d55 | 52 | pc.printf("Iz varijable je procitano: %i", rekord); // javi podatak u teraterm |
kyzo | 0:316948794d55 | 53 | return(rekord); // vrati info glavnoj funkciji |
kyzo | 0:316948794d55 | 54 | |
kyzo | 0:316948794d55 | 55 | } |
kyzo | 0:316948794d55 | 56 | |
kyzo | 0:316948794d55 | 57 |