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.

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