Dino Dizdarević Ensar Sarajčić Projekat

Dependencies:   N5110 mbed

main.cpp

Committer:
pai2015dinodizdarevi
Date:
2015-06-04
Revision:
0:868c0c4c5ec5
Child:
1:97f83061d929

File content as of revision 0:868c0c4c5ec5:

#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);
    }
}