Jarebica Azra Čilić Zlatan Igrica Labirint

Dependencies:   MMA8451Q N5110 TSI mbed

Files at this revision

API Documentation at this revision

Comitter:
tim008
Date:
Mon Jun 09 12:28:52 2014 +0000
Commit message:
Projektni zadatak "Igrica Labirint" Grupa 1 tim008 Jarebica Azra i ?ili? Zlatan

Changed in this revision

MMA8451Q.lib Show annotated file Show diff for this revision Revisions of this file
N5110.lib Show annotated file Show diff for this revision Revisions of this file
TSI.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r a24a998fcdb9 MMA8451Q.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MMA8451Q.lib	Mon Jun 09 12:28:52 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/JoKer/code/MMA8451Q/#2d14600116fc
diff -r 000000000000 -r a24a998fcdb9 N5110.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/N5110.lib	Mon Jun 09 12:28:52 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/eencae/code/N5110/#7701f0126ba7
diff -r 000000000000 -r a24a998fcdb9 TSI.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TSI.lib	Mon Jun 09 12:28:52 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/vsluiter/code/TSI/#4dc2f5a3a731
diff -r 000000000000 -r a24a998fcdb9 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Jun 09 12:28:52 2014 +0000
@@ -0,0 +1,367 @@
+#include "mbed.h"
+#include "N5110.h"
+#include "MMA8451Q.h"
+#include "TSISensor.h"
+#include <string>
+
+#define MMA8451_I2C_ADDRESS (0x1d<<1)
+
+//Deklaracija akcelerometra
+MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
+
+//Deklaracija LCD objekta
+//N5110 lcd(VCC,SCE,RST,D/C,MOSI,SCLK,LED)
+N5110 lcd (PTA5, PTA12, PTD4, PTA4, PTC6, PTC5, PTC8);
+
+//Deklaracija globalnih varijabli
+int staroX(10);
+int staroY(10);
+int novoX(10);
+int novoY(10);
+
+int duzinaPutaXPoz(0);
+int duzinaPutaYPoz(0);
+int duzinaPutaXNeg(0);
+int duzinaPutaYNeg(0);
+
+
+TSISensor tsi;
+Timer sat;
+bool pocetakIgre(true);
+bool krajIgre(false);
+bool labirint[84][48];
+float brzina(0.1);
+
+//Crtanje labirinta i punjenje matrice (obavlja se pocetku svake igre)
+
+void postaviRupu()
+{
+    lcd.setXYAddress(0,0);
+    lcd.setPixel(57, 24);
+    lcd.setPixel(56, 24);
+    lcd.setPixel(58, 24);
+    lcd.setPixel(59, 24);
+    lcd.setPixel(57, 25);
+    lcd.setPixel(58, 25);
+    lcd.setPixel(57, 23);
+    lcd.setPixel(56, 23);
+    lcd.setPixel(58, 23);
+    lcd.setPixel(59, 23);
+    lcd.setPixel(57, 22);
+    lcd.setPixel(58, 22);
+    
+    lcd.refresh();
+}
+
+void inicijalizirajLabirint()
+{
+    //"Ciscenje" matrice:
+    for(int i = 0; i < 84; i++)
+        for(int j = 0; j < 48; j++)
+            labirint[i][j] = 0;
+    //Vanjske granice:
+    for(int i = 0; i < 84; i++)
+    {
+        lcd.setPixel(i,0);
+        labirint[i][0] = 1;
+    }
+    for(int i = 0; i < 84; i++)
+    {
+        lcd.setPixel(i, 47);
+        labirint[i][47] = 1;
+    }
+    for(int i = 0; i < 48; i++)
+    {
+        lcd.setPixel(0, i);
+        labirint[0][i] = 1;
+    }
+    for(int i = 0; i < 48; i++)
+    {
+        lcd.setPixel(83, i);
+        labirint[83][i] = 1;
+    }
+    //Prvi unutrasnji zidovi:
+    for(int i = 7; i < 77; i++)
+    {
+        lcd.setPixel(i,7);
+        labirint[i][7] = 1;
+    }
+    for(int i = 7; i < 77; i++)
+    {
+        lcd.setPixel(i, 40);
+        labirint[i][40] = 1;
+    }
+    for(int i = 7; i < 40; i++)
+    {
+        lcd.setPixel(7, i);
+        labirint[7][i] = 1;
+    }
+    for(int i = 7; i < 40; i++)
+    {
+        lcd.setPixel(76, i);
+        labirint[76][i] = 1;
+    }
+    //Prolazi za prve unutrasnje zidove:
+    for(int i = 11; i < 17; i++)
+    {
+        lcd.clearPixel(76, i);
+        labirint[76][i] = 0;
+    }
+    for(int i = 54; i < 60; i++)
+    {
+        lcd.clearPixel(i, 40);
+        labirint[i][40] = 0;
+    }
+    //Drugi unutrasnji zidovi:
+    for(int i = 14; i < 70; i++)
+    {
+        lcd.setPixel(i, 14);
+        labirint[i][14] = 1;
+    }
+    for(int i = 14; i < 70; i++)
+    {
+        lcd.setPixel(i, 33);
+        labirint[i][33] = 1;
+    }
+    for(int i = 14; i < 34; i++)
+    {
+        lcd.setPixel(14, i);
+        labirint[14][i] = 1;
+    }
+    for(int i = 14; i < 34; i++)
+    {
+        lcd.setPixel(69, i);
+        labirint[69][i] = 1;
+    }
+    //Prolazi za druge unutrasnje zidove:
+    for(int i = 18; i < 25; i++)
+    {
+        lcd.clearPixel(i, 14);
+        labirint[i][14] = 0;
+    }
+    for(int i = 18; i < 25; i++)
+    {
+        lcd.clearPixel(69, i);
+        labirint[69][i] = 0;
+    }
+    //Spoj izmedju prvih i drugih unutrasnjih zidova:
+    for(int i = 8; i < 14; i++)
+    {
+        lcd.setPixel(i, 24);
+        labirint[i][24] = 1;
+    }
+    //Treci unutrasnji zidovi:
+    for(int i = 21; i < 63; i++)
+    {
+        lcd.setPixel(i, 21);
+        labirint[i][21] = 1;
+    }
+    for(int i = 21; i < 63; i++)
+    {
+        lcd.setPixel(i, 26);
+        labirint[i][26] = 1;
+    }
+    for(int i = 21; i < 27; i++)
+    {
+        lcd.setPixel(21, i);
+        labirint[21][i] = 1;
+    }
+    for(int i = 21; i < 27; i++)
+    {
+        lcd.setPixel(62, i);
+        labirint[62][i] = 1;
+    }
+    //Prolaz za trece unutrasnje zidove
+    for(int i = 25; i < 31; i++)
+    {
+        lcd.clearPixel(i, 26);
+        labirint[i][26] = 0;
+    }
+    //Spoj izmedju drugih i trecih unutrasnjih zidova:
+    for(int i = 27; i < 34; i++)
+    {
+        lcd.setPixel(48, i);
+        labirint[48][i] = 1;
+    }
+    lcd.refresh();
+    //Rupa:
+    postaviRupu();
+    
+    
+}
+ 
+
+//Citanje vrijednosti sa akcelerometra i korigiranje koordinata sukladno ocitanjima
+void kreciSe()
+{
+    //Citanje vrijednosti:
+    float xA = acc.getAccX();
+    float yA = acc.getAccY();
+    //Postavljanje brzine:
+    if(xA > 0.2){
+    if(xA > 0.2 && xA < 0.3) brzina = 0.3;
+    if(xA >= 0.3 && xA < 0.4) brzina = 0.1;
+    if(xA >= 0.4 && xA < 0.5) brzina = 0.05;
+    if(xA >= 0.5 && xA < 0.7) brzina = 0.01;
+    if(xA >= 0.7) brzina = 0.01;}
+    else if(yA > 0.2){    
+    if(yA > 0.2 && yA < 0.3) brzina = 0.3;
+    if(yA >= 0.3 && yA < 0.4) brzina = 0.1;
+    if(yA >= 0.4 && yA < 0.5) brzina = 0.05;
+    if(yA >= 0.5 && yA < 0.7) brzina = 0.01;
+    if(yA >= 0.7) brzina = 0.01;}
+    else if(xA < -0.2){
+    if(xA <-0.2 && xA >-0.3) brzina = 0.3;
+    if(xA <= -0.3 && xA > -0.4) brzina = 0.1;
+    if(xA <= -0.4 && xA > -0.5) brzina = 0.05;
+    if(xA <= -0.5 && xA > -0.7) brzina = 0.01;
+    if(xA <= -0.7) brzina = 0.01;}
+    else if(yA < -0.2){
+    if(yA <-0.2 && yA >-0.3) brzina = 0.3;
+    if(yA <= -0.3 && yA > -0.4) brzina = 0.1;
+    if(yA <= -0.4 && yA > -0.5) brzina = 0.05;
+    if(yA <= -0.5 && yA > -0.7) brzina = 0.01;
+    if(yA <= -0.7) brzina = 0.01;}
+    
+    
+    
+    //Transfer koordinata
+    staroX = novoX;
+    staroY = novoY;
+    
+    if(xA < -0.2 && labirint[novoX + 2][novoY + 1] == 0 && labirint[novoX + 3][novoY] == 0
+                && labirint[novoX + 3][novoY - 1] == 0 && labirint[novoX + 2][novoY  - 2] == 0)
+        { 
+            novoX++;
+        }
+    if(xA > 0.2 && labirint[novoX - 1][novoY + 1] == 0 && labirint[novoX - 2][novoY] == 0
+                && labirint[novoX - 2][novoY - 1] == 0 && labirint[novoX - 1][novoY - 2] == 0)
+        novoX--;
+    if(yA > 0.2 && labirint[novoX - 1][novoY + 1] == 0 && labirint[novoX][novoY + 2] == 0
+                && labirint[novoX + 1][novoY + 2] == 0 && labirint[novoX + 2][novoY + 1] == 0)
+        novoY++;
+    if(yA < -0.2 && labirint[novoX - 1][novoY - 2] == 0 && labirint[novoX][novoY - 3] == 0
+                && labirint[novoX + 1][novoY - 3] == 0 && labirint[novoX + 2][novoY - 2] == 0)
+        novoY--;
+    
+    
+}
+
+//Prebacivanje pozicije loptice prema ocitanim vrijednostima u kreciSe()
+void obnovi()
+{
+    //Brisanje stare pozicije:
+    lcd.setXYAddress(0,0);
+    lcd.clearPixel(staroX - 1, staroY);
+    lcd.clearPixel(staroX - 1, staroY - 1);
+    lcd.clearPixel(staroX, staroY + 1);
+    lcd.clearPixel(staroX, staroY);
+    lcd.clearPixel(staroX, staroY - 1);
+    lcd.clearPixel(staroX, staroY - 2);
+    lcd.clearPixel(staroX + 1, staroY + 1);
+    lcd.clearPixel(staroX + 1, staroY);
+    lcd.clearPixel(staroX + 1, staroY - 1);
+    lcd.clearPixel(staroX + 1, staroY - 2);
+    lcd.clearPixel(staroX + 2, staroY);
+    lcd.clearPixel(staroX + 2, staroY - 1);
+    lcd.refresh();
+    //Postavljanje nove pozicije:
+    lcd.setXYAddress(0,0);
+    lcd.setPixel(novoX - 1, novoY);
+    lcd.setPixel(novoX - 1, novoY - 1);
+    lcd.setPixel(novoX, novoY + 1);
+    lcd.setPixel(novoX, novoY);
+    lcd.setPixel(novoX, novoY - 1);
+    lcd.setPixel(novoX, novoY - 2);
+    lcd.setPixel(novoX + 1, novoY + 1);
+    lcd.setPixel(novoX + 1, novoY);
+    lcd.setPixel(novoX + 1, novoY - 1);
+    lcd.setPixel(novoX + 1, novoY - 2);
+    lcd.setPixel(novoX + 2, novoY);
+    lcd.setPixel(novoX + 2, novoY - 1);
+    lcd.refresh();
+
+    postaviRupu();
+    
+    if(novoX == 57 && novoY == 24)
+        krajIgre = true;
+}
+
+//Kraj igre; cisti ekran, ispisuje poruku, vrijeme i uputsvo za pokretanje nove igre
+void zavrsiIgru()
+{
+    sat.stop();
+    int sekunde = sat.read();
+    int minute = 0;
+    while(sekunde > 60)
+    {
+        sekunde -= 60;
+        minute++;
+    }
+    char ispisVremena[5];
+    int desetice = minute / 10;
+    int jedinice = minute % 10;
+    char m1 = desetice + '0';
+    char m2 = jedinice + '0';
+    ispisVremena[0] = m1;
+    ispisVremena[1] = m2;
+    ispisVremena[2] = ':';
+    desetice = sekunde / 10;
+    jedinice = sekunde % 10;
+    m1 = desetice + '0';
+    m2 = jedinice + '0';
+    ispisVremena[3] = m1;
+    ispisVremena[4] = m2;
+    
+    lcd.clear();
+    lcd.setXYAddress(0,0);
+    lcd.printString("BRAVO!!!", 0,0);
+    lcd.printString("Vase vrijeme:", 0,1);
+    lcd.printString(ispisVremena, 0, 2);
+    lcd.printString("Dodirnite TSI", 0, 3);
+    lcd.printString("za novu igru!", 0, 4);
+    lcd.refresh();
+    
+    float procenat = 0;
+    while(1)
+    {
+         procenat = tsi.readPercentage();
+         if(procenat > 0.8)
+         {
+             lcd.clear();
+             lcd.refresh();
+             break;
+         }
+    }
+}
+
+
+int main()
+{
+    lcd.init();
+    inicijalizirajLabirint();
+    while(1)
+    {
+        if(pocetakIgre)
+        {
+            sat.reset();
+            sat.start();
+            lcd.setXYAddress(0,0);
+            inicijalizirajLabirint();
+            novoX = staroX = 2;
+            novoY = staroY = 3;
+            pocetakIgre = false;
+        }
+        kreciSe();
+        obnovi();
+
+        if(krajIgre)
+        {
+            zavrsiIgru();
+            krajIgre = false;
+            pocetakIgre = true;
+        }
+        wait(brzina);
+    }
+}
+//686
\ No newline at end of file
diff -r 000000000000 -r a24a998fcdb9 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Jun 09 12:28:52 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/0b3ab51c8877
\ No newline at end of file