Alweys

pacman

Jun 19th, 2021
970
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2. #include <graphics.h>
  3. #define N 10
  4. using namespace std;
  5. struct pozicije
  6. {
  7.     int x;
  8.     int y;
  9.     bool ziv;
  10. };
  11. float udaljenost(int x1, int y1, int x2, int y2)
  12. {
  13.     return sqrt(pow(x2 - x1, 2) +
  14.                 pow(y2 - y1, 2) * 1.0);
  15. }
  16. void PacMan(int x, int y, int smjer)
  17. {
  18.         setfillstyle(SOLID_FILL,YELLOW);
  19.         switch(smjer)
  20.         {
  21.         case 1:
  22.             pieslice(x,y,200,150,50);
  23.             break;
  24.         case 2:
  25.             pieslice(x,y,380,330,50);
  26.             break;
  27.         case 3:
  28.             pieslice(x,y,470,420,50);
  29.             break;
  30.         case 4:
  31.             pieslice(x,y,290,240,50);
  32.             break;
  33.         default:
  34.             pieslice(x,y,380,330,50);
  35.             break;
  36.         }
  37. }
  38. void hrana(int x,int y)
  39. {
  40.     setfillstyle(SOLID_FILL,WHITE);
  41.     circle(x,y,15);
  42.     floodfill(x,y,WHITE);
  43. }
  44. pozicije najblizaHrana(pozicije *p, int x, int y, int *id)
  45. {
  46.     pozicije najblizi = (*(p));
  47.     for(int i=0;i<N;i++)
  48.     {
  49.         float dist = udaljenost(x,y,(p+i)->x,(p+i)->y);
  50.         float distnajblizeg = udaljenost(x,y,najblizi.x,najblizi.y);
  51.  
  52.         if(dist<distnajblizeg && (p+i)->ziv)
  53.         {
  54.             najblizi = *(p+i);
  55.             *id = i;
  56.         }
  57.     }
  58.     return najblizi;
  59. }
  60. int main()
  61. {
  62.     initwindow(1920,1080);
  63.     srand(time(NULL));
  64.     pozicije hrane[N];
  65.  
  66.     for(int i=0;i<N;i++)
  67.     {
  68.         hrane[i].x = rand() % 1520;
  69.         hrane[i].y = rand() % 780+100;
  70.         hrane[i].ziv = true;
  71.     }
  72.     int x=0,y=0;
  73.     int smjer;
  74.     PacMan(x,y,smjer);
  75.     int idnajblizeg;
  76.     int brojac = N;
  77.     settextstyle(0, 0, 10);
  78.     char arr[100];
  79.  
  80.     while(1)
  81.     {
  82.         PacMan(x,y,smjer);
  83.         for(int i=0;i<N;i++)
  84.         {
  85.             if(hrane[i].ziv)
  86.             {
  87.                 hrana(hrane[i].x,hrane[i].y);
  88.             }
  89.         }
  90.         moveto(70, 40);
  91.         sprintf(arr, "%d", brojac);
  92.         outtext(arr);
  93.         pozicije najbliza = najblizaHrana(hrane,x,y,&idnajblizeg);
  94.         float dist = udaljenost(x,y,najbliza.x,najbliza.y);
  95.         cout<<dist<<endl;
  96.         if(dist<50 && hrane[idnajblizeg].ziv)
  97.         {
  98.             brojac--;
  99.             hrane[idnajblizeg].ziv = false;
  100.         }
  101.         line(x,y,najbliza.x,najbliza.y);
  102.         if(kbhit())
  103.         {
  104.             int input = getch();
  105.             switch(input)
  106.             {
  107.                 case 75:
  108.                 {
  109.                     x-=30;
  110.                     smjer = 1;
  111.                     break;
  112.                 }
  113.                 case 77:
  114.                 {
  115.                     x+=30;
  116.                     smjer = 2;
  117.                     break;
  118.                 }
  119.                 case 72:
  120.                 {
  121.                     y-=30;
  122.                     smjer = 3;
  123.                     break;
  124.                 }
  125.                 case 80:
  126.                 {
  127.                     y+=30;
  128.                     smjer = 4;
  129.                     break;
  130.                 }
  131.                 default:
  132.                     break;
  133.             }
  134.             //cout<<input<<endl;
  135.             cleardevice();
  136.         }
  137.         if(dist<50 && brojac == 1)
  138.         {
  139.             delay(500);
  140.             cleardevice();
  141.             break;
  142.         }
  143.         if(brojac<0)
  144.             break;
  145.     }
  146.     moveto((1920-textheight("Pobjeda!"))/2,(1080-textwidth("Pobjeda!"))/2);
  147.     outtext("Pobjeda!");
  148.     system("pause");
  149.     return 0;
  150. }
  151.  
  152.  
RAW Paste Data