p align="left">В среде ролевиков тип кубика часто обозначают буквой «d» (dices) или «к», (костей) после которых указывается количество сторон. Помимо привычных многим шестигранных кубиков (d6), используются четырёх- (d4), восьми- (d8), десяти- (d10), двенадцати- (d12) и двадцатигранные (d20) кости. Используется также обозначение d100, d% или «процентный кубик», представляющий собой два десятигранника, один из которых используется для определения количества десятков, а второй -- единиц. 2.1 Постановка задачи и план решения Разработать программу, которая будет имитировать многократное бросание одной игральной кости, а также определять и показывать количество выпадений на кубике того или иного числа. Программа должна делать ставки , позволять начинать бросание кости, останавливать его в любой момент и переустанавливать результаты подсчета. План решенияНа рис. 2.2 показан предлагаемый дизайн формы. Рис 2.2 (Интерфейс игры) Назначение каждого элемента управления: 1) элемент управления Image -- для графического представления игральной кости (одной ее грани); 2) надписи -- для показа количества выпадений того или иного числа и для подписей к ним; 3) кнопки: · Выход -- для завершения программы по щелчку на ней; · Начать -- чтобы начать бросание по щелчку на кнопке; · Остановить -- чтобы остановить бросание по щелчку на ней; · Сброс -- чтобы обнулить счет по щелчку на кнопке. В этой программе присутствует повторяющийся процесс (бросание кости и вывод результата) через регулярные интервалы времени. В такой ситуации удобно использовать элемент управления Timer (Таймер). Таблица 2.2 (Процедура для таймера) |
Получить случайное число от1 до 6 | | 1 | 2 | 3 | 4 | 5 | 6 | | Загрузить изображение 1.bmp | Загрузить изображение 2.bmp | Загрузить изображение 3.bmp | Загрузить изображение 4.bmp | Загрузить изображение 5.bmp | Загрузить изображение 6.bmp | | | 1. Кнопка «Начать» - вызов процедуры “qtimer”;2. Кнопка «Остановить» - переменной PauseTime присвоить 0, тем самым остановить timer;3. Кнопка «Сброс»- присвоить свойстве Caption 0, т.е. обнулить значения;Создание интерфейса Перед началом работы над программой, надо создать на любом графическом редакторе 6 изображений, в формате bmp. Далее свойство caption элемента UserForm1, изменить на «Бросание Кости». Для элемента label1-21 ,размер шрифта установить 14 пт, свойство Color = white, BorderStyle = 0 fmBackStyle. 2.2 Описание программы Процедура таймера Private Sub qtimer() Dim Кости, a, d, stav As Integer `Описываем переменные stav = CDbl(TextBox2.Text) `Значение вводимое из TextBox2. преобразуем в числовое PauseTime = 1 `Увеличиваем время таймера Start = timer Do While timer < Start + PauseTime`Продолжать пока не истекло заданное время DoEvents Randomize Кости = Int(Rnd * 6) + 1 `Возвращает случайное число типа Single. Необязательный атрибут. Single значение или любое допустимое выражение Single. |
Если параметр number | То функцией Rnd генерируется | | Равно нулю | Последнее сгенерированное случайное число. | | Меньше нуля | Каждый раз одно и то же число. Number используется как начальное значение. | | Больше нуля | Следующее случайное число в последовательности. | | Не задается | Равно нулю | | |
Функция Rnd возвращает значение, которое меньше 1, но больше или равно нулю. Cпособ генерации случайного числа в функции Rnd определяется значением параметра Number. Для любого заданного начального числа генерируется одна и та же последовательность чисел, поскольку при каждом последующем вызове в функции Rnd при генерации следующего числа последовательности в качестве начального используется ранее сгенерированное число. Перед вызовом Rnd для инициализации генератора случайных чисел с начальным значением на основе системного таймера воспользуйтесь оператором Randomize без указания аргументов. Select Case Кость Case 1 `Выполняет один из блоков операторов в зависимости от значения выражения. Обязателен в операторе Case. Список возможных значений для testexpression Image1.Picture = LoadPicture("\1.bmp") 'Загружаем рисунокLabel1.Caption = Label1.Caption + 1 Case 6Image1.Picture = LoadPicture("6.bmp") Label6.Caption = Label6.Caption + 1 `Если выпала шестерка, то увеличить счетчикEnd Select Loop If stav = Кость Then `Оператор условного перехода -- одни из самых важных и часто используемых элементов в языках программирования. Общий принцип их работы прост: проверяется соответствие каким-то условиям (истинность или ложность каких-либо выражений) и в зависимости от этого выполнение программы направляется по одной или другой ветви. Если ставка совпала с выпавшим числом, то увеличить счетчик(банк) на 3, если же нет то уменьшить счетчик на 2. Label15.Caption = Label15.Caption + 3 Else Label15.Caption = Label15.Caption - 2 End If End SubПроцедура кнопки «Начать»Private Sub CommandButton1_Click() stav = CDbl(TextBox2.Text) Label18.Visible = False` Устанавливаем флаг фокуса надписи на ложьIf stav < 6 And stav > 0 Then `Проверяем была ли сделана ставка, если да то запускаем таймер, qtimer Else `если же нет, то меняем флаг фокуса и выводим надпись Label18.Visible = True Label18.Caption = "Вы не сделали ставку!!!" End If `Выводим текущий счет игрокаLabel19.Caption = TextBox1.Text + " Ваш выигрыш = " End Sub Процедура кнопки «Остановить» Private Sub CommandButton2_Click() PauseTime = 0 `Сбрасываем таймер на 0, тем самым останавливаем timer End SubПроцедура для кнопки «Сброс»Private Sub CommandButton3_Click() Label1.Caption = "0" `Устанавливаем на 0 ,чтоб процедура qtimer не вызывала ошибку Label19.Caption = "" TextBox1.Text = "" `Очищаем поле text(ставка) TextBox2.Text = "" End Sub Процедура для кнопки «Выход» Private Sub CommandButton4_Click() UserForm1.Hide `Скрываем форму End Sub 3.Листинг программы Private Sub qtimer() Dim Кости, a, d, stav As Integer stav = CDbl(TextBox2.Text) PauseTime = 1 Start = timer Do While timer < Start + PauseTime DoEvents Randomize Кости = Int(Rnd * 6) + 1 Select Case Einou Case 1 Image1.Picture = LoadPicture("d:\kosti\1.bmp") Label1.Caption = Label1.Caption + 1 Case 2 Image1.Picture = LoadPicture("d:\kosti\2.bmp") Label2.Caption = Label2.Caption + 1 Case 3 Image1.Picture = LoadPicture("d:\kosti\3.bmp") Label3.Caption = Label3.Caption + 1 Case 4 Image1.Picture = LoadPicture("d:\kosti\4.bmp") Label4.Caption = Label4.Caption + 1 Case 5 Image1.Picture = LoadPicture("d:\kosti\5.bmp") Label5.Caption = Label2.Caption + 1 Case 6 Image1.Picture = LoadPicture("d:\kosti\6.bmp") Label6.Caption = Label6.Caption + 1 End Select Loop If stav = Кость Then Label15.Caption = Label15.Caption + 3 Else Label15.Caption = Label15.Caption - 2 End If End Sub Private Sub CommandButton1_Click() stav = CDbl(TextBox2.Text) Label18.Visible = False If stav < 6 And stav > 0 Then qtimer Else Label18.Visible = True Label18.Caption = "Вы не сделали ставку!!!" End If Label19.Caption = TextBox1.Text + " Ваш выигрыш = " End Sub Private Sub CommandButton2_Click() PauseTime = 0 End Sub Private Sub CommandButton3_Click() Label1.Caption = "0" Label2.Caption = "0" Label3.Caption = "0" Label4.Caption = "0" Label5.Caption = "0" Label6.Caption = "0" Label15.Caption = "0" Label19.Caption = "" TextBox1.Text = "" TextBox2.Text = "" End Sub Private Sub CommandButton4_Click() UserForm1.Hide End Sub МодульPublic PauseTime, Start, Finish, TotalTime Заключение В данной курсовой работе были рассмотрены стандартные операторы, функции и методы VBA Тема работы с случайными числами является очень актуальной, так как случайные числа находят своё применение в приложениях различных типов и имеет большое практическое значение. Не одна задача современного программирования (в криптографии) не обходится без решения вопроса генерирования случайных данных. Данная работа может быть использована студентами для изучения операторов, функция и методов VBA, которые позволяют выполнять различные задачи. БИБЛИОГРАФИЧЕСКИЙ СПИСОК 1. Гарнаев А.Ю. Самоучитель VBA. - СПб.: БХВ-Петербург, 2003. - 512 с. 2. Гарнаев А.Ю. Excel, VBA, Internet в экономике и финансах. СПб.: БХВ-Петербург, 2001. 3. Демидова Л.А., Пылькин А.Н. Программирование в среде Visual Basic for Application. М.: Телеком, 2004. 4. Уокенбах Д. Профессиональное программирование на VBA в Excel 2002. Пер. с англ. - М.: Издательский дом «Вильямс», 2003. -784 с. 5. Блатнер П., Ульрих Л. и др. Использование Microsoft Excel 2000. Специальное издание.: Пер. с англ.: Уч. пос. - М.: Издательский дом «Вильямс», 2000. -1024 с.
Страницы: 1, 2, 3
|