Страница: 1 |
У меня есть 4 frames и 4 buttons. Мне надо, чтобы при каждом запуске (или нажатии на кнопку и т. д.) четыре кнопки менялись местами. Для этого использую функцию Container. Но как сгенерировать неповторяющиеся числа (от 0 до 3), чтобы потом из них сделать index для frame? Надеюсь, вопрос понятен.
Можно решить проблему в лоб. Т.е. взять 0 и проверить возникнет ли ошибка, если да, то взять 1 и т.д. Конечно тормознуто, но работоспособно. Кода, конечно, много, но работает Public rc%(3) Private Sub GetRandom() Dim res%(1 To 4), i%, c%, dw As Boolean c% = 1 Do Until dw = True SetRandom: Randomize i% = Int(Rnd(1) * 5) If i% = 0 Then GoSub SetRandom Else res(c = i% For i% = 1 To 4 If i% <> c% Then If res(c = res(i Then GoSub SetRandom End If End If Next c% = c% + 1 If c% = 5 Then dw = True Loop For i = 0 To 3 rc(i) = res(i + 1) Next End Sub Private Sub Form_Load() GetRandom 'Дальше сам присваеваеш контейнер End Sub В свое время я придумал такой способ - Dim a(3) As Integer Private Sub Command1_Click() Страница: 1 |
Вопрос: Трудный ворпрос. Кто умный?
Добавлено: 04.05.03 14:43
Автор вопроса: USER
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
Иван
Администратор
ICQ: 147688925
Вопросов: 24
Ответов: 708
Web-сайт:
Профиль | | #1
Добавлено: 04.05.03 14:47
Номер ответа: 2
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #2
Добавлено: 04.05.03 17:51
Номер ответа: 3
Автор ответа:
aka
Вопросов: 2
Ответов: 60
Web-сайт:
Профиль | | #3
Добавлено: 05.05.03 04:47
(вставь код в форму и добавь кнопку,
в остальном разберешься)
Dim b(3) As Integer
Dim Num
Randomize
Erase b
For e = 0 To 3
up:
Num = CInt(Rnd * 3)
If b(Num) = 777 Then GoTo up
a(e) = Num
b(Num) = 777
Next e
Cls
For e = 0 To 3
Print a(e)
Next e
End Sub