Страница: 1 | 2 | 3 |
Вопрос: Вопрос по Randomize
Добавлено: 09.04.06 05:05
Автор вопроса: Павел | Web-сайт:
В VB я далеко еще не гуру, потому у меня есть один вопрос.
Скажите, вот, допустим, у меня есть на форме 3 объекта: Picture1, Picture2, Picture3. Как сдалать так, чтобы в них загружались рисунки случайным образом и порядке???
Ну, к примеру, в Picture1-рисунок 3, Picture2-рис. 1, Picture1 - рис. 2?????
Ответы
Всего ответов: 35
Номер ответа: 1
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #1
Добавлено: 09.04.06 10:08
Вопрос рызмыт. Где у тебя эти "рис. 1", "рис. 2" и "рисунок 3" хранятся? В файлах, в переменных типа StdPicture?
Номер ответа: 2
Автор ответа:
KEP
Вопросов: 44
Ответов: 119
Профиль | | #2
Добавлено: 09.04.06 10:24
Через Randomize
Номер ответа: 3
Автор ответа:
Nj
ICQ: 223663115
Вопросов: 21
Ответов: 285
Профиль | | #3
Добавлено: 09.04.06 16:13
Randomize Можно еще по-QB Randomize Timer
....
Я плохо помню, но знаю, что VB поддерживает
QB-фишки.
В школе нас учили задавать число случайное так
Я могу ошибаться, у себя не проверял - может кто поправит. В переменную A записано случайное число не то от 0 до 5 , не то от 1 до 5 - я опять же, не помню.
INt - обязательно, т.к. rnd возвращает дробное...
Вообщем пробуй.
Pict1=PictureBank если хранишь изображения в других пикчербоксах, имиджах или еще в каком массиве...
Номер ответа: 4
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #4
Добавлено: 09.04.06 16:39
'intMin - минимум
'intMax - максимум
'Возвращает случайное число от intMin до intMax включительно
Call Randomize
A = CInt(Rnd * (intMax - intMin)) + intMin
Повторюсь, см. пост #1
Номер ответа: 5
Автор ответа:
Nj
ICQ: 223663115
Вопросов: 21
Ответов: 285
Профиль | | #5
Добавлено: 09.04.06 17:17
Одно ясно точно - для случайной загрузки картинок надо использовать массив с этими рисункам и задавать случайные индексы при помощи описанной выше функции рнд.
Номер ответа: 6
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #6
Добавлено: 09.04.06 20:47
Номер ответа: 7
Автор ответа:
Programmer
Вопросов: 71
Ответов: 246
Профиль | | #7
Добавлено: 09.04.06 21:03
Рнд делается так:
a = rnd * 3
Теперь а может иметь значение от 0 до 3.
Если надо от 1 до 3, тогда:
a = (rnd * 2) + 1
Все просто!
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 10.04.06 15:16
Randomize Timer
Dim rndnum as long
Dim FileArray(2) as String
FileArray(0) = "C:\1.bmp"
FileArray(1) = "C:\2.bmp"
FileArray(2) = "C:\3.bmp"
rndnum = int(rnd*Ubound(FileArray))
Picture1.Picture = LoadPictrure(FileArray(rndnum))
Извыняюсь, не дома, не тестил...
Номер ответа: 9
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #9
Добавлено: 10.04.06 15:43
Номер ответа: 10
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #10
Добавлено: 10.04.06 15:50
Cint - преобразовует значение в переменной к типу Integer
int - отрезает дробную часть.
Номер ответа: 11
Автор ответа:
Nj
ICQ: 223663115
Вопросов: 21
Ответов: 285
Профиль | | #11
Добавлено: 10.04.06 22:00
Я вот решил и для себя тоже разобраться с этой функцией - я не притендую на Нобелевскую премию, но возможно сей код будет полезен. Он универсален для создания любых уникальных последовательностей.
Для трех PictureBox под загрузку и базы из 10 картинок:
Кинем на форму лист с 10 путями к картинкам - PictList.
Рекомендую вместо Pict1, Pict2, Pict3 использовать массив
контролов Pict(0), Pict(1), Pict(2)
Const BaseMaxIndex = 9 ' = PictList.ListCount
Const TargetMaxIndex = 2 '= Pict.UBound
Dim rndNum As Long
Dim UsedIndex(TargetMaxIndex) As String
Randomize Timer
For x = 0 To TargetMaxIndex
ReRND:
rndNum = CInt(Rnd * (BaseMaxIndex))
If x = 0 Then
UsedIndex(0) = rndNum
Else
For xx = 0 To x - 1
If rndNum = UsedIndex(xx) Then
GoTo ReRND
Else
UsedIndex(x) = rndNum
End If
Next xx
End If
Pict(x).Picture = LoadPictrure(PictList.List(rndNum))
Next x
End Sub
У меня работает.
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 10.04.06 22:14
Goto не солидно
Номер ответа: 13
Автор ответа:
Nj
ICQ: 223663115
Вопросов: 21
Ответов: 285
Профиль | | #13
Добавлено: 11.04.06 22:54
Номер ответа: 14
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #14
Добавлено: 11.04.06 22:57
С каких пор? Видать я от жизни отстаю...
Номер ответа: 15
Автор ответа:
Nj
ICQ: 223663115
Вопросов: 21
Ответов: 285
Профиль | | #15
Добавлено: 11.04.06 22:59
С тех пор как работает )