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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2012, 12:26   #1
Marianna22
Пользователь
 
Регистрация: 04.05.2012
Сообщений: 24
По умолчанию класс фигур

Всем доброго времени суток!
У меня есть такая задача. Используя псевдографику, создать класс фигур, нарисовать крест, круг и линию. Закрасить другим цветом и переместить. Вот что получилось:
Код:
//---------------------------------------------------------------------------

#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();


  }
//
}
//---------------------------------------------------------------------------
С движением фигур проблема и написано коряво немножко. Помогите пожалуйста.
Marianna22 вне форума Ответить с цитированием
Старый 24.12.2012, 00:53   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Ты как-то слишком сурово ставишь цвет двум последним фигурам в цикле.
Son Of Pain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cоздать класс жидкость. определить конструкторы деструкторы и функцию печати. создать публик производный класс. (С++) Динар Габбасов Помощь студентам 0 28.05.2012 18:44
Добавить класс в проект2,похожий на класс из проекта1!оба проекта есть! xeops C# (си шарп) 0 15.05.2012 20:31
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. Человек_Борща Общие вопросы Delphi 8 27.02.2012 23:24
Описать класс-родитель и класс-потомок. Delphi 7 Andrew_M Помощь студентам 0 15.01.2011 14:42