senka ibrahimpasic
/
Projekat
Senka Ibrahimpasic Nejra Pasic
Diff: main.cpp
- 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; + + +}