Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.10 KB | None | 0 0
  1. #include "graphics.h"
  2. #include <iostream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. void draw_coordinate_system(int szerokosc, int wysokosc, int w=5, int jed=25, int wys=7);
  7. void draw_menu(int pozycja, int color, char *napis);
  8. void draw_straight(float A, float B, int color,int jed, int rozmiar) ;
  9. int catch_click(int maxpoz);
  10. void draw_cordinate(int color, int w=5, int jed=25, int wys=7);
  11.  
  12.  
  13. void draw_coordinate_system(int szerokosc, int wysokosc, int w, int jed, int wys)   // w wielkosc strzalki, jed wielkosc jednostki w pikselach, wys wysokosc kreski w skali
  14. //przy rozmiarze okna 500 x 500 p proponuje w=5, jed=25, wys=7
  15. {  
  16.     //kolor
  17.     setcolor(0);
  18.     setbkcolor(15);
  19.     cleardevice();   //czyszczenie wazne !
  20.  
  21.     //rysowanie
  22.     int xmax = 500;
  23.     int pxmax = xmax / 2;
  24.     int ymax = 500;
  25.     int pymax = ymax / 2;
  26.                
  27.  
  28.     line(pxmax,0,pxmax,ymax);  // x
  29.     line(0,pymax,xmax,pymax); // y
  30.     line(pxmax,0,pxmax-w,w);  // strzalka przy y u gory
  31.     line(pxmax,0,pxmax+w,w);
  32.     line(0,pymax,w,pymax-w);  //strzalka przy x z lewej
  33.     line(0,pymax,w,pymax+w);
  34.     line(pxmax,ymax,pxmax-w,ymax-w); //strzalka przy y na dole
  35.     line(pxmax,ymax,pxmax+w,ymax-w);
  36.     line(xmax,pymax,xmax-w,pymax-w); //sztalka przy x po prawej
  37.     line(xmax,pymax,xmax-w,pymax+w);
  38.  
  39.     //skala
  40.     int temp=jed;
  41.     int odle=(wys/2)+3;   //zalezne od wielkosci kreski
  42.     char val='1';
  43.     settextstyle(2,HORIZ_DIR,4);
  44.     while(temp<=(pxmax-w))
  45.     {
  46.        
  47.  
  48.         line(pxmax-temp,pymax-(wys/2),pxmax-temp,pymax+(wys/2)); //x w lewo
  49.         line(pxmax+temp,pymax-(wys/2),pxmax+temp,pymax+(wys/2)); //x w prawo
  50.         line(pxmax-(wys/2),pymax-temp,pxmax+(wys/2),pymax-temp); //y w gore
  51.         outtextxy(pxmax+temp-3,pymax+odle,&val);              //podpisy
  52.         outtextxy(pxmax+odle,pymax-temp,&val);               //podpisy
  53.         val++;   //UWAGA BLAD ! JESTLI VAL WYJDZIE POZA 9 ROZWALI SIE BO W ASCII NIE MA LICZBY 10 itd
  54.         //do naprawienia ten powyzszy blad, sa chetni ?
  55.         line(pxmax-(wys/2),pymax+temp,pxmax+(wys/2),pymax+temp); //y w dol
  56.         temp+=jed;
  57.        
  58.     }
  59.     outtextxy(pxmax+5,pymax+odle,"0");// zero , przy zmianie wymiarow moze wymagac dopracowania
  60.     settextstyle(0,HORIZ_DIR,0); //zmiana czcionki
  61.     outtextxy(xmax-15,(pymax-25),"x"); //x
  62.     outtextxy(pxmax+10,1,"y"); //y
  63.  
  64.     //linie oddzielajaca
  65.     line(xmax,0,xmax,ymax);
  66.    
  67.    
  68. }
  69.  
  70. void draw_menu(int pozycja,int color, char *napis)
  71. {
  72.     setcolor(color);
  73.     rectangle(520,pozycja,630,20+pozycja);
  74.     outtextxy(522,pozycja+5,napis);
  75. }
  76.  
  77. void draw_straight(float A, float B, int color,int jed, int rozmiar)    //ostatnia pozycja w menu (dla znajomosci wspolrzednych przyciskow)
  78. //color to kolor wysowanej lini, jedn to jednoska na wykresie musi byc taka sama jak podane przy rysowaniu ukladu,
  79. //rozmiar to rozmiar ukladu wspolrzednych musi byc taki sam jak podany przy rysownaiu ukladu
  80. {
  81.     setcolor(color);
  82.     //obliczanie punktu przeciecia z gora
  83.     if(A==0)   // jesli mamy funkcje np. y=3
  84.     {
  85.         line(0,250-(B*25),500,250-(B*25));
  86.     }
  87.     else
  88.     {
  89.         float Xg=(10-B)/A;
  90.         float Xd=((0-10)-B)/A;
  91.         float Yg=10;
  92.         float Yd=-10;
  93.  
  94.         if(Xg>10)
  95.         {
  96.             Xg=10;
  97.             Yg=(A*10)+B;
  98.         }
  99.         if(Xg<-10)
  100.         {
  101.             Xg=-10;
  102.             Yg=(A*(0-10))+B;
  103.         }
  104.  
  105.         if(Xd>10)
  106.         {
  107.             Xd=10;
  108.             Yd=(A*10)+B;
  109.         }
  110.         if(Xd<-10)
  111.         {
  112.             Xd=-10;
  113.             Yd=(A*(0-10))+B;
  114.         }
  115.         //obliczanie wspolrzednych na wykresie
  116.  
  117.         Xg=(rozmiar/2)+(Xg*jed);
  118.         Yg=(rozmiar/2)-(Yg*jed);                      
  119.         Xd=(rozmiar/2)+(Xd*jed);
  120.         Yd=(rozmiar/2)-(Yd*jed);  
  121.         setlinestyle(0,1,2);
  122.         line(Xg,Yg,Xd,Yd);
  123.         //line(Xg+1,Yg+1,Xd+1,Yd+1);
  124.     }
  125.  
  126. }
  127.  
  128.  
  129.  
  130.  
  131. int catch_click(int maxpoz)
  132. {
  133.     int x, y, i;
  134. ii:
  135.     clearmouseclick(WM_LBUTTONDOWN);
  136.     int q=10;
  137.     while(!ismouseclick(WM_LBUTTONDOWN))
  138.     {
  139.         delay(500);
  140.     }
  141.     getmouseclick(WM_LBUTTONDOWN,x,y);
  142.     for(i=0; i<maxpoz; i++)
  143.     {
  144.         if((x>520 && x<630) && (y>q && y<q+20))
  145.         {
  146.             return i;
  147.         }
  148.         q+=40;
  149.     }
  150.     goto ii;
  151. }
  152. void draw_cordinate(int color, int w, int jed, int wys)
  153. {
  154.     setcolor(color);
  155.     int xmax = 500;
  156.     int pxmax = xmax / 2;
  157.     int ymax = 500;
  158.     int pymax = ymax / 2;
  159.                
  160.  
  161.     line(pxmax,0,pxmax,ymax);  // x
  162.     line(0,pymax,xmax,pymax); // y
  163.     line(pxmax,0,pxmax-w,w);  // strzalka przy y u gory
  164.     line(pxmax,0,pxmax+w,w);
  165.     line(0,pymax,w,pymax-w);  //strzalka przy x z lewej
  166.     line(0,pymax,w,pymax+w);
  167.     line(pxmax,ymax,pxmax-w,ymax-w); //strzalka przy y na dole
  168.     line(pxmax,ymax,pxmax+w,ymax-w);
  169.     line(xmax,pymax,xmax-w,pymax-w); //sztalka przy x po prawej
  170.     line(xmax,pymax,xmax-w,pymax+w);
  171.  
  172.  
  173.     //skala
  174.     int temp=jed;
  175.     int odle=(wys/2)+3;   //zalezne od wielkosci kreski
  176.     char val='1';
  177.     settextstyle(2,HORIZ_DIR,4);
  178.     while(temp<=(pxmax-w))
  179.     {
  180.        
  181.  
  182.         line(pxmax-temp,pymax-(wys/2),pxmax-temp,pymax+(wys/2)); //x w lewo
  183.         line(pxmax+temp,pymax-(wys/2),pxmax+temp,pymax+(wys/2)); //x w prawo
  184.         line(pxmax-(wys/2),pymax-temp,pxmax+(wys/2),pymax-temp); //y w gore
  185.         outtextxy(pxmax+temp-3,pymax+odle,&val);              //podpisy
  186.         outtextxy(pxmax+odle,pymax-temp,&val);               //podpisy
  187.         val++;   //UWAGA BLAD ! JESTLI VAL WYJDZIE POZA 9 ROZWALI SIE BO W ASCII NIE MA LICZBY 10 itd
  188.         //do naprawienia ten powyzszy blad, sa chetni ?
  189.         line(pxmax-(wys/2),pymax+temp,pxmax+(wys/2),pymax+temp); //y w dol
  190.         temp+=jed;
  191.        
  192.     }
  193.     outtextxy(pxmax+5,pymax+odle,"0");// zero , przy zmianie wymiarow moze wymagac dopracowania
  194.     settextstyle(0,HORIZ_DIR,0); //zmiana czcionki
  195.     outtextxy(xmax-15,(pymax-25),"x"); //x
  196.     outtextxy(pxmax+10,1,"y"); //y
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement