[Объект.] Range ("адрес ячейки"). Для свойства Range в качестве аргумента используется любая ссылка в формате А1. Например, WorkSheets("Лист1").Range("A7")=34, или для текущего листа Range("A7")=34 – запись в ячейку А7 числа 34.
[Объект.] Cells(<номер строки>, <номер столбца>). Свойство используется для доступа к отдельной ячейке. В качестве аргументов указываются номер строки и столбца. Например, для ввода числа 34 в ячейку Лист1!А7 необходима команда: Sheets(1).Cells(7, 1).Value=34.
Номер строки и столбца могут задаваться с помощью переменных, это позволяет обращаться к разным ячейкам таблицы.
Замечание. При работе стили переключаются в меню Сервис -> Параметры -> Общие -> Стиль ссылок, при реальном программировании наиболее удобно пользоваться не этими стилями, а именами ячеек. Тогда работа с вашей ячейкой похожа на роботу с обычной переменной. Что многим более привычно и удобно. Например для констант или полей форм.
Для того, чтобы дать имя ячейке наведите на неё курсор. Выберите меню Вставка -> Имя -> Присвоить. Появится диалоговое окно, куда надо ввести имя и нажать кнопочку OK.
Рис 1.2 (Стиль ссылок)
После присваивания имени вы введите число в эту ячейку, а в другой создайте формулу: =MyName+10
Данная запись намного информативнее, кроме того вы можете не заботиться о местоположении имени в таблице, можете менять его местоположение не заботясь о том, что Ваши формулы будут изменены. А особенно это важно при программировании. Эта мелочь позволит избежать Вам сложной адресации и отслеживания данных.
Узнать все имена можно здесь:
Рис 1.3 (Просмотр имен стилей)
2.Игральная кость. Имитация бросания игральной кости
Игральная кость (лат. ālea, англ. dice) — популярный источник случайности в настольных играх (особенно в одноимённой игре). Игральная кость обычно выполнена в виде шестигранного кубика с нанесёнными на Рис 2.1(Традиционные игральные кости) его стороны числами от 1 до 6, причём сумма чисел на противоположных гранях должна равняться семи.
Игральную кость можно рассматривать как генератор случайных чисел в целочисленном интервале [1..N] с одинаковой вероятностью выпадения всех чисел интервала. Такие генераторы обозначают 1dN. Так, например, обычный шестигранный кубик — это 1d6; бросание монетки — это работа генератора 1d2 и т. д.
Сокращение MdN обозначает сумму M применений 1dN. Следует отметить, что MdN даёт целые числа в интервале [M..M*N]. Вероятность выпадения числа из этого интервала растёт по мере приближения к его середине
Так, например, используя игральную кость d4 и бросив её два раза, мы получим генератор 2d4, дающий следующие варианты:
Таблица 2.1
Количество очков | Вероятность исхода | %% |
2 | 1/16 | 6,25 |
3 | 1/8 | 12,5 |
4 | 3/16 | 18,75 |
5 | 1/4 | 25 |
6 | 3/16 | 18,75 |
7 | 1/8 | 12,5 |
8 | 1/16 | 6,25 |
Пример генератора, не попадающего под определение MdN: колода карт, в которую не возвращаются вытянутые карты. Она будет 1dN только для первой попытки, распределения последующих попыток будут зависеть от предыдущих результатов.
В ролевых играх (например, основанных на правилах Dungeons & Dragons) используются игральные кости с 4 (тетраэдр), 6 (куб), 8 (октаэдр), 12 (додекаэдр), 20 (икосаэдр) и другим количеством граней. Лоу Зоччи изобрёл зоччиэдр, игральную кость со 100 гранями. Впрочем, для получения числа от 1 до 100 чаще пользуются двумя 10-гранными костями.
В среде ролевиков тип кубика часто обозначают буквой «d» (dices) или «к», (костей) после которых указывается количество сторон. Помимо привычных многим шестигранных кубиков (d6), используются четырёх- (d4), восьми- (d8), десяти- (d10), двенадцати- (d12) и двадцатигранные (d20) кости. Используется также обозначение d100, d% или «процентный кубик», представляющий собой два десятигранника, один из которых используется для определения количества десятков, а второй — единиц.
2.1 Постановка задачи и план решения
Разработать программу, которая будет имитировать многократное бросание одной игральной кости, а также определять и показывать количество выпадений на кубике того или иного числа. Программа должна делать ставки , позволять начинать бросание кости, останавливать его в любой момент и переустанавливать результаты подсчета.
На рис. 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
‘Продолжать пока не истекло заданное время
DoEvents
Randomize
Кости = Int(Rnd * 6) + 1
‘Возвращает случайное число типа Single.
Необязательный атрибут. Single значение или любое допустимое выражение Single.
Если параметр number | То функцией Rnd генерируется |
Равно нулю | Последнее сгенерированное случайное число. |
Меньше нуля | Каждый раз одно и то же число. Number используется как начальное значение. |
Больше нуля | Следующее случайное число в последовательности. |
Не задается | Равно нулю |
Функция Rnd возвращает значение, которое меньше 1, но больше или равно нулю.
Cпособ генерации случайного числа в функции Rnd определяется значением параметра Number.
Для любого заданного начального числа генерируется одна и та же последовательность чисел, поскольку при каждом последующем вызове в функции Rnd при генерации следующего числа последовательности в качестве начального используется ранее сгенерированное число.
Перед вызовом Rnd для инициализации генератора случайных чисел с начальным значением на основе системного таймера воспользуйтесь оператором Randomize без указания аргументов.
SelectCase Кость
Case 1
‘Выполняет один из блоков операторов в зависимости от значения выражения. Обязателен в операторе Case. Список возможных значений для testexpression
Image1.Picture = LoadPicture("\1.bmp")
Label1.Caption = Label1.Caption + 1
Image1.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
Private Sub CommandButton1_Click()
stav = CDbl(TextBox2.Text)
If stav < 6 And stav > 0 Then
‘Проверяем была ли сделана ставка, если да то запускаем таймер,
qtimer
Else
‘если же нет, то меняем флаг фокуса и выводим надпись
Label18.Visible = True
Label18.Caption = "Вынесделалиставку!!!"
End If
Label19.Caption = TextBox1.Text + " Вашвыигрыш = "