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);
}