Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
SK01736
3 / 3 / 2
Регистрация: 21.01.2011
Сообщений: 29
1

На форме расположены 5 Label-ов и кнопка. Создать массив, содержащий 8 различных цветов

29.04.2011, 20:33. Просмотров 1048. Ответов 6
Метки нет (Все метки)

на форме расположены 5 меток(label) и кнопка.Создать массив,содержащий 8 различный цветов.Цветовой фон в метках меняется с различной скоростью (как вращается барабан). При нажатии на кнопку ,изменение цветов прекращается,а на экране появляется надпись"В N ячейках совпал цвет"(N-максимальное количество ячеек с совпадающим цветом).

не пойму как сделать!! ХЕЛП!
пробовал с случайными числами возится появился warning типа преобразование int to TColor или char to TColor и незапускалась вообще....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2011, 20:33
Ответы с готовыми решениями:

Создать массив, содержащий 7 различных целых чисел
Кто разбирается в паскале, помогите пожалуйста решить задачу: Создайте...

На форме располагаются компоненты: редакторы Edit и Memo, Label, ListBox, кнопка "Да" и кнопка Close
На форме располагаются компоненты: редакторы Edit и Memo, Label, ListBox, ...

Создайте новое приложение, в котором на форме расположены Поле ввода, Метка и Кнопка
Создайте новое приложение, в котором на форме расположены Поле ввода, Метка и...

Массив цветов. Как изменить цвет текста label при отталкивании объекта от формы
Здравствуйте! Имеется вот такая программа, нужно чтобы при отталкивании лэйбла...

Построить целочисленный массив, содержащий номера тех строк массива А, элементы которых расположены в возрастающем порядке.
Нужно решить эту задачу в C# Дан прямоугольный массив А. Построить...

6
Maluda
1240 / 570 / 107
Регистрация: 18.08.2009
Сообщений: 803
Завершенные тесты: 1
29.04.2011, 20:59 2
Уже радует хотя бы то, что не тупо задачу задал, а хоть сам попробовал решить,
но всё равно, пока сам алгоритм не построишь, никто задачу за тебя не решит.
А вот, если при построении алгоритма возникнут вопросы, тогда с радостью.

Я не знаю, где у тебя там барабаны :-)
Набросал тебе пример, где при каждом нажатии на кнопку в случайном порядке
меняется цвет метки, дальше пробуй сам.
C++
1
2
3
4
5
6
7
8
9
10
// ---------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
    Label1->Transparent = false;
    const int iMaxColorArray = 8;
    int iColorArray[] = {
        clBlack, clMaroon, clBlue, clPurple, clFuchsia, clWhite, clRed, 15793151
    };
    Label1->Color = TColor(iColorArray[Random(iMaxColorArray)]);
}
// ---------------------------------------------------------------------------
0
SK01736
3 / 3 / 2
Регистрация: 21.01.2011
Сообщений: 29
29.04.2011, 21:47  [ТС] 3
Цитата Сообщение от Maluda Посмотреть сообщение
Уже радует хотя бы то, что не тупо задачу задал, а хоть сам попробовал решить,
но всё равно, пока сам алгоритм не построишь, никто задачу за тебя не решит.
А вот, если при построении алгоритма возникнут вопросы, тогда с радостью.

Я не знаю, где у тебя там барабаны :-)
Набросал тебе пример, где при каждом нажатии на кнопку в случайном порядке
меняется цвет метки, дальше пробуй сам.
C++
1
2
3
4
5
6
7
8
9
10
// ---------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
    Label1->Transparent = false;
    const int iMaxColorArray = 8;
    int iColorArray[] = {
        clBlack, clMaroon, clBlue, clPurple, clFuchsia, clWhite, clRed, 15793151
    };
    Label1->Color = TColor(iColorArray[Random(iMaxColorArray)]);
}
// ---------------------------------------------------------------------------
спасибо, но при обработке вылезла проблема, сделал что бы при запуске формы цвета менялись пока не нажмешь на кнопку и программа при запуске не отображается....((((
вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//..................
int k;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
k=10;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
for(; ; )//бесконечный цикл
{
Label1->Transparent = false;
Label2->Transparent = false;
Label3->Transparent = false;
Label4->Transparent = false;
Label5->Transparent = false;
const int iMaxColorArray = 8;
int iColorArray[] = {
clBlack, clMaroon, clBlue, clPurple, clFuchsia, clWhite, clRed, 15793151
};
Label1->Color = TColor(iColorArray[random(iMaxColorArray)]);
Label2->Color = TColor(iColorArray[random(iMaxColorArray)]);
Label3->Color = TColor(iColorArray[random(iMaxColorArray)]);
Label4->Color = TColor(iColorArray[random(iMaxColorArray)]);
Label5->Color = TColor(iColorArray[random(iMaxColorArray)]);
if(k==10) break;
}
}
//................................
Добавлено через 14 минут
а если убрать цикл то запускается, но цвета все время одни и те же на тех же лейблах(((

Добавлено через 7 минут
Все Я понял в чем проблема, создание формы не произойдет пока цикл не закончится, а он бесконечный....
А когда пробовал через кнопку, то оно в тупую залагивает и приходится закрывать...
Можно ли задать скорость замены цветов, тоесть каждые N секунд меняется цвет, где N случайное число от 0 до 3 сек???
0
Maluda
1240 / 570 / 107
Регистрация: 18.08.2009
Сообщений: 803
Завершенные тесты: 1
29.04.2011, 23:56 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <vector>
typedef std::vector<TLabel*>TLabelVec;
 
#define EACH_LABEL_RANDOM true
 
class TLabelArray {
private:
    TLabelVec FLabelVec;
 
    const TColor CreateRandomColor() {
        const int iColorArray[] = {
            clBlack, clMaroon, clBlue, clPurple, clFuchsia, clWhite, clRed,
            15793151};
        return TColor(iColorArray[random(ARRAYSIZE(iColorArray))]);
    }
 
public:
 
    TLabelArray() {
    }
 
    TLabelArray(const TLabelVec &ValLabelVec) {
        FLabelVec = ValLabelVec;
    }
 
    void AddLabel(TLabel *ValLabel) {
        FLabelVec.push_back(ValLabel);
    }
 
    void RemoveLabel(TLabel *ValLabel) {
        for (TLabelVec::iterator it = FLabelVec.begin();
        it != FLabelVec.end(); ++it) {
            if ((*it) == ValLabel) {
                FLabelVec.erase(it);
                break;
            }
        }
    }
 
    void SetTransparent(const bool &bTransp) {
        for (int i = 0; i < FLabelVec.size(); i++) {
            FLabelVec[i]->Transparent = bTransp;
        }
    }
 
    void SetColor(const TColor &ValColor) {
        for (int i = 0; i < FLabelVec.size(); i++) {
            FLabelVec[i]->Color = ValColor;
        }
    }
 
    void SetRandomColor(const bool &bRandomInEachLabel) {
        const TColor ColorPrev = this->CreateRandomColor();
        for (int i = 0; i < FLabelVec.size(); i++) {
            FLabelVec[i]->Color = bRandomInEachLabel ?
                this->CreateRandomColor() : ColorPrev;
        }
    }
 
};
 
TLabelArray *LabelArrayPtr;
 
// ---------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender) {
    Randomize();
 
    LabelArrayPtr = new TLabelArray();
    LabelArrayPtr->AddLabel(Label1);
    LabelArrayPtr->AddLabel(Label2);
    LabelArrayPtr->AddLabel(Label3);
    LabelArrayPtr->AddLabel(Label4);
    LabelArrayPtr->AddLabel(Label5);
 
    LabelArrayPtr->SetTransparent(false);
 
    LabelArrayPtr->RemoveLabel(Label2);
 
    Timer1->Enabled = true;
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender) {
    if (LabelArrayPtr) {
        // можно, чтобы в каждой метке цвет менялся или синхронно
        LabelArrayPtr->SetRandomColor(EACH_LABEL_RANDOM);
    }
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
    Timer1->Enabled = false;
    LabelArrayPtr->SetTransparent(true);
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender) {
    if (LabelArrayPtr) {
        delete LabelArrayPtr;
    }
}
// ---------------------------------------------------------------------------
Добавлено через 1 минуту
Здесь при загрузке приложения, пока не нажмёшь на кнопку будет меняться цвет в метках
1
SK01736
3 / 3 / 2
Регистрация: 21.01.2011
Сообщений: 29
30.04.2011, 13:46  [ТС] 5
Цитата Сообщение от Maluda Посмотреть сообщение
void __fastcall TForm1::Timer1Timer(TObject *Sender) { if (LabelArrayPtr) { // можно, чтобы в каждой метке цвет менялся или синхронно LabelArrayPtr->SetRandomColor(EACH_LABEL_RANDOM); }
Можешь написать что бы менялись по часовой стрелке?

Добавлено через 37 минут
И можно ли задать время таймера?

Добавлено через 7 минут
Все Я уже сделал таймер сам)
0
Maluda
1240 / 570 / 107
Регистрация: 18.08.2009
Сообщений: 803
Завершенные тесты: 1
30.04.2011, 15:34 6
Я так понял, что у тебя метки расположены по часовой стрелке,
нумерация в их названии идёт в порядке возрастания?
То есть, "Label1", "Label2" и т.д.?

Потом мне не совсем понятно, что ты хочешь?
Каждый тик таймера новый цвет должен пройти по всем меткам?
Или каждый тик случайный цвет в одной метке, следующий проход
по часовой стрелке новый случайный цвет в другой?

Добавлено через 1 час 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <vector>
typedef std::vector<TLabel*>TLabelVec;
 
#define EACH_LABEL_RANDOM true
 
class TLabelArray {
private:
    TLabelVec FLabelVec;
 
public:
 
    TLabelArray() {
    }
 
    TLabelArray(const TLabelVec &ValLabelVec) {
        FLabelVec = ValLabelVec;
    }
 
    void AddLabel(TLabel *ValLabel) {
        FLabelVec.push_back(ValLabel);
    }
 
    void RemoveLabel(TLabel *ValLabel) {
        for (TLabelVec::iterator it = FLabelVec.begin(); it != FLabelVec.end();
            ++it) {
            if ((*it) == ValLabel) {
                FLabelVec.erase(it);
                break;
            }
        }
    }
 
    void SetTransparent(const bool &bTransp) {
        for (unsigned int i = 0; i < FLabelVec.size(); i++) {
            FLabelVec[i]->Transparent = bTransp;
        }
    }
 
    void SetColor(const TColor &ValColor) {
        for (unsigned int i = 0; i < FLabelVec.size(); i++) {
            FLabelVec[i]->Color = ValColor;
        }
    }
 
    void SetRandomColor(const bool &bRandomInEachLabel) {
        const TColor ColorPrev = this->CreateRandomColor();
        for (unsigned int i = 0; i < FLabelVec.size(); i++) {
            FLabelVec[i]->Color = bRandomInEachLabel ? this->CreateRandomColor()
                : ColorPrev;
        }
    }
 
    TLabel *GetLabel(const unsigned int&iLabelIndex) {
        if (iLabelIndex < FLabelVec.size()) {
            return FLabelVec[iLabelIndex];
        }
        else
            throw Exception("<" + AnsiString(iLabelIndex)
            + "> is out of range <" + AnsiString(FLabelVec.size()) + ">!!!");
    }
 
    const unsigned int GetLabelArraySize() {
        return FLabelVec.size();
    }
 
    static const TColor CreateRandomColor() {
        const int iColorArray[] = {
            clBlack, clMaroon, clBlue, clPurple, clFuchsia, clWhite, clRed, 15793151
        };
        return TColor(iColorArray[random(ARRAYSIZE(iColorArray))]);
    }
 
};
 
TLabelArray *LabelArrayPtr;
 
// ---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
    Timer1->Enabled = false;
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender) {
    if (LabelArrayPtr) {
        static unsigned int iLabelIndex = 0;
        LabelArrayPtr->SetColor(this->Color);
        LabelArrayPtr->GetLabel(iLabelIndex)->Color = TLabelArray::CreateRandomColor();
        if (iLabelIndex < (LabelArrayPtr->GetLabelArraySize() - 1)) {
            iLabelIndex++;
        }
        else {
            iLabelIndex = 0;
        }
    }
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender) {
    Randomize();
 
    LabelArrayPtr = new TLabelArray();
    LabelArrayPtr->AddLabel(Label1);
    LabelArrayPtr->AddLabel(Label2);
    LabelArrayPtr->AddLabel(Label3);
    LabelArrayPtr->AddLabel(Label4);
    LabelArrayPtr->AddLabel(Label5);
 
    LabelArrayPtr->SetTransparent(false);
 
    Timer1->Interval = 50;
    Timer1->Enabled = true;
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender) {
    if (LabelArrayPtr) {
        delete LabelArrayPtr;
    }
}
// ---------------------------------------------------------------------------
Добавлено через 3 минуты
Я там модифицировал класс с метками и сделал, наверное, то, что ты хотел))
0
SK01736
3 / 3 / 2
Регистрация: 21.01.2011
Сообщений: 29
30.04.2011, 16:24  [ТС] 7
Все Спасибо остальное сам доделал, должно пойти)
0
30.04.2011, 16:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2011, 16:24

Задание: Определить сколько различных сигналов могло быть подано m флажками различных цветов
Задание: Определить сколько различных сигналов могло быть подано m флажками...

Организуйте массив, содержащий 15 различных символов
Организуйте массив, содержащий 15 различных символов. Отсортируйте его по...

Создать проект содержащий: ComBobox, StringGrid, Button, RadioGroup, Label
Здравствуйте. Я не давно познакомилась с делфи 2007. Мне дали задание создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru