Из разряда, искал в инете - не нашел, пусть следующий кому понадобиться, будет рад =)
Задача: точка двигается по окружности. при нажатии < скорость уменьшается, при нажатии > скорость увеличивается.
IDE: c++ buider xe
dot.cpp
//---------------------------------------------------------------------------
#include //предназначена для включения в текст
//проекта заголовочного файла,
//ссылающегося на описания классов
//библиотеки компонентов.
#pragma hdrstop //кэширует только нужные нам операции
//из vcl.h
#include "dot.h" //там описаны классы нашей программы
#include "math.h" //функции sin и cos
//---------------------------------------------------------------------------
#pragma package(smart_init) //модули, включенные в пакет,
//инициализируются в порядке их
//зависимости друг от друга
#pragma resource "*.dfm" // подключает форму
TForm1 *Form1;
int x,y,R=190; //параметры окружности, по которой
//двигается точка
float j=11,step=0.05; //j - угол, на который двигается точка.
//step - шаг движения (чем больше шаг, тем
//быстрее скорость движения)
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->Timer1->Enabled=False; //останавливаем таймер, который и
//двигает нашу точку
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Form1->Canvas->Pen->Color=clBtnFace; //закрашиваем в цвет фона
Form1->Canvas->Ellipse(x-2,y-2,x+2,y+2); //предыдущую точку
j=j+step; //двигаем точку на step шагов
x = R*cos(j) + 200; //и с помощью геометрии вычисляем
y = R*sin(j) + 200; //координаты точки на окружности,
//куда и поставим нашу точку
Form1->Canvas->Pen->Color=clBlack; //устанавливаем цвет - черный
Form1->Canvas->Ellipse(x-2,y-2,x+2,y+2); //ставим точку в виде круга
//координаты середины x,y
//радиус 2
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Timer1->Enabled=true; //запускаем таймер, который и
//двигает нашу точку
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
step = Form1->TrackBar1->Position / static_cast(10000);
//меняем шаг при изменении ТрекБара.
} //поскольку позиция ТрекБара вычисляется в int
//а у нас шаг (step) во float, то переводим
//во float делением на 10'000,
//что даст 3 знака после запятой.
//static_cast(10000) - переводит из 10000 в 10000.0
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyPress(TObject *Sender, wchar_t &Key)
{
if (Key == '<' || Key == ',') //изменяем шаг при нажатии
{ //определенных клавиш
step=step-0.001;
}
if (Key == '>' || Key == '.')
{
step=step+0.001;
}
Form1->TrackBar1->Position=step*10000; //передвигаем ТрекБар
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
KeyPreview = True; //разрешаем программе следить за клавиатурой
}
//---------------------------------------------------------------------------
dot.h
//---------------------------------------------------------------------------
#ifndef dotH
#define dotH
//---------------------------------------------------------------------------
#include
#include
#include
#include