1

Dependencies:   mbed TextLCD

Ovo je jednostavna igra, ne previše zanimljiva, napravljena od mbed LPC1768 mikrokontrolera, 16x2 LCD-a i jedne tipke.

/media/uploads/kyzo/shema.gif

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.

Committer:
kyzo
Date:
Mon Nov 19 13:22:48 2018 +0000
Revision:
0:316948794d55
Prva verzija

Who changed what in which revision?

UserRevisionLine numberNew 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