Facebook
From Soiled Lechwe, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 233
  1. #include <iostream>
  2. #include <stdio.h>      //printf/getch itp.
  3. #include <conio.h>      //kbhit()
  4. #include <graphics.h>   //funkcje graficzne BGI
  5. #include <windows.h>    //Sleep(xx)
  6. #include <time.h>
  7.  
  8. using namespace std;
  9. class figura
  10. {
  11. protected:
  12.     double x,y,a;
  13. public:
  14.     figura();
  15.     ~figura();
  16.     virtual void rysuj(int kolor);
  17.     void przesun(int dx, int dy);
  18. };
  19. figura::figura()
  20. {
  21.     x=rand()%640;
  22.     y=rand()%480;
  23.     a=rand()%200+20;
  24. }
  25. void figura::rysuj(int kolor)
  26. {
  27.     setcolor(kolor);
  28. }
  29.  
  30. void figura::przesun(int dx, int dy)
  31. {
  32.     rysuj(BLACK);
  33.     x+=dx;
  34.     y+=dy;
  35.     rysuj(LIGHTGREEN);
  36. }
  37. figura::~figura()
  38. {
  39.     rysuj(BLACK);
  40. }
  41. class kwadrat: public figura
  42. {
  43. public:
  44.     void rysuj(int kolor);
  45. };
  46. void kwadrat::rysuj(int kolor)
  47. {
  48.     setcolor(kolor);
  49.     rectangle(x-0.5*a,y-0.5*a,x+0.5*a,y+0.5*a);
  50. }
  51. class kolo: public figura
  52. {
  53. public:
  54.     void rysuj(int kolor);
  55. };
  56. void kolo::rysuj(int kolor)
  57. {
  58.     setcolor(kolor);
  59.     circle(x,y,a);
  60. }
  61.  
  62. int main()
  63. {
  64.     int GraphDriver = DETECT;
  65.     int GraphMode;
  66.     int ErrorCode;
  67.     initgraph(&GraphDriver, &GraphMode,"");
  68.     ErrorCode = graphresult();
  69.     if(ErrorCode != grOk)
  70.     {
  71.         printf("Blad trybu graficznego: %sn", grapherrormsg(ErrorCode) );
  72.         exit(1);
  73.     }
  74.     //Tutaj kod związany z rysowaniem
  75.     //******************************************************************************************************************
  76.     srand(time(NULL));
  77.     figura *a[20];
  78.     int i,x,p,h,k;
  79.     char z,b;
  80.     for(i=0; i<20; i++)
  81.     {
  82.         a[i]=NULL;
  83.     }
  84.     do
  85.     {
  86.         system("CLS");
  87.         cout<<"R-RysujnZ-zmazujnP-przesunnQ-Wyjscie"<<endl;
  88.         cin>>z;
  89.         switch(z)
  90.         {
  91.         case 'r':
  92.             system("CLS");
  93.             cout<<"Ktory element chcesz narysowac"<<endl;
  94.             cin>>p;
  95.             cout<<"K-KwadratnO-Okrag"<<endl;
  96.             cin>>k;
  97.             switch(k)
  98.             {
  99.             case 'o':
  100.                 if(a[p]==NULL)
  101.                 {
  102.                     cout<<"Jakiego koloru ma byc okrag?"<<endl;
  103.                     cin>>x;
  104.                     a[p]=new kolo;
  105.                     a[p]->rysuj(x);
  106.                 }
  107.                 else
  108.                 {
  109.                     system("CLS");
  110.                     cout<<"Pole juz zajete"<<endl;
  111.                     Sleep(1500);
  112.                 }
  113.                 break;
  114.  
  115.  
  116.             case'k':
  117.                 if(a[p]==NULL)
  118.                 {
  119.                     cout<<"Jakiego koloru ma byc kwadrat?"<<endl;
  120.                     cin>>x;
  121.                     a[p]=new kwadrat;
  122.                     a[p]->rysuj(x);
  123.                 }
  124.                 else
  125.                 {
  126.                     system("CLS");
  127.                     cout<<"Pole juz zajete"<<endl;
  128.                     Sleep(1500);
  129.                 }
  130.  
  131.                 break;
  132.             }
  133.             break;
  134.         case 'z':
  135.             system("CLS");
  136.             cout<<"Ktory element chcesz zmazac"<<endl;
  137.             cin>>p;
  138.             if(a[p]!=NULL)
  139.             {
  140.                 a[p]->rysuj(BLACK);
  141.                 delete a[p];
  142.                 a[p]=NULL;
  143.             }
  144.             else
  145.             {
  146.                 cout<<"Pole jest juz puste"<<endl;
  147.                 Sleep(1500);
  148.             }
  149.             break;
  150.         case 'p':
  151.             system("CLS");
  152.             cout<<"Ktory elemen chcesz przesunac?"<<endl;
  153.             cin>>h;
  154.             cout<<"e - Wyjscie z trybu przesuwania"<<endl;
  155.             if(a[h]!=NULL)
  156.             {
  157.                 do
  158.                 {
  159.                     if(kbhit())
  160.                     {
  161.                         b=getch();
  162.                         switch(b)
  163.                         {
  164.                         case 'w':
  165.                             a[h]->przesun(0,-5);
  166.                             break;
  167.                         case's':
  168.                             a[h]->przesun(0,5);
  169.                             break;
  170.                         case 'a':
  171.                             a[h]->przesun(-5,0);
  172.                             break;
  173.                         case 'd':
  174.                             a[h]->przesun(5,0);
  175.                             break;
  176.                         }
  177.                     }
  178.                 }
  179.                 while(b!='e');
  180.  
  181.             }
  182.             else
  183.             {
  184.                 cout<<"Pole jest puste"<<endl;
  185.             }
  186.             break;
  187.         }
  188.     }
  189.     while(z!='q');
  190.  
  191.     for(i=0; i<20; i++)
  192.     {
  193.         if(a[i]!=NULL)
  194.         {
  195.             delete a[i];
  196.             cout<<"Usunieto element numer:t"<<i<<endl;
  197.         }
  198.  
  199.     }
  200.  
  201.  
  202.  
  203.     //******************************************************************************************************************
  204.     //koniec rysowania
  205.     //program czeka na naciœniêcie klawisza i ZAMYKA tryb graficzny!
  206.     fflush(stdin);
  207.     getch(); //tylko zatrzymanie programu, żeby nie zamykał natychmiast okna graficznego
  208.     closegraph(); //koniec trybu graficznego
  209.  
  210.     return(0);
  211. }
  212.