Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / С++Builder / Laba3 / Task2 / Ball

.cpp
Скачиваний:
14
Добавлен:
17.04.2013
Размер:
2.52 Кб
Скачать
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Ball.h"
#include <math.h>

//---------------------------------------------------------------------------
#pragma package(smart_init)

CBall::CBall(TImage* _Img)
{
   x=220;
   y=0;
   Img=_Img;
   xc=(Img->Width) /2;
   yc=(Img->Height)/2-200;
   R=89;
}

void CBall::MoveToXY(int X, int Y)
{
//Стираем старое положение
   Img->Canvas->Pen->Color = clWhite;
   Img->Canvas->Brush->Color = clWhite;
   Img->Canvas->Ellipse(x-10, y-10, x+10, y+10);
//устанавливаем новое положение
   x=X+xc;
   y=-Y+yc;
//рисуем в новом положении
   Img->Canvas->Pen->Color = clBlue;
   Img->Canvas->Brush->Color = clBlue;
   Img->Canvas->Ellipse(x-10, y-10, x+10, y+10);
   Img->Canvas->Pen->Color = clWhite;
   Img->Canvas->Brush->Color = clWhite;
   Img->Canvas->Ellipse(x-2-3, y-2-3, x+2-3, y+2-3);
}

CSupport::CSupport(TImage* _Img)
{
   Img=_Img;
   xc=(Img->Width) /2;
   yc=(Img->Height)/2-200;
   x1=x2=xc;
   y1=y2=yc;
   R=100;
   CurAngle=M_PI+0.2;
   Draw(CurAngle);
   Img->Canvas->Brush->Color = clBlack;
   TRect rr;
for (int i=0; i<=300; i+=60)
{
if (i%120) Img->Canvas->Brush->Color = clBlack;
else Img->Canvas->Brush->Color = clAqua;
rr.Left=330;
rr.Right=340;
rr.Bottom=20+i;
rr.Top=80+i;
   Img->Canvas->FillRect(rr);
}
}

void CSupport::Hide()
{
x1=R*cos(CurAngle);
y1=R*sin(CurAngle);

for( float A=CurAngle;A<=CurAngle+M_PI/2;A+=0.1)
        {
        x2=R*cos(A);
        y2=R*sin(A);
        Img->Canvas->Pen->Width=3;
        Img->Canvas->Pen->Color = clWhite;
        Img->Canvas->MoveTo(xc+x1,yc-y1);
        Img->Canvas->LineTo(xc+x2,yc-y2);
        Img->Canvas->Pen->Width=1;
        x1=x2;
        y1=y2;
        }
}

void CSupport::Check(int x)
{
if (x>=320-xc) throw (1);
}

void CSupport::Draw(double dA)
{
Hide();
CurAngle=dA;

x1=R*cos(CurAngle);
y1=R*sin(CurAngle);

for( float A=CurAngle;A<=CurAngle+M_PI/2;A+=0.1)
        {
        x2=R*cos(A);
        y2=R*sin(A);
        Img->Canvas->Pen->Width=3;
        Img->Canvas->Pen->Color = clRed;
        Img->Canvas->Brush->Color = clRed;
        Img->Canvas->MoveTo(xc+x1,yc-y1);
        Img->Canvas->LineTo(xc+x2,yc-y2);
        Img->Canvas->Pen->Width=1;
        x1=x2;
        y1=y2;
        }
}

int CBall::ComputeBallY(int X, double AA)
{
   if (X>R*cos(AA+M_PI/2)) throw (0);
   return -sqrt(R*R-X*X);
}
Соседние файлы в папке Task2