Witam,
Mam napisany kod z zajęć z użytą biblioteką <graphics.h> w Code::Blocks 16.01 i niestety przy uruchomieniu program przestaje działać.
Jest w stanie ktoś pomóc/wytłumaczyć czy coś trzeba zmienić, aby tryb graficzny działał ?
Wstawiam mój kod:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <graphics.h>
#include <time.h>
#include <stdarg.h>
#include <math.h>
using namespace std;
class Figura
{
protected:
double a,x,y;
public:
virtual double obw()=0;
virtual double pole()=0;
virtual void rysuj(int colors)=0;
virtual void usun(int colors)=0;
void przesun(int dx,int dy);
void bok(double);
Figura();
virtual ~Figura(){}
};
Figura::Figura()
{
x=rand()%640;
y=rand()%480;
}
void Figura::przesun(int dx, int dy)
{
x+=dx;
y+=dy;
}
class Trojkat :public Figura
{
public:
double obw();
double pole();
void rysuj(int colors)
{
setcolor(colors);
line(x,y,x-a,y);
line(x,y,x+(a/2),y-a);
line(x+(a/2),y-a,x+a,y);
}
void usun(int colors)
{
setcolor(colors);
line(x,y,x-a,y);
line(x,y,x+(a/2),y-a);
line(x+(a/2),y-a,x+a,y);
}
Trojkat(){}
};
class Kwadrat :public Figura
{
public:
double obw();
double pole();
void rysuj(int colors)
{
setcolor(colors);
rectangle(x,y-a,x+a,y);
}
void usun(int colors)
{
setcolor(colors);
rectangle(x,y-a,x+a,y);
}
Kwadrat(){}
};
class Kolo :public Figura
{
public:
double obw();
double pole();
void rysuj(int colors)
{
setcolor(colors);
circle(x,y,a/2);
}
void usun(int colors)
{
setcolor(colors);
circle(x,y,a/2);
}
Kolo(){}
};
double Trojkat::obw()
{
return a+(sqrt(5)*a);
}
double Trojkat::pole()
{
return a*a/2;
}
double Kwadrat::obw()
{
return a*4;
}
double Kwadrat::pole()
{
return a*a;
}
double Kolo::obw()
{
return 2*3.14*(a/2);
}
double Kolo::pole()
{
return 3.14*(a*a)/2;
}
void Figura::bok(double a)
{
this->a=a;
}
int main()
{
srand(time(NULL));
char a;
int nr,klawisz,dx,dy,i;
Figura *tab[10];
int GraphDriver=DETECT;
int GraphMode=2;
int ErrorCode;
char driver[] = "";
initgraph( &GraphDriver, &GraphMode, driver);
ErrorCode = graphresult();
if(ErrorCode != grOk)
{
cout<<"Graphics system error: %s\n"<<grapherrormsg(ErrorCode)<<endl;
exit(1);
}
for(int i=0;i<10;i++)
tab[i]=NULL;
i=0;
do
{
cout<<"O-krag T-rojkat K-wadrat P-rzesun U-sun W-yjdz"<<endl;
cout<<"CO rysujesz: "<<endl;
cin>>a;
if(i>9)
{
cout<<"BRAK MIEJSC"<<endl;
}
else
{
switch(a)
{
case 'o':
tab[i]=new Kolo;
tab[i]->bok(rand()%51+50);
tab[i]->rysuj(MAGENTA);
i++;
break;
case 't':
tab[i]=new Trojkat;
tab[i]->bok(rand()%51+50);
tab[i]->rysuj(CYAN);
i++;
break;
case 'k':
tab[i]=new Kwadrat;
tab[i]->bok(rand()%51+50);
tab[i]->rysuj(YELLOW);
i++;
break;
case 'u':
cout<<"Co usunac "<<endl;
cin>>nr;
tab[nr]->usun(BLACK);
break;
case 'p':
cout<<"Co przesunac: "<<endl;
cout<<"G-gora D-ol L-ewo P-rawo"<<endl;
cin>>nr;
do
{
klawisz=getch();
switch(klawisz)
{
case 'g':
dx=0;
dy=-1;
break;
case 'd':
dx=0;
dy=1;
break;
case 'l':
dx=-1;
dy=0;
break;
case 'p':
dx=1;
dy=0;
break;
}
tab[nr]->rysuj(BLACK);
tab[nr]->przesun(dx,dy);
tab[nr]->rysuj(WHITE);
}while(klawisz!=27);
}
}
}while(a!='w');
for(int i=0; i<10; i++)
{
if(tab[i]!=NULL)
delete tab[i];
}
closegraph();
return(0);
}