Бросание игральной кости на VBA
Игральную кость можно рассматривать как генератор случайных чисел в целочисленном интервале [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 показан предлагаемый дизайн формы.
Рис 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 используется как начальное значение. |
Больше нуля |
Следующее случайное число в последовательности. |
Не задается |
Равно нулю |
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
- Разработка прикладного программного обеспечения деятельности предприятия в системе клиент-сервер
- Работа с программным продуктом различных версий Delphi
- Анализ и реинжиниринг системы информационной безопасности на предприятии ГУ Банка России
- Классификация и характеристика видов, методов и средств защиты информации
- Анализ антивирусных программ
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности