Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "graphics.h"
- #include <iostream>
- #include <string>
- using namespace std;
- void draw_coordinate_system(int szerokosc, int wysokosc, int w=5, int jed=25, int wys=7);
- void draw_menu(int pozycja, int color, char *napis);
- void draw_straight(float A, float B, int color,int jed, int rozmiar) ;
- int catch_click(int maxpoz);
- void draw_cordinate(int color, int w=5, int jed=25, int wys=7);
- 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
- //przy rozmiarze okna 500 x 500 p proponuje w=5, jed=25, wys=7
- {
- //kolor
- setcolor(0);
- setbkcolor(15);
- cleardevice(); //czyszczenie wazne !
- //rysowanie
- int xmax = 500;
- int pxmax = xmax / 2;
- int ymax = 500;
- int pymax = ymax / 2;
- line(pxmax,0,pxmax,ymax); // x
- line(0,pymax,xmax,pymax); // y
- line(pxmax,0,pxmax-w,w); // strzalka przy y u gory
- line(pxmax,0,pxmax+w,w);
- line(0,pymax,w,pymax-w); //strzalka przy x z lewej
- line(0,pymax,w,pymax+w);
- line(pxmax,ymax,pxmax-w,ymax-w); //strzalka przy y na dole
- line(pxmax,ymax,pxmax+w,ymax-w);
- line(xmax,pymax,xmax-w,pymax-w); //sztalka przy x po prawej
- line(xmax,pymax,xmax-w,pymax+w);
- //skala
- int temp=jed;
- int odle=(wys/2)+3; //zalezne od wielkosci kreski
- char val='1';
- settextstyle(2,HORIZ_DIR,4);
- while(temp<=(pxmax-w))
- {
- line(pxmax-temp,pymax-(wys/2),pxmax-temp,pymax+(wys/2)); //x w lewo
- line(pxmax+temp,pymax-(wys/2),pxmax+temp,pymax+(wys/2)); //x w prawo
- line(pxmax-(wys/2),pymax-temp,pxmax+(wys/2),pymax-temp); //y w gore
- outtextxy(pxmax+temp-3,pymax+odle,&val); //podpisy
- outtextxy(pxmax+odle,pymax-temp,&val); //podpisy
- val++; //UWAGA BLAD ! JESTLI VAL WYJDZIE POZA 9 ROZWALI SIE BO W ASCII NIE MA LICZBY 10 itd
- //do naprawienia ten powyzszy blad, sa chetni ?
- line(pxmax-(wys/2),pymax+temp,pxmax+(wys/2),pymax+temp); //y w dol
- temp+=jed;
- }
- outtextxy(pxmax+5,pymax+odle,"0");// zero , przy zmianie wymiarow moze wymagac dopracowania
- settextstyle(0,HORIZ_DIR,0); //zmiana czcionki
- outtextxy(xmax-15,(pymax-25),"x"); //x
- outtextxy(pxmax+10,1,"y"); //y
- //linie oddzielajaca
- line(xmax,0,xmax,ymax);
- }
- void draw_menu(int pozycja,int color, char *napis)
- {
- setcolor(color);
- rectangle(520,pozycja,630,20+pozycja);
- outtextxy(522,pozycja+5,napis);
- }
- void draw_straight(float A, float B, int color,int jed, int rozmiar) //ostatnia pozycja w menu (dla znajomosci wspolrzednych przyciskow)
- //color to kolor wysowanej lini, jedn to jednoska na wykresie musi byc taka sama jak podane przy rysowaniu ukladu,
- //rozmiar to rozmiar ukladu wspolrzednych musi byc taki sam jak podany przy rysownaiu ukladu
- {
- setcolor(color);
- //obliczanie punktu przeciecia z gora
- if(A==0) // jesli mamy funkcje np. y=3
- {
- line(0,250-(B*25),500,250-(B*25));
- }
- else
- {
- float Xg=(10-B)/A;
- float Xd=((0-10)-B)/A;
- float Yg=10;
- float Yd=-10;
- if(Xg>10)
- {
- Xg=10;
- Yg=(A*10)+B;
- }
- if(Xg<-10)
- {
- Xg=-10;
- Yg=(A*(0-10))+B;
- }
- if(Xd>10)
- {
- Xd=10;
- Yd=(A*10)+B;
- }
- if(Xd<-10)
- {
- Xd=-10;
- Yd=(A*(0-10))+B;
- }
- //obliczanie wspolrzednych na wykresie
- Xg=(rozmiar/2)+(Xg*jed);
- Yg=(rozmiar/2)-(Yg*jed);
- Xd=(rozmiar/2)+(Xd*jed);
- Yd=(rozmiar/2)-(Yd*jed);
- setlinestyle(0,1,2);
- line(Xg,Yg,Xd,Yd);
- //line(Xg+1,Yg+1,Xd+1,Yd+1);
- }
- }
- int catch_click(int maxpoz)
- {
- int x, y, i;
- ii:
- clearmouseclick(WM_LBUTTONDOWN);
- int q=10;
- while(!ismouseclick(WM_LBUTTONDOWN))
- {
- delay(500);
- }
- getmouseclick(WM_LBUTTONDOWN,x,y);
- for(i=0; i<maxpoz; i++)
- {
- if((x>520 && x<630) && (y>q && y<q+20))
- {
- return i;
- }
- q+=40;
- }
- goto ii;
- }
- void draw_cordinate(int color, int w, int jed, int wys)
- {
- setcolor(color);
- int xmax = 500;
- int pxmax = xmax / 2;
- int ymax = 500;
- int pymax = ymax / 2;
- line(pxmax,0,pxmax,ymax); // x
- line(0,pymax,xmax,pymax); // y
- line(pxmax,0,pxmax-w,w); // strzalka przy y u gory
- line(pxmax,0,pxmax+w,w);
- line(0,pymax,w,pymax-w); //strzalka przy x z lewej
- line(0,pymax,w,pymax+w);
- line(pxmax,ymax,pxmax-w,ymax-w); //strzalka przy y na dole
- line(pxmax,ymax,pxmax+w,ymax-w);
- line(xmax,pymax,xmax-w,pymax-w); //sztalka przy x po prawej
- line(xmax,pymax,xmax-w,pymax+w);
- //skala
- int temp=jed;
- int odle=(wys/2)+3; //zalezne od wielkosci kreski
- char val='1';
- settextstyle(2,HORIZ_DIR,4);
- while(temp<=(pxmax-w))
- {
- line(pxmax-temp,pymax-(wys/2),pxmax-temp,pymax+(wys/2)); //x w lewo
- line(pxmax+temp,pymax-(wys/2),pxmax+temp,pymax+(wys/2)); //x w prawo
- line(pxmax-(wys/2),pymax-temp,pxmax+(wys/2),pymax-temp); //y w gore
- outtextxy(pxmax+temp-3,pymax+odle,&val); //podpisy
- outtextxy(pxmax+odle,pymax-temp,&val); //podpisy
- val++; //UWAGA BLAD ! JESTLI VAL WYJDZIE POZA 9 ROZWALI SIE BO W ASCII NIE MA LICZBY 10 itd
- //do naprawienia ten powyzszy blad, sa chetni ?
- line(pxmax-(wys/2),pymax+temp,pxmax+(wys/2),pymax+temp); //y w dol
- temp+=jed;
- }
- outtextxy(pxmax+5,pymax+odle,"0");// zero , przy zmianie wymiarow moze wymagac dopracowania
- settextstyle(0,HORIZ_DIR,0); //zmiana czcionki
- outtextxy(xmax-15,(pymax-25),"x"); //x
- outtextxy(pxmax+10,1,"y"); //y
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement