Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2009, 20:38   #1
rododendron
 
Регистрация: 14.04.2009
Сообщений: 6
По умолчанию Передвижение фигур

задание такое:
основной класс - квадрат, класс с наследованием - квадрат вписанный в квадрат с единым центром. появление, передвижение, гашение. написал передвижение - появились ошибки, где накосячил?
Код:

#include <iostream.h>
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

class square
{protected:int x;
int y;
int l;
int color;
int xq, yq, lg;
public:
    void drawsquare()
    {int d=lg/2;
      line(xq-d, yq-d, xq+d,yq-d);
	  line(xq-d, yq+d, xq+d,yq+d);
	  line(xq-d, yq-d, xq-d,yq+d);
	  line(xq+d, yq-d, xq+d,yq+d);}
    square(int xi, int yi, int li,int col)
    {xq=xi; yq=yi; lg=li; color=col;}
	void draw()
	{drawsquare();}
	
	void vvod_koordin(int kx,int ky)
    {x=kx;
     y=ky;}
   void vvod_dlini(int kl)
    {l=kl;}
   void vvod_cveta(int col)
   {color=col;}
   int get_x()
   {return x;}

   int get_y()
   {return y;}

   int get_color()
   {return color;}

   int get_l()
   {return l;}

   void risovanie()
   {setcolor(color);
   drawsquare(x,y,l);
   getch();
   }
   
   void hide()
	{int bk, cc;
     bk=getbkcolor();
	 cc=color();
	 setcolor(bk);
	 drawsquare(x,y,l);
	 getch()
	 vvod_cveta(cc);}
	
	void peremeshenie()
    {
     int quit;
     int bk_=getbkcolor();
     risovanie();
     do
     {setcolor(bk_);
      drawsquare(x,y,l);
      switch(int(getch()))
      {case 87:y=(y+10);break;
       case 81:y=(y-10);break;
       case 69=(x-10);break;
       case 82=(x+10);break;
       default:quit=0;}
      risovanie();
      }while(quit!=0);
     }
};

 class kvadrat: public square
{protected:
int color2;
public:
kvadrat(int xi,int yi,int ri,int col1,int col2,int ri2):
	 square(xi,yi,2*ri,col1)
	 {color2=col2;}
	 
	 void vvod_cveta2(int col)
    {color2=col;}
	
	int get_color2()
    {return color2;}
	
	void vvod_r2(int kl)
    {r2=kl;}
	
	int get_r2()
    {return r2;}

	 void risovanie2()
{setcolor(color);
drawsquare(x,y,l);
setcolor(color2);
drawsquare(x,y,r2);
getch();
}

void gashenie2()
{int bk1=getbkcolor();
int cc1=color;
int cc2=color2;
setcolor(bk1);
drawsquare(x,y,l);
drawsquare(x,y,r2);
getch();
vvod_cveta(cc1);
vvod_cveta2(cc2);
}

void peremeshenie2()
{ int quit;
int bk_1=getbkcolor();
risovanie2();
do
{setcolor(bk_1);
drawsquare(x,y,l);
setcolor(bk_1);
drawsquare(x,y,r2);
switch(int(getch()))
{case 87:y=(y+10);break;
case 81:y=(y-10);break;
case 69=(x-10);break;
case 82=(x+10);break;
default:quit=0;}
risovanie2();
}while(quit!=0);
}
};

void vvod_koordin_kv1(square &squ);
void vvivod_koordinat_kv1(square &squ);
void risovanie_kv1(square &squ);
void gashenie_kv1(square &squ);
void peremeshenie_kv1(square &squ);

void vvivod_koordin_kv2(kvadrat &kva);
void vvod_koordin_kv2(kvadrat &kva);
void risovanie_kv2(kvadrat &kva);
void gashenie_kv2(kvadrat &kva);
void peremeshenie_kv2(kvadrat &kva);


 }
rododendron вне форума Ответить с цитированием
Старый 01.06.2009, 20:38   #2
rododendron
 
Регистрация: 14.04.2009
Сообщений: 6
По умолчанию

Код:
void main()
{int vibor;
clrscr();
do
{
cout << "\n -------------rabota s bazovim klassom";
cout << "\n 1-sozdanie kvadrata";
cout << "\n 2-vivod koordinat i zveta";
cout << "\n 3-izmenenie koordinat i zveta";
cout << "\n 4-risovanie kvadrata";
cout << "\n 5-gashenie kvadrata";
cout << "\n 6-peremeshenie kvadrata";
cout << "\n -------------rabota s proizvodnim klassom";
cout << "\n 7-sozdanie 2x kvadratov s edinim centrom";
cout << "\n 8-vivod koordinat i zveta";
cout << "\n 9-izmenenie koordinat i zveta";
cout << "\n 10-risovanie kvadratov";
cout << "\n 11-gashenie kvadratov";
cout << "\n 12-peremeshenie kvadratov";
cout << "\n 0-exit";
cin>>vibor;
switch(vibor)
{case 1:square kv1(0,0,0,0);break;
case 2:vvivod_koordinat_kv1(kv1);break;
case 3:vvod_koordin_kv1(kv1);break;
case 4: risovanie_kv1(kv1);break;
case 5:gashenie_kv1(kv1);break;
case 6:peremeshenie_kv1(kv1);break;
case 7:kvadrat kv2(0,0,0,0,0,0);break;
case 8:vvivod_koordin_kv2(kv2);break;
case 9:vvod_koordin_kv2(kv2);break;
case 10:risovanie_kv2(kv2);break;
case 11:gashenie_kv2(kv2);break;
case 12:peremeshenie_kv2(kv2);break;
default:vibor=0;}
}while(vibor!=0);
}

void vvod_koordin_kv1(square &squ)
{int n,k;
cout << "\n vvedi x";
cin>>n;
cout << "\n vvedi y";
cin>>k;
squ.vvod_koordin(n,k);
cout << "\n vvedi dlinu";
cin>>n;
squ.vvod_dlini(n);
cout << "\n vvedi cvet";
cin>>n;
squ.vvod_cveta(n);
}

void vvivod_koordinat_kv1(square &squ)
{cout<<"\n koordinati:";
cout<<"\n x:"<<squ.get_x();
cout<<"\n y:"<<squ.get_y();
cout<<"\n nomer cveta:"<<squ.get_color();
cout<<"\n dlina:"<<squ.get_l();
getch();
}

void risovanie_kv1(square &squ)
{int driver = DETECT;
int mode = 0;
initgraph(&driver,&mode,"C:\\BORLANDC\\BIN";
squ.risovanie();
}

void gashenie_kv1(square &squ)
{int driver = DETECT;
int mode = 0;
initgraph(&driver,&mode,"C:\\BORLANDC\\BIN";
cout<<"\n gashenie";
squ.risovanie();
squ.hide();
getch();
}

void peremeshenie_kv1(square &squ)
{int driver = DETECT;
int mode = 0;
initgraph(&driver,&mode,"C:\\BORLANDC\\BIN";
squ.peremeshenie();
}


void vvod_koordin_kv2(kvadrat &kva)
{int n,k;
cout << "\n vvedi x";
cin>>n;
cout << "\n vvedi y";
cin>>k;
kva.vvod_koordin(n,k);
cout << "\n vvedi DLINU1";
cin>>n;
kva.vvod_dlini(n);
cout<<"\n vvedi dlinu2";
cin>>n;
kva.vvod_r2(n);
cout << "\n vvedi cvet 1";
cin>>n;
kva.vvod_cveta(n);
cout << "\n vvedi cvet 2";
cin>>n;
kva.vvod_cveta2(n);
}
void vvivod_koordin_kv2(kvadrat &kva)
{cout<<"\n koordinati:";
cout<<"\n x:"<<kva.get_x();
cout<<"\n y:"<<kva.get_y();
cout<<"\n nomer cveta1:"<<kva.get_color();
cout<<"\n nomer cveta2:"<<kva.get_color2();
cout<<"\n dlina1:"<<kva.get_l();
cout<<"\n dlina2:"<<kva.get_l();
getch();
}

void risovanie_kv2(kvadrat &kva)
{int driver = DETECT;
int mode = 0;
initgraph(&driver,&mode,"C:\\BORLANDC\\BIN";
kva.risovanie2();
}

void gashenie_kv2(kvadrat &kva)
{int driver = DETECT;
int mode = 0;
initgraph(&driver,&mode,"C:\\BORLANDC\\BIN";
cout<<"\n gashenie";
kva.risovanie2();
kva.gashenie2();
//cout<<"\n gashenie zakoncheno";
getch();
}
void peremeshenie_kv2(kvadrat &kva)
{int driver = DETECT;
int mode = 0;
initgraph(&driver,&mode,"C:\\BORLANDC\\BIN";
kva.peremeshenie2();
}

 closegraph();
rododendron вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Площадь фигур Вор Паскаль, Turbo Pascal, PascalABC.NET 3 18.05.2009 22:44
алгоритмы 2д фигур tarakannn Общие вопросы C/C++ 2 23.11.2008 11:23
Передвижение формы JIK Помощь студентам 2 12.07.2008 17:45
Минобороны ограничит передвижение мужчин призывного возраста - законопроект одобрен во втором чтении Alar Свободное общение 14 27.03.2008 23:49