Всем доброго времени суток!
У меня есть такая задача. Используя псевдографику, создать класс фигур, нарисовать крест, круг и линию. Закрасить другим цветом и переместить. Вот что получилось:
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "stdio.h"
#include <iostream>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int x,y;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
// общий класс
class MyShape
{ public:
int col;
void Show(int _x, int _y) //текущее положение
{ x=_x; y=_y; };
void cwet(int cwet) //цвет изменить
{ col=cwet; };
void move(int nx, int ny) // движение
{x=nx; y=ny; }
void Hide() // скрыть
{ cwet(clBtnFace);
Draw();}
virtual void Draw()=0; // отображать на экране
} ;
//---------------------------------------------------------------------------
// Êðåñò
class Krest:public MyShape
{
public:
Krest (int nx, int ny, int c)
{
x=nx; y=ny; col=c;
}
void Draw()
{ Form1->PaintBox1->Canvas->Font->Size=22;
Form1->PaintBox1->Canvas->Font->Color=(col);
Form1->PaintBox1->Canvas->TextOut(x+10,y+5,"*");
Form1->PaintBox1->Canvas->TextOut(x,y+20,"***");
Form1->PaintBox1->Canvas->TextOut(x+10,y+35,"*");
}
} ;
// Êðóã
class Krug:public MyShape
{
public:
Krug (int nx, int ny, int c)
{
x=nx; y=ny; col=c;
}
void Draw()
{ Form1->PaintBox1->Canvas->Font->Size=22;
Form1->PaintBox1->Canvas->Font->Color=(col);
Form1->PaintBox1->Canvas->TextOut(x+17.5,y+5,"*");
Form1->PaintBox1->Canvas->TextOut(x,y+20,"* *");
Form1->PaintBox1->Canvas->TextOut(x,y+35,"* *");
Form1->PaintBox1->Canvas->TextOut(x+17.5,y+50,"*");
}
} ;
// Ëèíèÿ
class Line:public MyShape
{
public:
Line (int nx, int ny, int c)
{
x=nx; y=ny; col=c;
}
void Draw()
{ Form1->PaintBox1->Canvas->Font->Size=22;
Form1->PaintBox1->Canvas->Font->Color=(col);
Form1->PaintBox1->Canvas->TextOut(x,y,"***");
}
} ;
Krest *K1;
Krug *K2;
Line *L1;
//---------------------------------------------------------------------------
void __fastcall TForm1::MoveClick(TObject *Sender)
{
Form1->Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Timer1->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Otobr(TObject *Sender)
{
Krest K1(7,5, clMenuHighlight);
K1.Draw() ;
Krug K2(5,70, clMenuHighlight);
K2.Draw() ;
Line L1(7,150, clMenuHighlight);
L1.Draw() ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CwetClick(TObject *Sender)
{ Krest K1(7,5, clLime);
K1.Draw() ;
Krug K2(5,70, clRed);
K2.Draw() ;
Line L1(7,150, clAqua);
L1.Draw() ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//- Form1->Timer1->Enabled=false;
Krest K1(7,5, clMenuHighlight);
Krug K2(5,70, clMenuHighlight);
Line L1(7,150, clMenuHighlight);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ Krest K1(7,5, clLime);
Krug K2(5,70, clRed);
Line L1(7,150, clAqua);
// собственно движение
for (int i=1; i<1000; i++)
{
K1.Hide();
K1.Show(i+7,i+5);
K1.move(i,5);
K1.cwet(clLime);
K1.Draw() ;
K2.Hide();
K2.move(i,70);
K2.cwet(i);
K2.Draw();
L1.Hide();
L1.move(i,150);
L1.cwet(i);
L1.Draw();
}
//
}
//---------------------------------------------------------------------------
С движением фигур проблема и написано коряво немножко. Помогите пожалуйста.