Как сделать рандомайзер в visual basic 6
Перейти к содержимому

Как сделать рандомайзер в visual basic 6

  • автор:

Функция Rnd

Возвращает значение Single , содержащее псевдослучайное число.

Синтаксис

Rnd [ (число) ]

Возвращаемые значения

Если number имеет значение Rnd создает
Меньше нуля Одно и то же число каждый раз, используя число в качестве начального значения.
Больше нуля Следующее число в псевдослучайной последовательности.
Равно нулю Самое последнее созданное число.
Не предоставлено Следующее число в псевдослучайной последовательности.

Замечания

Функция Rnd возвращает значение, меньшее 1, но большее или равное нулю.

Значение Number определяет, как Rnd создает псевдослучайное число:

  • Для любого данного начального значения создается одна и та же последовательность чисел, поскольку каждый последующий вызов функции Rnd использует предыдущее значение в качестве начального для следующего числа в последовательности.
  • Перед вызовом Rnd используйте оператор Randomize без аргумента, чтобы инициализировать генератор случайных чисел с начальным значением на основе системного таймера.

Для получения случайных целых чисел в данном диапазоне, используйте следующую формулу:

Int((upperbound - lowerbound + 1) * Rnd + lowerbound) 

Здесь upperbound представляет собой самое большое число в диапазоне, а lowerbound — самое маленькое.

Для повтора последовательностей случайных чисел вызывайте функцию Rnd с отрицательным аргументом непосредственно перед использованием оператора Randomize с числовым аргументом. Использование randomize с тем же значением для number не повторяет предыдущую последовательность.

Пример

В этом примере используется функция Rnd для создания случайного целого значения от 1 до 6.

Dim MyValue As Integer MyValue = Int((6 * Rnd) + 1) ' Generate random value between 1 and 6. 

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Обратная связь

Были ли сведения на этой странице полезными?

Обратная связь

Отправить и просмотреть отзыв по

Оператор Randomize

Необязательный аргумент number — это Variant или любое допустимое числовое выражение.

Замечания

Randomize использует число для инициализации генератора случайных чисел функции Rnd , что дает ему новое начальное значение. Если опустить число, в качестве нового начального значения используется значение, возвращаемое системным таймером.

Если оператор Randomize не используется, функция Rnd (без аргументов) использует при первом вызове число, равное начальному значению, а затем использует последнее сгенерированное число в качестве начального значения.

Для повтора последовательностей случайных чисел вызывайте функцию Rnd с отрицательным аргументом непосредственно перед использованием оператора Randomize с числовым аргументом. При использовании Randomize с тем же значением аргумента number предыдущая последовательность не повторяется.

Пример

В этом примере оператор Randomize используется для инициализации генератора случайных чисел. Поскольку аргумент number не указан, Randomize использует возвращаемое значение функции Timer в качестве нового начального значения.

Dim MyValue Randomize ' Initialize random-number generator. MyValue = Int((6 * Rnd) + 1) ' Generate random value between 1 and 6. 

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Обратная связь

Были ли сведения на этой странице полезными?

Обратная связь

Отправить и просмотреть отзыв по

Как сделать рандомайзер в visual basic 6

Нравится ресурс?

Правила раздела Visual Basic: Общие вопросы

Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ !
4. Используйте теги [ code=vba ] . текст программы. [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Модераторы: SCINER, B.V.

Разработка программы «Угадай число»

Разработать программу, запустив которую вы или пользователь могли бы играть с компьютером в «Угадай число». А именно, пользователь нажимает кнопку «Загадай!», компьютер генерирует и запоминает какое-то число, Пользователь вводит свое число, программа сравнивает оба числа и выдает реплику, например, «Ваше число меньше». Пользователь вводит большее число, программа говорит, например, «Ваше число больше». Пользователь вводит меньшее число и так до тех пор, пока не угадает. Спортивный интерес заключается в том, чтобы отгадать число за минимальное количество (6-7) попыток (см. рисунок).

Основы программирования

Ÿ В данной теме вы закрепите ваше представление об операторе условия If – then. Вспомните — формула оператора условия выглядит так:

if условие then

Или, если всё умещается в одну строку:

if условие then [выражение1] else [выражение2]

Ÿ Выражение Randomize и Функция Rnd .

Часто, особенно в играх и обучалках, используют численные переменные со случайной величиной. Выражение Randomize запускает генератор случайных чисел, обычно его помещают в процедуре инициализации или в начале процедуры, в которой используются случайные числа. Для создания случайных чисел в определенном диапазоне применяют функцию Rnd .

Выражение Число* Rnd возвращает случайные числа в диапазоне от 0 до значения Число. Эти случайные числа будут вещественными..

Выражение Int ( Число * Rnd ) возвращает целые случайные числа в диапазоне от 0 до значения Число-1

Выражение 1 + Int ( First * Rnd ) — возвращает целые случайные числа в диапазоне от 1 до значения Число .

Ÿ Вы также узнаете, насколько важен порядок действий пользователя.

Рекомендуемый план разработки программы

1. Запустите Visual Basic и выберите стандартную форму.

  1. Расположите на форме в соответствии с рисунком 2 кнопки ( Command ), поле ввода ( TextBox ) и 5 меток ( Label ).
  2. Сохраните свой проект (два файла) в отдельной папке, которую назовите, например, Ugaday . Файлы назовите аналогично, например, первый файл — ugad . frm , а второй файл — ugaday . vbp
  3. Случайные числа. Теперь напишите код для первой кнопки ( Command 1), чтобы по ее нажатию образовалось и сохранилось бы в памяти компьютера некое случайное целое число в пределах от 1 до 100.

— щелкните дважды по кнопке – войдете в заготовку процедуры. Наберите в ней код, выделенный жирным шрифтом, и комментарии:

Private Sub Command1_Click()

Randomize

A = 1 + Int (100 * Rnd ) ‘Здесь 1 и 100 –диапазон случайных чисел

Label 4. Caption = Str ( A ) ‘Эту строку убрать после отладки программы!

— В разделе ( General ) объявите букву А как целочисленную переменную:

Dim A а s Integer

Примечание . Здесь А – число, Label 4. Caption – строковое свойство. Поэтому А приходится преобразовывать в строку. Это вы сделали с помощью функции Str ( ). Обратная операция (преобразования строкового выражения в число) выполняется функцией Val () (пример см. в п. 7).

  1. Первое тестирование . Сохраните опять свою программу в новой редакции, запустите и протестируйте ее. По нажатию первой кнопки в метке Label 4 каждый раз появляется новое случайное число в пределах от 1 до 100.
  2. Интерфейс . Выделите форму и в ее заголовке напишите: «Угадай число, задуманное компьютером». В заголовке первой кнопки вместо Command 1 напишите «Загадай!». На второй кнопке вместо Command 2 напишите «О К». На Label 1, Label 2 и Laabel 3 наберите текст как на рисунке. Метки Label 4 и Label 5, а также TextBox очистите от стандартного текста.
  3. Оператор If — Then. Теперь напишите код, чтобы сохранить число, которое введет пользователь. Дважды щелкните по второй кнопке (О К) – войдете в заготовку процедуры. Наберите в ней выделенный ниже код и комментарии:

Private Sub Command2_Click()

Dim B As Integer ‘ объявление локальной переменной

B = Val ( Text 1. Text ) ‘ в переменной В сохранить число, введенное в TextBox

‘Если А=В, то в метку4 поместить «Вы УГАДАЛИ!»

If A = B Then Label4.Caption = «Вы УГАДАЛИ!»

If A > B Then Label4.Caption = «Ваше число МЕНЬШЕ.»

Обратите внимание на операторы условия. Они здесь выражены без окончания End if , т.к. каждый из них написан в одной строке.

Сохраните ваш проект опять и протестируйте его. Ваша программа стала проявлять логику, интеллект! Пора научить компьютер считать число попыток угадывания.

  1. Счетчик . Будем считать за одну попытку каждое нажатие пользователя по кнопке ОК. Счетчики обычно пишут так: переменная = переменная + 1.

Добавьте в конец процедуры Command 2 следующие строки:

P = P + 1 ‘Счетчик числа попыток (или числа заходов в процедуру)

If A = B Then

Label 5. Caption = «Вы угадали число за » + Str ( P ) + » попыток(ки).»

Обратите внимание в коде на оператор условия If – Then – End if . Так как в целом оператор выражен в несколько строк, в виде блока, то в конце блока пишут End if .

Чтобы счетчик считал правильно, надо переменную Р объявить в разделе General (так же, как и переменную А), а также придать ей значение, равное 0. Лучше всего обнулить P в процедуре Command 1_ Click (), добавив в нее строку

  1. Удалите или заблокируйте в программе ту строку, в которой вы выводили значение задуманного компьютером числа ( Label 4. Caption = Str ( A ) ). Сохраните опять свой проект и убедитесь, что ваша программа работает удовлетворительно. Чтобы программа работала на хорошо и отлично, выполните все пункты следующего раздела.

Развитие программы

1. Порядок действий пользователя. Проблема заключается в том, что пользователь, как известно, – не программист. Он может (и имеет моральное право) не обратить внимания на кнопку «Загадай!», а сразу ввести свое число и нажать OK . А вы не имели это ввиду. Это может вызвать какой-либо сбой в работе, так как отгадываемое число не выбрано. Попробуйте сделать так, чтобы для пользователя была бы в начале доступна только кнопка «Загадай!». Вот подсказка, вставьте в процедуру для второй кнопки следующие значения свойств:

Command2.Enabled = False ‘ Enabled — доступный

Text 1. Enabled = False

Нажатие на кнопку «Загадай» должно сделать доступным поле ввода, а саму эту кнопку — недоступной до полного отгадывания задуманного числа:

Command1.Enabled = False
Command2.Enabled = True

После отгадывания задуманного числа надо опять все привести в исходное состояние, то есть обеспечить доступ к кнопке «Загадай» и сделать недоступным поле ввода (а лучше еще и кнопку OK ):

Command1.Enabled = True
Command2.Enabled = False

Text 1. Enabled = False

  1. Предупреждение . Другая проблема заключается в том, что пользователь, еще не введя число, может нечаянно нажать кнопку OK , — и ваша программа засчитает это за попытку — нечестно. Сделайте так, чтобы в подобном случае ваша программа, как ей и положено по правилам хорошего тона, выдавала бы предупреждение или подсказку. Например:

if Text 1. Text = “ ” then ‘Если строка пустая, то

MsgBox (“Введите, пожалуйста, число.”) ‘подсказать,

Exit Sub прервать ход программы и выйти в исходное положение

Найдите правильное место этого кода и вставьте его.

  1. Удаление старых значений . Дополните программу так, чтобы по нажатию (при повторном нажатии) кнопки «Загадай!» поле Text 1 очищалось бы от ранее введенного значения.

Подсказка. Введите пустую строку ( Text 1. text = ” ”) в соответствующую процедуру.

Сделайте аналогичную операцию для меток Label 4 и Label 5 на момент угадывания задуманного числа.

Важно сделать вставки в правильные места соответствующих процедур.

  1. Курсор и фокус . Надо, чтобы по нажатию кнопки «Загадай!», поле ввода TextBox стало бы активным, иначе говоря, чтобы оно было сфокусировано, чтобы в нем мигал курсор, приглашая ввести число.

Подсказка. Введите в процедуру кнопки выражение Text 1. SetFocus .

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

Подсказка: можно дополнить текст в Label 3 таким образом:

If A > B Then Label4.Caption = «Ваше число МЕНЬШЕ. Число попыток — » + Str ( P )

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *