Создание случайных неповторяющихся цветов для меток в Visual Basic 6 - PullRequest
0 голосов
/ 26 октября 2018

Я хочу назвать случайный цвет между 8 разными цветами и отобразить его в виде метки в качестве его заднего цвета в Visual Basic.Как я могу отобразить цвета без повторения цвета, который был вызван на определенной метке?

Например, если красный цвет вызывается и отображается в метке A1, как я могу убедиться, что красный цвет выиграл?не может быть вызван и отображен в labelB1, labelC1 или labelD1, но может быть вызван в labelA13 или labelB16?

Ниже приведено изображение, помогающее понять приведенный выше пример.

enter image description here

1 Ответ

0 голосов
/ 29 октября 2018

Используйте этот код, чтобы составить список цветов, а затем выбивайте их из списка при каждом его использовании.

Private Function RandomizeLabelColors() As Integer
    Randomize()
    Dim listOfColors As List(Of Color) = {Color.Red, Color.Blue, Color.Green, Color.Orange}.ToList
    Dim labels As List(Of Label) = {Label1, Label2, Label3, Label4, Label5, Label6, Label7, Label8,
        Label9, Label10, Label11, Label12, Label13, Label14, Label15, Label16}.ToList
    Dim i As Integer = 0
    Do Until listOfColors.Count = 0
        Dim targetIndex As Integer = Int(Rnd() * listOfColors.Count)
        labels(i).BackColor = listOfColors(targetIndex)
        labels(i + 4).BackColor = listOfColors(targetIndex)
        labels(i + 8).BackColor = listOfColors(targetIndex)
        labels(i + 12).BackColor = listOfColors(targetIndex)
        listOfColors.RemoveAt(targetIndex)
        i += 1
    Loop
    Return 0
End Function

У меня есть метки в сетке 4x4.

-Mg

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