senka ibrahimpasic
/
Projekat
Senka Ibrahimpasic Nejra Pasic
main.cpp
- Committer:
- pai2015senkaibrahimp
- Date:
- 2015-06-10
- Revision:
- 0:5ec84672b7e9
File content as of revision 0:5ec84672b7e9:
#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; }