Нужно написать программу, которая в заданном порядке выводит звезды на форму и совершает их перемещение в том же порядке, одну за другой. Задачу нужно реализовать с помощью очереди, количество объектов задавать вручную и их скорость перемещения. Каждый объект должен быть случайного цвета.
Есть работающий вариант программы:
class Star {
public:
int x, y, R, r;
Star(int x, int y, int R, int r) {
this->x = x;
this->y = y;
this->R = R;
if (R < r) {
this->r = R - 1;
} else {
this->r = r;
}
}
};
std::queue<Star> qu;
std::queue<Star> tm;
TColor myColor;
Star currentStar(0, 0, 0, 0);
int count;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
count = 31;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Star star(StrToInt(Edit1->Text),
StrToInt(Edit2->Text),
StrToInt(Edit3->Text),
StrToInt(Edit4->Text));
qu.push(star);
count = 0;
}
//---------------------------------------------------------------------------
void DrawStar(Star star) {
Form1->Canvas->Pen->Width = 3;
Form1->Canvas->Pen->Color = myColor;
Form1->Canvas->MoveTo(star.x, star.y - star.R);
Form1->Canvas->LineTo(star.x + star.r*1.414, star.y - star.r*1.414);
Form1->Canvas->LineTo(star.x + star.R, star.y);
Form1->Canvas->LineTo(star.x + star.r*1.414, star.y + star.r*1.414);
Form1->Canvas->LineTo(star.x, star.y + star.R);
Form1->Canvas->LineTo(star.x - star.r*1.414, star.y + star.r*1.414);
Form1->Canvas->LineTo(star.x - star.R, star.y);
Form1->Canvas->LineTo(star.x - star.r*1.414, star.y - star.r*1.414);
Form1->Canvas->LineTo(star.x, star.y - star.R);
}
bool MyUpdate() {
if (count < 30) {
currentStar.x++;
currentStar.y++;
count++;
} else {
if (qu.size() > 0) {
currentStar = qu.front();
qu.pop();
tm.push(currentStar);
myColor = RGB(rand() % 255, rand() % 255, rand() % 255);
count = 0;
} else {
if (tm.size() <= 0) {
return false;
}
qu = tm;
for (int i = 0; i < tm.size(); i++) {
tm.pop();
}
}
return false;
}
return true;
}
void __fastcall TForm1::FormPaint(TObject *Sender)
{
if (MyUpdate()) {
DrawStar(currentStar);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Form1->Repaint();
}
//---------------------------------------------------------------------------
Делалось все в RAD Studio, все работает.
Как сделать реализацию этой задачи проще? Мне говорили что есть метод попроще.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как в современном (c++11 и более позднем) объявлять статические переменные в классе и можно ли вообще это делать?
Есть задание, написать свой майнер, за основу взяли https://githubcom/nicehash/nheqminer, для тестов выбрал nanopool, использую библиотеку "boost"
Написал несложную программу на с++ в Qt CreatorПрограмма работала
В общем у меня есть регулярк она должна очистить все и выдать числа