Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #include <graphics.h>
- #define N 10
- using namespace std;
- struct pozicije
- {
- int x;
- int y;
- bool ziv;
- };
- float udaljenost(int x1, int y1, int x2, int y2)
- {
- return sqrt(pow(x2 - x1, 2) +
- pow(y2 - y1, 2) * 1.0);
- }
- void PacMan(int x, int y, int smjer)
- {
- setfillstyle(SOLID_FILL,YELLOW);
- switch(smjer)
- {
- case 1:
- pieslice(x,y,200,150,50);
- break;
- case 2:
- pieslice(x,y,380,330,50);
- break;
- case 3:
- pieslice(x,y,470,420,50);
- break;
- case 4:
- pieslice(x,y,290,240,50);
- break;
- default:
- pieslice(x,y,380,330,50);
- break;
- }
- }
- void hrana(int x,int y)
- {
- setfillstyle(SOLID_FILL,WHITE);
- circle(x,y,15);
- floodfill(x,y,WHITE);
- }
- pozicije najblizaHrana(pozicije *p, int x, int y, int *id)
- {
- pozicije najblizi = (*(p));
- for(int i=0;i<N;i++)
- {
- float dist = udaljenost(x,y,(p+i)->x,(p+i)->y);
- float distnajblizeg = udaljenost(x,y,najblizi.x,najblizi.y);
- if(dist<distnajblizeg && (p+i)->ziv)
- {
- najblizi = *(p+i);
- *id = i;
- }
- }
- return najblizi;
- }
- int main()
- {
- initwindow(1920,1080);
- srand(time(NULL));
- pozicije hrane[N];
- for(int i=0;i<N;i++)
- {
- hrane[i].x = rand() % 1520;
- hrane[i].y = rand() % 780+100;
- hrane[i].ziv = true;
- }
- int x=0,y=0;
- int smjer;
- PacMan(x,y,smjer);
- int idnajblizeg;
- int brojac = N;
- settextstyle(0, 0, 10);
- char arr[100];
- while(1)
- {
- PacMan(x,y,smjer);
- for(int i=0;i<N;i++)
- {
- if(hrane[i].ziv)
- {
- hrana(hrane[i].x,hrane[i].y);
- }
- }
- moveto(70, 40);
- sprintf(arr, "%d", brojac);
- outtext(arr);
- pozicije najbliza = najblizaHrana(hrane,x,y,&idnajblizeg);
- float dist = udaljenost(x,y,najbliza.x,najbliza.y);
- cout<<dist<<endl;
- if(dist<50 && hrane[idnajblizeg].ziv)
- {
- brojac--;
- hrane[idnajblizeg].ziv = false;
- }
- line(x,y,najbliza.x,najbliza.y);
- if(kbhit())
- {
- int input = getch();
- switch(input)
- {
- case 75:
- {
- x-=30;
- smjer = 1;
- break;
- }
- case 77:
- {
- x+=30;
- smjer = 2;
- break;
- }
- case 72:
- {
- y-=30;
- smjer = 3;
- break;
- }
- case 80:
- {
- y+=30;
- smjer = 4;
- break;
- }
- default:
- break;
- }
- //cout<<input<<endl;
- cleardevice();
- }
- if(dist<50 && brojac == 1)
- {
- delay(500);
- cleardevice();
- break;
- }
- if(brojac<0)
- break;
- }
- moveto((1920-textheight("Pobjeda!"))/2,(1080-textwidth("Pobjeda!"))/2);
- outtext("Pobjeda!");
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement