Ниже вы увидите, что у меня есть для создания случайного массива. Мне нужно упорядочить элементы от наибольшего к наименьшему, а затем иметь возможность помещать их в текстовые поля в соответствии с классом, выбранным пользователем. Это для генератора способностей DnD 4e. Мне нужно иметь возможность поставить наивысшие оценки способностей в наиболее подходящую для этого класса область.

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    'Dim randstr As New Random

    'Dim a As Integer
    'Dim b As Integer
    'Dim c As Integer
    'Dim d As Integer
    'Dim h As Integer
    'Dim f As Integer


    'a = randstr.Next(3, 18)
    'b = randstr.Next(3, 18)
    'c = randstr.Next(3, 18)
    'd = randstr.Next(3, 18)
    'h = randstr.Next(3, 18)
    'f = randstr.Next(3, 18)

    Static randomNumberGenerator As New System.Random


    Dim randomNumbers(6) As Integer ' Create the array

    Dim smallestNumber As Integer = 3 ' Set the lower bounds

    Dim largestNumber As Integer = 18 ' Set the upper bounds



    For i = 0 To 6 ' loop through each element in the array

        randomNumbers(i) = randomNumberGenerator.Next(smallestNumber, largestNumber)

    Next

    If CbClass.SelectedItem = "Fighter" Then

    End If
End Sub
0
Morrg 30 Дек 2015 в 07:43

2 ответа

Лучший ответ

Это отсортирует ваш массив от наибольшего к наименьшему - после этого кода ..

For i = 0 To 6 ' loop through each element in the array

    randomNumbers(i) = randomNumberGenerator.Next(smallestNumber, largestNumber)

Next

Добавить

Array.Sort(randomNumbers)
Array.Reverse(randomNumbers)

Чтобы добавить их в текстовые поля

TextBox1.Text = randomNumbers(0).ToString
TextBox2.Text = randomNumbers(1).ToString
TextBox3.Text = randomNumbers(2).ToString
TextBox4.Text = randomNumbers(3).ToString
TextBox5.Text = randomNumbers(4).ToString
TextBox6.Text = randomNumbers(5).ToString

Не забывая, конечно, изменить имена вышеперечисленных текстовых полей на те, которые называются у вас.

Чтобы установить характеристики персонажа, вы, вероятно, захотите что-то вроде этого

If CbClass.SelectedItem = "Fighter" Then
    Strength = randomNumbers(0)
    Aglity = randomNumbers(1)
    Health = randomNumbers(2)
    Intellect = randomNumbers(3)
End If

И так далее.

0
David Wilson 3 Янв 2016 в 13:15

Это будет самый простой способ сгенерировать и упорядочить номера:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

    Static randomNumberGenerator As New System.Random()

    Dim smallestNumber As Integer = 3 ' Set the lower bounds
    Dim largestNumber As Integer = 18 ' Set the upper bounds
    Dim randomNumbers() As Integer = _
        Enumerable _
            .Range(0, 6) _
            .Select(Function (x) randomNumberGenerator.Next(smallestNumber, largestNumber + 1)) _
            .OrderByDescending(Function (x) x) _
            .ToArray()

    ' Rest of your code here

End Sub

Помните, что вызов randomNumberGenerator.Next(smallestNumber, largestNumber + 1), который + 1 важен, поскольку второй параметр этого вызова является исключительной верхней границей.

Когда вы запустите этот код, массив randomNumbers будет содержать что-то вроде этого:

randomNumbers

Затем вы можете просто назначить такие значения, как Dim x = randomNumbers(0) и т. Д.

0
Community 20 Июн 2020 в 09:12