Dino Dizdarević
/
NoviLabirnt3D
Dino Dizdarević Ensar Sarajčić Projekat
Diff: main.cpp
- Revision:
- 0:868c0c4c5ec5
- Child:
- 1:97f83061d929
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jun 04 19:24:38 2015 +0000 @@ -0,0 +1,1022 @@ +#include "mbed.h" +#include "N5110.h" +#define dp23 P0_0 +#define XMAX 16 +#define YMAX 9 + +N5110 lcd(dp4, dp24, dp23, dp25, dp2, dp6, dp18); + +AnalogIn Ox(dp11); +AnalogIn Oy(dp10); +DigitalIn SW(dp1); + +char mapa[9][16][4]={ + { {'1','0','1','1'},{'0','1','1','0'},{'0','0','1','1'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'0','1','1','0'},{'0','1','1','1'},{'0','0','1','1'},{'1','0','1','0'},{'1','1','1','0'},{'0','0','1','1'},{'0','1','1','0'},{'0','0','1','1'},{'0','0','1','0'},{'1','1','1','0'} }, + { {'0','1','1','1'},{'0','1','0','1'},{'1','0','0','1'},{'1','0','1','0'},{'0','1','1','0'},{'0','1','1','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','0','1','1'},{'1','0','1','0'},{'1','1','0','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','0','1','1'} }, + { {'0','0','0','1'},{'1','0','0','0'},{'1','0','1','0'},{'0','1','1','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'1','0','0','1'},{'0','0','0','0'},{'0','0','0','0'},{'1','0','1','0'},{'0','1','1','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'} }, + { {'0','1','0','1'},{'0','0','1','1'},{'0','1','1','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'1','0','0','1'},{'0','1','1','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','0','1','1'},{'0','1','0','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'} }, + { {'0','1','0','1'},{'0','1','0','1'},{'1','0','0','1'},{'1','1','0','0'},{'1','0','0','1'},{'1','0','0','0'},{'1','1','1','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'1','1','0','1'},{'0','1','0','1'} }, + { {'0','1','0','1'},{'0','0','0','1'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'0','1','1','0'},{'0','0','1','1'},{'0','1','0','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'1','0','0','1'},{'1','0','0','0'},{'1','0','0','0'},{'1','1','0','0'} }, + { {'0','1','0','1'},{'0','0','0','1'},{'0','0','1','0'},{'1','0','1','0'},{'0','1','1','0'},{'0','1','0','1'},{'1','1','0','1'},{'0','1','0','1'},{'1','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','0','1','1'},{'1','0','1','0'},{'1','0','1','0'},{'0','1','1','0'} }, + { {'1','1','0','1'},{'0','1','0','1'},{'1','0','0','1'},{'1','1','1','0'},{'0','1','0','1'},{'1','0','0','1'},{'1','0','1','0'},{'1','0','0','0'},{'1','0','1','0'},{'1','1','0','0'},{'1','0','0','1'},{'1','1','0','0'},{'0','1','0','1'},{'0','0','1','1'},{'1','1','1','0'},{'0','1','0','1'} }, + { {'1','0','1','0'},{'1','0','0','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','0','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','0','1'},{'1','0','0','1'},{'1','0','1','0'},{'1','1','0','0'} } + }; + +char x = 0, y = 8; // donji lijevi cosak, pocetak - char zbog memorije +char orijentacija = 1; // 0 - gore, 1 - desno, 2 - dole, 3 - lijevo - char zbog memorije + +void crtaj2D() +{ + lcd.clear(); + for(int i=0;i<9;i++) + for(int j=0;j<16;j++) + { + + if(mapa[i][j][0]=='1') + { + for(int k=0;k<5;k++) + lcd.setPixel(j*5+k,(i+1)*5); + } + if(mapa[i][j][1]=='1') + { + for(int k=0;k<5;k++) + lcd.setPixel((j+1)*5,i*5+k); + } + if(mapa[i][j][2]=='1') + { + for(int k=0;k<5;k++) + lcd.setPixel(j*5+k,i*5); + } + if(mapa[i][j][3]=='1') + { + for(int k=0;k<5;k++) + lcd.setPixel(j*5,i*5+k); + } + } + for(int i=2; i<4; i++) + for(int j = 2; j < 4; j++) + lcd.setPixel(x*5+i, y*5+j); + lcd.refresh(); + } + + +void rotirajDesno() +{ + orijentacija++; + if(orijentacija > 3) + orijentacija = 0; +} + +void rotirajLijevo() +{ + if(orijentacija == 0) + orijentacija = 3; + else + orijentacija--; +} + +bool mozePravo() +{ + switch (orijentacija) + { + case 0: + if(y==YMAX) + return false; + if(mapa[y][x][0] == '0' && mapa[y+1][x][2] == '0') + return true; + break; + case 1: + if(x==XMAX) + return false; + if(mapa[y][x][1] == '0' && mapa[y][x+1][3] == '0') + return true; + break; + case 2: + if(y==0) + return false; + if(mapa[y][x][2] == '0' && mapa[y-1][x][0] == '0') + return true; + break; + case 3: + if(y==YMAX) + return false; + if(mapa[y][x][3] == '0' && mapa[y][x-1][1] == '0') + return true; + break; + } + return true; +} + +void pravo() +{ + switch (orijentacija) + { + case 0: + if(y==YMAX) + break; + if(mapa[y][x][0] == '0' && mapa[y+1][x][2] == '0') + y++; + break; + case 1: + if(x==XMAX) + break; + if(mapa[y][x][1] == '0' && mapa[y][x+1][3] == '0') + x++; + break; + case 2: + if(y==0) + break; + if(mapa[y][x][2] == '0' && mapa[y-1][x][0] == '0') + y--; + case 3: + if(x==0) + break; + if(mapa[y][x][3] == '0' && mapa[y][x-1][1] == '0') + x--; + break; + } +} + +void linije() +{ + for(int i=0; i<28;i++) + for(int j = 0; j < 36; j++) + if(36.0/28.0*i - j < 1 && 36.0/28.0*i - j > -1) + lcd.setPixel(i,j); + for(int i = 0; i < 28; i++) + for(int j = 0; j < 36; j++) + if(-36.0/28.0*(i-28) - j < 1 && -36.0/28.0*(i-28) - j > -1) + lcd.setPixel(i+56, j); + for(int i = 0; i < 84; i++) + lcd.setPixel(i, 24); + for(int j = 24; j<48; j++) + { + lcd.setPixel(18, j); + lcd.setPixel(66, j); + } + for(int j = 36; j < 48; j++) + { + lcd.setPixel(28, j); + lcd.setPixel(56, j); + } + for(int i = 28; i < 56; i++) + lcd.setPixel(i, 36); +} + +void desni() +{ + for(int i = 0; i < 18; i++) + for(int j = 0; j < 24; j++) + if(36.0/28.0*i - j < 1) + lcd.setPixel(i, j); + for(int j = 24; j<48; j++) + for(int i = 0; i < 18; i++) + lcd.setPixel(i, j); +} + +void lijevi() +{ + for(int i = 0; i < 28; i++) + for(int j = 0; j < 24; j++) + if(-36.0/28.0*(i-28) - j < 1) + lcd.setPixel(i+56, j); + for(int j = 24; j<48; j++) + for(int i = 0; i < 18; i++) + lcd.setPixel(i+66, j); +} + +void skriveniDesni() +{ + for(int j = 24; j<48; j++) + for(int i = 0; i < 18; i++) + lcd.setPixel(i, j); +} + +void skriveniLijevi() +{ + for(int j = 24; j<48; j++) + for(int i = 0; i < 18; i++) + lcd.setPixel(i+66, j); +} + +void daljiDesni() +{ + for(int i=18; i<28;i++) + for(int j = 24; j < 36; j++) + if(36.0/28.0*i - j < 1) + lcd.setPixel(i,j); + for(int j = 36; j<48; j++) + for(int i = 18; i < 28; i++) + lcd.setPixel(i, j); +} + +void daljiLijevi() +{ + for(int i = 0; i < 10; i++) + for(int j = 24; j < 36; j++) + if(-36.0/28.0*(i-28) - j < 1) + lcd.setPixel(i+56, j); + for(int j = 36; j<48; j++) + for(int i = 0; i < 10; i++) + lcd.setPixel(i+56, j); +} + +void blizi() +{ + for(int i = 18; i < 66; i++) + for(int j = 24; j < 48; j++) + lcd.setPixel(i, j); +} + +void dalji() +{ + for(int i = 28; i < 56; i++) + for(int j = 36; j < 48; j++) + lcd.setPixel(i, j); +} + +void linijeSkretanje() +{ + for(int i=0; i<74;i++) + for(int j = 6; j < 32; j++) + if(24.0/74.0*i + 6 - j < 1 && 24.0/74.0*i + 6 - j > -1) + lcd.setPixel(i,j); + for(int i = 0; i < 74; i++) + for(int j = 6; j < 32; j++) + if(-24.0/74.0*(i-74) + 6 - j < 1 && -24.0/74.0*(i-74) + 6 - j > -1) + lcd.setPixel(i+10, j); + for(int i = 0; i < 42; i++) + for(int j = 28; j < 42; j++) + if(14.0/42.0*i + 28 - j < 1 && 14.0/42.0*i + 28 - j > -1) + lcd.setPixel(i, j); + for(int i = 0; i < 42; i++) + for(int j = 28; j < 42; j++) + if(-14.0/42.0*(i-42) + 28 - j < 1 && -14.0/42.0*(i-42) + 28 - j > -1) + lcd.setPixel(i+42, j); + for(int j = 30; j < 48; j++) + { + lcd.setPixel(10, j); + lcd.setPixel(74, j); + } + for(int j = 20; j < 48; j++) + lcd.setPixel(42, j); +} + +void daljaDesno() +{ + for(int i=0; i<10;i++) + for(int j = 6; j < 48; j++) + if(14.0/48.0*i + 28 - j <1) + lcd.setPixel(i,j); +} + +void daljaLijevo() +{ + for(int i = 74; i < 84; i++) + for(int j = 6; j < 48; j++) + if(-14.0/48.0*(i-48) + 28 - j <1) + lcd.setPixel(i, j+12); +} + +void blizaDesno() +{ + for(int i=0; i<42;i++) + for(int j = 6; j < 48; j++) + if(24.0/74.0*i + 6 - j <1) + lcd.setPixel(i,j); +} + +void blizaLijevo() +{ + for(int i = 42; i < 84; i++) + for(int j = 0; j < 48; j++) + if(-24.0/74.0*(i-74) + 6 - j < 1) + lcd.setPixel(i, j+4); +} + +void drugaDesno() +{ + for(int i = 10; i < 42; i++) + for(int j = 10; j < 48; j++) + if(-24.0/74.0*(i-74) + 6 - j < 1) + lcd.setPixel(i, j+4); +} + +void drugaLijevo() +{ + for(int i=42; i<74;i++) + for(int j = 10; j < 48; j++) + if(24.0/74.0*i + 6 - j <1) + lcd.setPixel(i,j); +} + +void izaDesno() +{ + for(int i=10; i<42;i++) + for(int j = 6; j < 48; j++) + if(14.0/42.0*i + 28 - j <1) + lcd.setPixel(i,j); +} + +void izaLijevo() +{ + for(int i = 42; i < 74; i++) + for(int j = 6; j < 48; j++) + if(-14.0/42.0*(i-42) + 28 - j <1) + lcd.setPixel(i, j+14); +} + +void linijeNaprijed() +{ + for(int i = 0; i < 30; i++) + for(int j = 0; j < 30; j++) + if(i-j<1 && i-j>-1) + lcd.setPixel(i,j); + for(int i = 54; i < 84; i++) + for(int j = 0; j < 30; j++) + if(-(i-84) - j < 1 && -(i-84) - j > -1) + lcd.setPixel(i,j); + for(int i = 30; i < 54; i++) + lcd.setPixel(i,30); + for(int i = 0; i < 84; i++) + lcd.setPixel(i, 8); + for(int j = 30; j < 48; j++) + { + lcd.setPixel(30, j); + lcd.setPixel(54, j); + } + for(int j = 8; j < 48; j++) + { + lcd.setPixel(8, j); + lcd.setPixel(76, j); + } +} + +void naprijedDalji() +{ + for(int i = 30; i < 54; i++) + for(int j = 30; j < 48; j++) + lcd.setPixel(i,j); +} + +void naprijedLijevi() +{ + for(int i = 76; i < 84; i++) + for(int j = 0; j < 48; j++) + if(-(i-84) - j < 1) + lcd.setPixel(i,j); +} + + +void naprijedDesni() +{ + for(int i = 0; i < 8; i++) + for(int j = 0; j < 48; j++) + if(i-j<1) + lcd.setPixel(i,j); +} + +void naprijedDaljiLijevi() +{ + for(int i = 54; i < 76; i++) + for(int j = 8; j < 48; j++) + if(-(i-84) - j <1) + lcd.setPixel(i,j); +} + +void naprijedDaljiDesni() +{ + for(int i = 8; i < 30; i++) + for(int j = 8; j < 48; j++) + if(i-j<1) + lcd.setPixel(i,j); +} + +void naprijedSkriveniLijevi() +{ + for(int i = 76; i<84; i++) + for(int j = 8; j < 48; j++) + lcd.setPixel(i,j); +} + +void naprijedSkriveniDesni() +{ + for(int i = 0; i<8; i++) + for(int j = 8; j < 48; j++) + lcd.setPixel(i,j); +} + +void crtaj() +{ + lcd.clear(); + linije(); + switch (orijentacija) + { + case 0: + if(y<YMAX) + { + if(mapa[y+1][x][0] == '1') + dalji(); + if(mapa[y+1][x][3] == '1') + daljiLijevi(); + if(mapa[y+1][x][1] == '1') + daljiDesni(); + if(mapa[y+1][x][2] == '1' || mapa[y][x][0] == '1') + blizi(); + if(x>0) + { + if(mapa[y+1][x-1][2] == '1' || mapa[y][x-1][0] == '1') + skriveniLijevi(); + } + if(x<XMAX) + { + if(mapa[y+1][x+1][2] == '1' || mapa[y][x+1][0] == '1') + skriveniDesni(); + } + } + else + { + if(mapa[y][x][0] == '1') + blizi(); + if(x<XMAX) + if(mapa[y][x+1][0] == '1') + skriveniDesni(); + if(x>0) + if(mapa[y][x-1][0] == '1') + skriveniLijevi(); + } + if(mapa[y][x][1] == '1') + desni(); + if(mapa[y][x][3] == '1') + lijevi(); + break; + case 1: + if(x<XMAX) + { + if(mapa[y][x+1][1] == '1') + dalji(); + if(mapa[y][x+1][0] == '1') + daljiLijevi(); + if(mapa[y][x+1][2] == '1') + daljiDesni(); + if(mapa[y][x+1][3] == '1' || mapa[y][x][1] == '1') + blizi(); + if(y>0) + { + if(mapa[y-1][x+1][3] == '1' || mapa[y-1][x][1] == '1') + skriveniDesni(); + } + if(y<YMAX) + { + if(mapa[y+1][x+1][3] == '1' || mapa[y+1][x][1] == '1') + skriveniLijevi(); + } + } + else + { + if(mapa[y][x][1] == '1') + blizi(); + if(y>0) + if(mapa[y-1][x][1] == '1') + skriveniDesni(); + if(y<YMAX) + if(mapa[y+1][x][1] == '1') + skriveniLijevi(); + } + if(mapa[y][x][2] == '1') + desni(); + if(mapa[y][x][0] == '1') + lijevi(); + break; + case 2: + if(y>0) + { + if(mapa[y-1][x][2] == '1') + dalji(); + if(mapa[y-1][x][1] == '1') + daljiLijevi(); + if(mapa[y-1][x][3] == '1') + daljiDesni(); + if(mapa[y-1][x][0] == '1' || mapa[y][x][2] == '1') + blizi(); + if(x>0) + { + if(mapa[y-1][x-1][0] == '1' || mapa[y][x-1][2] == '1') + skriveniDesni(); + } + if(x<XMAX) + { + if(mapa[y-1][x+1][0] == '1' || mapa[y][x+1][2] == '1') + skriveniLijevi(); + } + } + else + { + if(mapa[y][x][2] == '1') + blizi(); + if(x>0) + if(mapa[y][x-1][2] == '1') + skriveniDesni(); + if(x<XMAX) + if(mapa[y][x+1][2] == '1') + skriveniLijevi(); + } + if(mapa[y][x][3] == '1') + desni(); + if(mapa[y][x][1] == '1') + lijevi(); + break; + case 3: + if(x>0) + { + if(mapa[y][x-1][3] == '1') + dalji(); + if(mapa[y][x-1][2] == '1') + daljiLijevi(); + if(mapa[y][x-1][0] == '1') + daljiDesni(); + if(mapa[y][x-1][1] == '1' || mapa[y][x][3] == '1') + blizi(); + if(y<YMAX) + { + if(mapa[y+1][x-1][1] == '1' || mapa[y+1][x][3] == '1') + skriveniDesni(); + } + if(y>0) + { + if(mapa[y-1][x-1][1] == '1' || mapa[y-1][x][3] == '1') + skriveniLijevi(); + } + } + else + { + if(mapa[y][x][3] == '1') + blizi(); + if(y>0) + if(mapa[y-1][x][3] == '1') + skriveniLijevi(); + if(y<YMAX) + if(mapa[y+1][x][3] == '1') + skriveniDesni(); + } + if(mapa[y][x][0] == '1') + desni(); + if(mapa[y][x][2] == '1') + lijevi(); + break; + } + lcd.refresh(); +} + +void crtajRotacijaDesno() +{ + lcd.clear(); + linijeSkretanje(); + switch (orijentacija) + { + case 0: + if(y<YMAX) + { + if(mapa[y+1][x][3] == '1') + drugaDesno(); + if(mapa[y+1][x][0] == '1') + daljaDesno(); + if(x>0) + { + if(mapa[y+1][x-1][0] == '1') + izaDesno(); + } + } + if(mapa[y][x][3] == '1') + blizaLijevo(); + if(x>0) + { + if(mapa[y][x-1][0] == '1') + drugaLijevo(); + if(mapa[y][x-1][3] == '1') + daljaLijevo(); + if(y<YMAX) + { + if(mapa[y+1][x-1][3] == '1') + izaLijevo(); + } + } + if(mapa[y][x][0] == '1') + blizaDesno(); + break; + case 1: + if(x<XMAX) + { + if(mapa[y][x+1][0] == '1') + drugaDesno(); + if(mapa[y][x+1][1] == '1') + daljaDesno(); + if(y<YMAX) + { + if(mapa[y+1][x+1][1] == '1') + izaDesno(); + } + } + if(mapa[y][x][0] == '1') + blizaLijevo(); + if(y<YMAX) + { + if(mapa[y+1][x][1] == '1') + drugaLijevo(); + if(mapa[y+1][x][0] == '1') + daljaLijevo(); + if(x<XMAX) + { + if(mapa[y+1][x+1][0] == '1') + izaLijevo(); + } + } + if(mapa[y][x][1] == '1') + blizaDesno(); + break; + case 2: + if(y>0) + { + if(mapa[y-1][x][1] == '1') + drugaDesno(); + if(mapa[y-1][x][2] == '1') + daljaDesno(); + if(x<XMAX) + { + if(mapa[y-1][x+1][2] == '1') + izaDesno(); + } + } + if(mapa[y][x][1] == '1') + blizaLijevo(); + if(x<XMAX) + { + if(mapa[y][x+1][2] == '1') + drugaLijevo(); + if(mapa[y][x+1][1] == '1') + daljaLijevo(); + if(y>0) + { + if(mapa[y-1][x+1][1] == '1') + izaLijevo(); + } + } + if(mapa[y][x][2] == '1') + blizaDesno(); + break; + case 3: + if(x>0) + { + if(mapa[y][x-1][2] == '1') + drugaDesno(); + if(mapa[y][x-1][3] == '1') + daljaDesno(); + if(y>0) + { + if(mapa[y-1][x-1][3] == '1') + izaDesno(); + } + } + if(mapa[y][x][2] == '1') + blizaLijevo(); + if(y>0) + { + if(mapa[y-1][x][3] == '1') + drugaLijevo(); + if(mapa[y-1][x][2] == '1') + daljaLijevo(); + if(x>0) + { + if(mapa[y-1][x-1][2] == '1') + izaLijevo(); + } + } + if(mapa[y][x][3] == '1') + blizaDesno(); + break; + } + lcd.refresh(); +} + +void crtajRotacijaLijevo() +{ + lcd.clear(); + linijeSkretanje(); + switch (orijentacija) + { + case 0: + if(y<YMAX) + { + if(mapa[y+1][x][1] == '1') + drugaLijevo(); + if(mapa[y+1][x][0] == '1') + daljaLijevo(); + if(x<XMAX) + { + if(mapa[y+1][x+1][0] == '1') + izaLijevo(); + } + } + if(mapa[y][x][1] == '1') + blizaDesno(); + if(x<XMAX) + { + if(mapa[y][x+1][0] == '1') + drugaDesno(); + if(mapa[y][x+1][1] == '1') + daljaDesno(); + if(y<YMAX) + { + if(mapa[y+1][x+1][1] == '1') + izaDesno(); + } + } + if(mapa[y][x][0] == '1') + blizaLijevo(); + break; + case 1: + if(x<XMAX) + { + if(mapa[y][x+1][2] == '1') + drugaLijevo(); + if(mapa[y][x+1][1] == '1') + daljaLijevo(); + if(y>0) + { + if(mapa[y-1][x+1][1] == '1') + izaLijevo(); + } + } + if(mapa[y][x][2] == '1') + blizaDesno(); + if(y>0) + { + if(mapa[y-1][x][1] == '1') + drugaDesno(); + if(mapa[y-1][x][2] == '1') + daljaDesno(); + if(x<XMAX) + { + if(mapa[y-1][x+1][2] == '1') + izaDesno(); + } + } + if(mapa[y][x][1] == '1') + blizaLijevo(); + break; + case 2: + if(y>0) + { + if(mapa[y-1][x][3] == '1') + drugaLijevo(); + if(mapa[y-1][x][2] == '1') + daljaLijevo(); + if(x>0) + { + if(mapa[y-1][x-1][2] == '1') + izaLijevo(); + } + } + if(mapa[y][x][3] == '1') + blizaDesno(); + if(x>0) + { + if(mapa[y][x-1][2] == '1') + drugaDesno(); + if(mapa[y][x-1][3] == '1') + daljaDesno(); + if(y>0) + { + if(mapa[y-1][x-1][3] == '1') + izaDesno(); + } + } + if(mapa[y][x][2] == '1') + blizaLijevo(); + break; + case 3: + if(x>0) + { + if(mapa[y][x-1][0] == '1') + drugaLijevo(); + if(mapa[y][x-1][3] == '1') + daljaLijevo(); + if(y<YMAX) + { + if(mapa[y+1][x-1][3] == '1') + izaLijevo(); + } + } + if(mapa[y][x][0] == '1') + blizaDesno(); + if(y<YMAX) + { + if(mapa[y+1][x][3] == '1') + drugaDesno(); + if(mapa[y+1][x][0] == '1') + daljaDesno(); + if(x>0) + { + if(mapa[y+1][x-1][0] == '1') + izaDesno(); + } + } + if(mapa[y][x][3] == '1') + blizaLijevo(); + break; + } + lcd.refresh(); +} + +void crtajNaprijed() +{ + lcd.clear(); + linijeNaprijed(); + switch (orijentacija) + { + case 0: + if(mapa[y][x][0] == '1') + naprijedDalji(); + if(mapa[y][x][3] == '1') + naprijedDaljiLijevi(); + if(mapa[y][x][1] == '1') + naprijedDaljiDesni(); + if(y>0) + { + if(mapa[y-1][x][3] == '1') + naprijedLijevi(); + if(mapa[y-1][x][1] == '1') + naprijedDesni(); + if(x>0) + if(mapa[y-1][x-1][0] == '1') + naprijedSkriveniLijevi(); + if(x<XMAX) + if(mapa[y-1][x+1][0] == '1') + naprijedSkriveniDesni(); + } + break; + case 1: + if(mapa[y][x][1] == '1') + naprijedDalji(); + if(mapa[y][x][0] == '1') + naprijedDaljiLijevi(); + if(mapa[y][x][2] == '1') + naprijedDaljiDesni(); + if(x>0) + { + if(mapa[y][x-1][0] == '1') + naprijedLijevi(); + if(mapa[y][x-1][2] == '1') + naprijedDesni(); + if(y>0) + if(mapa[y-1][x-1][1] == '1') + naprijedSkriveniDesni(); + if(y<YMAX) + if(mapa[y+1][x-1][1] == '1') + naprijedSkriveniLijevi(); + } + break; + case 2: + if(mapa[y][x][2] == '1') + naprijedDalji(); + if(mapa[y][x][1] == '1') + naprijedDaljiLijevi(); + if(mapa[y][x][3] == '1') + naprijedDaljiDesni(); + if(y<YMAX) + { + if(mapa[y+1][x][3] == '1') + naprijedLijevi(); + if(mapa[y+1][x][1] == '1') + naprijedDesni(); + if(x>0) + if(mapa[y+1][x-1][2] == '1') + naprijedSkriveniDesni(); + if(x<XMAX) + if(mapa[y+1][x+1][2] == '1') + naprijedSkriveniLijevi(); + } + break; + case 3: + if(mapa[y][x][3] == '1') + naprijedDalji(); + if(mapa[y][x][2] == '1') + naprijedDaljiLijevi(); + if(mapa[y][x][0] == '1') + naprijedDaljiDesni(); + if(x<XMAX) + { + if(mapa[y][x+1][2] == '1') + naprijedLijevi(); + if(mapa[y][x+1][0] == '1') + naprijedDesni(); + if(y>0) + if(mapa[y-1][x+1][3] == '1') + naprijedSkriveniLijevi(); + if(y<YMAX) + if(mapa[y+1][x+1][3] == '1') + naprijedSkriveniDesni(); + } + break; + } + lcd.refresh(); +} +Timer t; +void citajJoystick() +{ + t.start(); + crtaj(); + while(1) + { + if(Ox>0.75) + { + rotirajLijevo(); + crtajRotacijaLijevo(); + wait(0.49); + crtaj(); + } + else if(Ox<0.25) + { + rotirajDesno(); + crtajRotacijaDesno(); + wait(0.49); + crtaj(); + } + else if(Oy<0.25) + { + crtaj2D(); + wait(0.49); + } + else if(Oy>0.75) + { + pravo(); + if(mozePravo()) + crtajNaprijed(); + wait(0.49); + crtaj(); + } + wait(0.25); + if(x==15 && y==1) break; + + } + t.stop(); + lcd.clear(); + + +} + +int main() { + lcd.init(); + int i = 0; + while(1) { + lcd.clear(); + linije(); + switch(i) + { + case 0: + desni(); + break; + case 1: + lijevi(); + break; + case 2: + daljiDesni(); + break; + case 3: + daljiLijevi(); + break; + case 4: + skriveniDesni(); + break; + case 5: + skriveniLijevi(); + break; + case 6: + dalji(); + break; + case 7: + blizi(); + break; + case 8: + desni(); + lijevi(); + break; + case 9: + daljiDesni(); + daljiLijevi(); + break; + case 10: + blizi(); + skriveniDesni(); + skriveniLijevi(); + break; + case 11: + i = 0; + } + lcd.refresh(); + if(SW==true) + citajJoystick(); + i++; + wait(0.5); + } +}