Бросание игральной кости на 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 используется как начальное значение.

Больше нуля

Следующее случайное число в последовательности.

Не задается

Равно нулю

Страница:  1  2  3  4  5 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы