Senka Ibrahimpasic Nejra Pasic

Dependencies:   N5110 mbed

Revision:
0:5ec84672b7e9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Jun 10 00:04:17 2015 +0000
@@ -0,0 +1,633 @@
+#include "mbed.h"
+#include <deque>
+#include "mbed.h"
+#include "N5110.h"
+#define dp23 P0_0
+
+//Deklaracija LCD objekta
+//N5110 lcd(VCC,SCE,RST,D/C,MOSI,SCLK,LED)
+N5110 lcd(dp4,dp24,dp23,dp25,dp2,dp6,dp18);
+
+DigitalOut enable(dp14);
+
+AnalogIn    VRx1(dp11);
+AnalogIn    VRy1(dp10);
+AnalogIn    VRx2(dp9);
+AnalogIn    VRy2(dp13);
+
+DigitalIn   SW(dp9);
+
+InterruptIn joystick1(dp28);
+InterruptIn joystick2(dp26);
+
+int kojiJePritisnut;
+
+Timer t;
+
+void pritisnut1()
+{
+    kojiJePritisnut =1;
+}
+void pritisnut2()
+{
+    kojiJePritisnut=2;
+}
+
+struct Tacka
+{
+    int x;
+    int y;
+};
+
+
+int Rand(int r1, int r2)
+{
+    return t.read_ms() % r2;
+    /* int n;
+     //ovdje se generise random broj
+     n=50;
+     return n;*/
+}
+
+/*void meni()
+{
+    lcd.printString("J1 - 1 igrac",0,2);
+    lcd.printString("J2 - 2 igraca",0,3);
+}*/
+class igra
+{
+    Tacka zmija_1[30];
+    Tacka zmija_2[30];
+    int duzina1;
+    int duzina2;
+    int smjer1, smjer2;
+    //0-gore, 1-desno, 2-lijevo, 3-dole
+    // deque<Tacka> zmija_1, zmija_2;
+    Tacka hrana;
+public:
+    igra()
+    {
+        for(int i=0; i<30; i++)
+        {
+            zmija_1[i].y = 50;
+            zmija_1[i].x = 50;
+            zmija_2[i].y = 50;
+            zmija_2[i].x = 50;
+        }
+        duzina1=3;
+        duzina2=3;
+        smjer1=0;
+        smjer2=0;
+        lcd.init();
+        lcd.clear();
+        zmija_1[0].x = 30;
+        zmija_1[1].x = 30;
+        zmija_1[2].x = 30;
+        zmija_1[0].y = 10;
+        zmija_1[1].y = 13;
+        zmija_1[2].y = 16;
+
+
+        zmija_2[0].x = 50;
+        zmija_2[1].x = 50;
+        zmija_2[2].x = 50;
+        zmija_2[0].y = 10;
+        zmija_2[1].y = 13;
+        zmija_2[2].y = 16;
+        hrana.x = 40; //ILI RANDOM BROJ
+        hrana.y = 20;
+        lcd.setPixel(hrana.x, hrana.y);
+        lcd.setPixel(hrana.x+1, hrana.y);
+        lcd.setPixel(hrana.x-1, hrana.y);
+        lcd.setPixel(hrana.x, hrana.y+1);
+        lcd.setPixel(hrana.x, hrana.y-1);
+        lcd.setPixel(hrana.x+1, hrana.y+1);
+        lcd.setPixel(hrana.x-1, hrana.y+1);
+        lcd.setPixel(hrana.x-1, hrana.y-1);
+        lcd.setPixel(hrana.x+1, hrana.y-1);
+
+        for(int i=0; i<duzina1 ; i++)
+        {
+            lcd.setPixel(zmija_1[i].x, zmija_1[i].y);
+            lcd.setPixel(zmija_1[i].x+1, zmija_1[i].y);
+            lcd.setPixel(zmija_1[i].x-1, zmija_1[i].y);
+            lcd.setPixel(zmija_1[i].x, zmija_1[i].y+1);
+            lcd.setPixel(zmija_1[i].x, zmija_1[i].y-1);
+            lcd.setPixel(zmija_1[i].x+1, zmija_1[i].y+1);
+            lcd.setPixel(zmija_1[i].x-1, zmija_1[i].y+1);
+            lcd.setPixel(zmija_1[i].x-1, zmija_1[i].y-1);
+            lcd.setPixel(zmija_1[i].x+1, zmija_1[i].y-1);
+        }
+
+        for(int i=0; i<duzina2 ; i++)
+        {
+
+            lcd.setPixel(zmija_2[i].x, zmija_2[i].y);
+            lcd.setPixel(zmija_2[i].x+1, zmija_2[i].y);
+            lcd.setPixel(zmija_2[i].x-1, zmija_2[i].y);
+            lcd.setPixel(zmija_2[i].x, zmija_2[i].y+1);
+            lcd.setPixel(zmija_2[i].x, zmija_2[i].y-1);
+            lcd.setPixel(zmija_2[i].x+1, zmija_2[i].y+1);
+            lcd.setPixel(zmija_2[i].x-1, zmija_2[i].y+1);
+            lcd.setPixel(zmija_2[i].x-1, zmija_2[i].y-1);
+            lcd.setPixel(zmija_2[i].x+1, zmija_2[i].y-1);
+
+
+
+
+        }
+
+        lcd.refresh();
+
+    }
+
+    void idiGore(int n)
+    {
+     //   Tacka temp;
+        if( n == 1)
+        {
+            if(smjer1!=2)
+            {
+                for(int i=duzina1; i>0; i--)
+                {
+                    zmija_1[i].x=zmija_1[i-1].x;
+                    zmija_1[i].y=zmija_1[i-1].y;
+                   // zmija_1[i]=zmija_1[i-1];
+                }
+                zmija_1[0].y += 1;
+            }
+            smjer1=0;
+        }
+        else
+        {
+            if(smjer2!=2)
+            {
+
+                for(int i=duzina2; i>0; i--)
+                {
+                    zmija_2[i].x=zmija_2[i-1].x;
+                    zmija_2[i].y=zmija_2[i-1].y;
+                }
+                zmija_2[0].y += 1;
+                smjer2=0;
+            }
+        }
+
+    }
+    void idiDole(int n)
+    {
+        Tacka temp;
+        if( n == 1)
+        {
+            if(smjer1!=0)
+            {
+                for(int i=duzina1; i>0; i--)
+                {
+                    zmija_1[i].x=zmija_1[i-1].x;
+                    zmija_1[i].y=zmija_1[i-1].y;
+                }
+                zmija_1[0].y -= 1;
+                smjer1=2;
+            }
+        }
+        else
+        {
+            if(smjer2!=0)
+            {
+                for(int i=duzina2; i>0; i--)
+                {
+                    zmija_2[i].x=zmija_2[i-1].x;
+                    zmija_2[i].y=zmija_2[i-1].y;
+                }
+                zmija_2[0].y -= 1;
+                smjer2=2;
+            }
+        }
+    }
+    void idiDesno(int n)
+    {
+        Tacka temp;
+        if(n == 1)
+        {
+            if(smjer1!=3)
+            {
+                for(int i=duzina1; i>0; i--)
+                {
+                    zmija_1[i].x=zmija_1[i-1].x;
+                    zmija_1[i].y=zmija_1[i-1].y;
+                }
+                zmija_1[0].x += 1;
+                smjer1=1;
+            }
+        }
+        else
+        {
+            if(smjer2!=3)
+            {
+
+                for(int i=duzina2; i>0; i--)
+                {
+                    zmija_2[i].x=zmija_2[i-1].x;
+                    zmija_2[i].y=zmija_2[i-1].y;
+                }
+                zmija_2[0].x += 1;
+                smjer2=1;
+            }
+        }
+    }
+    void idiLijevo(int n)
+    {
+        Tacka temp;
+        if( n == 1)
+        {
+            if(smjer1!=1)
+            {
+                for(int i=duzina1; i>0; i--)
+                {
+                    zmija_1[i].x=zmija_1[i-1].x;
+                    zmija_1[i].y=zmija_1[i-1].y;
+                }
+                zmija_1[0].x -= 1;
+                smjer1=3;
+            }
+        }
+        else
+        {
+            if(smjer2!=1)
+            {
+
+                for(int i=duzina2; i>0; i--)
+                {
+                    zmija_2[i].x=zmija_2[i-1].x;
+                    zmija_2[i].y=zmija_2[i-1].y;
+                }
+                zmija_2[0].x -= 1;
+                smjer2=3;
+            }
+        }
+    }
+    void Iscrtavanje()
+    {
+        lcd.clear();
+        lcd.setPixel(hrana.x, hrana.y);
+        lcd.setPixel(hrana.x+1, hrana.y);
+        lcd.setPixel(hrana.x-1, hrana.y);
+        lcd.setPixel(hrana.x, hrana.y+1);
+        lcd.setPixel(hrana.x, hrana.y-1);
+        lcd.setPixel(hrana.x+1, hrana.y+1);
+        lcd.setPixel(hrana.x-1, hrana.y+1);
+        lcd.setPixel(hrana.x-1, hrana.y-1);
+        lcd.setPixel(hrana.x+1, hrana.y-1);
+
+        for(int i=0; i<duzina1 ; i++)
+        {
+            lcd.setPixel(zmija_1[i].x, zmija_1[i].y);
+            lcd.setPixel(zmija_1[i].x+1, zmija_1[i].y);
+            lcd.setPixel(zmija_1[i].x-1, zmija_1[i].y);
+            lcd.setPixel(zmija_1[i].x, zmija_1[i].y+1);
+            lcd.setPixel(zmija_1[i].x, zmija_1[i].y-1);
+            lcd.setPixel(zmija_1[i].x+1, zmija_1[i].y+1);
+            lcd.setPixel(zmija_1[i].x-1, zmija_1[i].y+1);
+            lcd.setPixel(zmija_1[i].x-1, zmija_1[i].y-1);
+            lcd.setPixel(zmija_1[i].x+1, zmija_1[i].y-1);
+        }
+
+        for(int i=0; i<duzina2 ; i++)
+        {
+
+            lcd.setPixel(zmija_2[i].x, zmija_2[i].y);
+            lcd.setPixel(zmija_2[i].x+1, zmija_2[i].y);
+            lcd.setPixel(zmija_2[i].x-1, zmija_2[i].y);
+            lcd.setPixel(zmija_2[i].x, zmija_2[i].y+1);
+            lcd.setPixel(zmija_2[i].x, zmija_2[i].y-1);
+            lcd.setPixel(zmija_2[i].x+1, zmija_2[i].y+1);
+            lcd.setPixel(zmija_2[i].x-1, zmija_2[i].y+1);
+            lcd.setPixel(zmija_2[i].x-1, zmija_2[i].y-1);
+            lcd.setPixel(zmija_2[i].x+1, zmija_2[i].y-1);
+        }
+        lcd.refresh();
+    }
+
+    void nastaviKretanje(int n)
+    {
+        if(n==1)
+        {
+            if(smjer1==0)idiGore(n);
+            if(smjer1==1)idiDesno(n);
+            if(smjer1==2)idiDole(n);
+            if(smjer1==3)idiLijevo(n);
+
+        }
+        if(n==2)
+        {
+            if(smjer2==0)idiGore(n);
+            if(smjer2==1)idiDesno(n);
+            if(smjer2==2)idiDole(n);
+            if(smjer2==3)idiLijevo(n);
+        }
+    }
+
+    void PostaviHranu()
+    {
+        bool jeLiNaZmiji(false);
+        while(1)
+        {
+            hrana.x = Rand(5,65);
+            hrana.y = Rand(5,30);
+            for(int i=0; i<duzina1; i++)
+            {
+                if(zmija_1[i].x == hrana.x && zmija_1[i].y == hrana.y) //provjeriti ostale tacke
+                {
+                    jeLiNaZmiji = true;
+                    break;
+                }
+
+            }
+            for(int i=0; i<duzina2; i++)
+            {
+                if(zmija_2[i].x == hrana.x && zmija_2[i].y == hrana.y)
+                {
+                    jeLiNaZmiji = true;
+                    break;
+                }
+
+            }
+            if(!jeLiNaZmiji) break;
+        }
+    }
+    int jeLiPojela()
+    {
+        if( (zmija_1[0].x == hrana.x && zmija_1[0].y == hrana.y) || (zmija_1[0].x-1 == hrana.x && zmija_1[0].y-1 == hrana.y) ||
+        (zmija_1[0].x-1 == hrana.x && zmija_1[0].y == hrana.y) || (zmija_1[0].x-1 == hrana.x && zmija_1[0].y+1 == hrana.y) ||
+        (zmija_1[0].x == hrana.x && zmija_1[0].y-1 == hrana.y) || (zmija_1[0].x == hrana.x && zmija_1[0].y+1 == hrana.y)
+        || (zmija_1[0].x+1 == hrana.x && zmija_1[0].y == hrana.y)|| (zmija_1[0].x+1 == hrana.x && zmija_1[0].y+1 == hrana.y)
+        || (zmija_1[0].x+1 == hrana.x && zmija_1[0].y-1 == hrana.y )) return 1;
+        else if( (zmija_2[0].x == hrana.x && zmija_2[0].y == hrana.y) || (zmija_2[0].x-1 == hrana.x && zmija_2[0].y-1 == hrana.y) ||
+        (zmija_2[0].x-1 == hrana.x && zmija_2[0].y == hrana.y) || (zmija_2[0].x-1 == hrana.x && zmija_2[0].y+1 == hrana.y) ||
+        (zmija_2[0].x == hrana.x && zmija_2[0].y-1 == hrana.y) || (zmija_2[0].x == hrana.x && zmija_2[0].y+1 == hrana.y)
+        || (zmija_2[0].x+1 == hrana.x && zmija_2[0].y == hrana.y)|| (zmija_2[0].x+1 == hrana.x && zmija_2[0].y+1 == hrana.y)
+        || (zmija_2[0].x+1 == hrana.x && zmija_2[0].y-1 == hrana.y )) return 1;
+        else return 0;
+    }
+    void pojela(int n)
+    {
+
+        if( n==1)
+        {
+            if(duzina1 > 29)return;
+            Tacka zadnja = zmija_1[duzina1];
+            duzina1+=3;
+            nastaviKretanje(1);
+            zmija_1[duzina1]=zadnja;
+
+        }
+        else
+        {
+            if(duzina2 > 29)return;
+            Tacka zadnja = zmija_2[duzina2];
+            duzina2+=3;
+            nastaviKretanje(2);
+            zmija_2[duzina2]=zadnja;
+        }
+    }
+    int kolizija()
+    {
+        for(int i=0; i<duzina2; i++)
+        {
+            if(zmija_1[0].x == zmija_2[i].x && zmija_1[0].y == zmija_2[i].y)return 1;
+        }
+        for(int i=0; i<duzina1; i++)
+        {
+            if(zmija_2[0].x == zmija_1[i].x && zmija_2[0].y == zmija_1[i].y)return 2;
+        }
+        return 0;
+        //treba i zid;
+    }
+    int pobijedila(int sudarilaSe)
+    {
+        if(sudarilaSe==1)duzina1-=5;
+        if(sudarilaSe==2)duzina2-=5;
+        if(duzina1>duzina2)return 1;
+        if(duzina2>duzina1)return 2;
+    }
+    /* void autoKretanje()
+     {
+         //ako je desno idi desno dok se ne izjednaci
+         if(hrana.x > zmija2[0].x)
+         {
+             while(hrana.x!= zmija2[0].x)
+                 idiDesno(2);
+         }
+         if(hrana.x < zmija2[0].x)
+         {
+             while(hrana.x!= zmija2[0].x)
+                 idiLijevo2);
+         }
+         if(hrana.y > zmija2[0].y)
+         {
+             while(hrana.y!= zmija2[0].y)
+                 idiGore(2);
+         }
+         if(hrana.y < zmija2[0].y)
+         {
+             while(hrana.x!= zmija2[0].x)
+                 idiDole(2);
+         }
+
+     }*/
+
+};
+//provjeri jel kolizija
+//ako jest izbaci koja je pobijedila
+//ako nije provjeri jel pojela
+//ako jeste raste
+
+
+
+
+int main()
+{
+    enable=1;
+    wait(1);
+    t.start();
+    igra *igra1 =  new igra();
+    /*meni();
+
+        joystick1.rise(pritisnut1);
+        joystick2.rise(pritisnut2);
+        //2 igraca;
+    if(kojiJePritisnut==2){
+    while(1)
+    {
+        if(VRx1 > 2.0/3.0) igra1.idiDesno(1);
+        else if(VRx1 < 1.0/3.0) igra1.idiLijevo(1);
+        if(VRy1 < 1.0/3.0) igra1.idiGore(1);
+        else if(VRy1 > 2.0/3.0) igra1.idiDole(1);
+
+
+        int kol = igra1.kolizija();//treba mozda i ovdje i dole, mozda samo dole
+        if(kol==1)
+        {
+            lcd.clear();
+            lcd.printString("Pobijedila je zmija 1.",0,3);
+            lcd.refresh();
+        }
+        else if(kol==2)
+        {
+            lcd.clear();
+            lcd.printString("Pobijedila je zmija 2.",0,3);
+            lcd.refresh();
+        }
+        int poj = igra1.jeLiPojela();
+        if(poj==1 || poj==2)
+        {
+            igra1.pojela(poj);
+            igra1.PostaviHranu();
+        }
+        igra1.nastaviKretanje(1);
+        if(VRx2 > 2.0/3.0) igra1.idiDesno(2);
+        else if(VRx2 < 1.0/3.0) igra1.idiLijevo(2);
+        if(VRy2 < 1.0/3.0) igra1.idiGore(2);
+        else if(VRy2 > 2.0/3.0) igra1.idiDole(2);
+
+
+        int kol = igra1.kolizija();
+        if(kol==1)
+        {
+            lcd.clear();
+            lcd.printString("Pobijedila je zmija 1.",0,3);
+            lcd.refresh();
+        }
+        else if(kol==2)
+        {
+            lcd.clear();
+            lcd.printString("Pobijedila je zmija 2.",0,3);
+            lcd.refresh();
+        }
+        int poj = igra1.jeLiPojela();
+        if(poj==1 || poj==2)
+        {
+            igra1.pojela(poj);
+            igra1.PostaviHranu();
+        }
+        igra1.nastaviKretanje(2);
+
+    }}
+
+
+
+
+    //1 igrac
+      if(kojiJePritisnut==1){
+      while(1)
+      {
+          if(VRx1 > 2.0/3.0) igra1.idiDesno(1);
+      else if(VRx1 < 1.0/3.0) igra1.idiLijevo(1);
+      if(VRy1 < 1.0/3.0) igra1.idiGore(1);
+      else if(VRy1 > 2.0/3.0) igra1.idiDole(1);
+      int kol = igra1.kolizija();//treba mozda i ovdje i dole, mozda samo dole
+      if(kol==1) lcd.printString("Pobijedila je zmija 1.",0,3);
+      else if(kol==2) lcd.printString("Pobijedila je zmija 1.",0,3);
+      int poj = igra1.jeLiPojela();
+      if(poj==1 || poj==2)
+      {
+          igra1.pojela(poj);
+          igra1.PostaviHranu();
+      }
+      igra1.autoKretanje();
+      }
+      }
+    */
+    
+    //2 igraca;
+    while(1)
+    {
+        if(VRx1 > 2.0/3.0) igra1->idiLijevo(1);
+        else if(VRx1 < 1.0/3.0) igra1->idiDesno(1);        
+        else if(VRy1 < 1.0/3.0) igra1->idiGore(1);
+        else if(VRy1 > 2.0/3.0) igra1->idiDole(1);
+        else igra1->nastaviKretanje(1);
+
+        int kol = igra1->kolizija();//treba mozda i ovdje i dole, mozda samo dole
+        if(kol==1)
+        {
+            lcd.clear();
+            lcd.printString("Pobijedila je zmija 1.",0,3);
+            lcd.refresh();
+        }
+        else if(kol==2)
+        {
+            lcd.clear();
+            lcd.printString("Pobijedila je zmija 2.",0,3);
+            lcd.refresh();
+        }
+        int poj = igra1->jeLiPojela();
+        if(poj==1 || poj==2)
+        {
+            igra1->pojela(poj);
+            igra1->PostaviHranu();
+        }
+
+        igra1->nastaviKretanje(1);
+        igra1->Iscrtavanje();
+
+
+        if(VRx2 > 2.0/3.0) igra1->idiDesno(2);
+        else if(VRx2 < 1.0/3.0) igra1->idiLijevo(2);        
+        else if(VRy2 < 1.0/3.0) igra1->idiGore(2);
+        else if(VRy2 > 2.0/3.0) igra1->idiDole(2);
+        else igra1->nastaviKretanje(2);
+
+        kol = igra1->kolizija();
+        if(kol==1)
+        {
+            lcd.clear();
+            lcd.printString(" Win:  1.",0,3);
+            
+        }
+        else if(kol==2)
+        {
+            lcd.clear();
+            lcd.printString(" Win: 2.",0,3);
+            
+            
+        }
+        else{
+        poj = igra1->jeLiPojela();
+        if(poj==1 || poj==2)
+        {
+            igra1->pojela(poj);
+            igra1->PostaviHranu();
+        }
+        igra1->nastaviKretanje(2);
+        igra1->Iscrtavanje();
+        }
+        wait(0.3);
+    }
+
+
+
+
+    //1 igrac
+    /*  while(1)
+      {
+          if(VRx1 > 2.0/3.0) igra1.idiDesno(1);
+      else if(VRx1 < 1.0/3.0) igra1.idiLijevo(1);
+      if(VRy1 < 1.0/3.0) igra1.idiGore(1);
+      else if(VRy1 > 2.0/3.0) igra1.idiDole(1);
+      int kol = igra1.kolizija();//treba mozda i ovdje i dole, mozda samo dole
+      if(kol==1) lcd.printString("Pobijedila je zmija 1.",0,3);
+      else if(kol==2) lcd.printString("Pobijedila je zmija 1.",0,3);
+      int poj = igra1.jeLiPojela();
+      if(poj==1 || poj==2)
+      {
+          igra1.pojela(poj);
+          igra1.PostaviHranu();
+      }
+      igra1.autoKretanje();
+      }*/
+      
+    return 0;
+
+
+}