Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Изучение свойств полос прокрутки





 

 

В программах часто используются горизонтальные и вертикальные полосы прокрутки для того, чтобы прокрутить документ в окне или пролистать список и т.п. Покажем, что эти элементы управления могут быть использованы и в других целях.

Создайте новый проект. В форме проекта разместите горизонтальные полосы прокрутки снизу вверх. Они получат имена HScroll1, HScroll2, HScroll3. Разместите вверху надпись с именем Label1 и установите ее свойство Caption в пустое состояние (т.е. удалите надпись Label1 в окне свойств, но не перепутайте надпись с именем!). Используя надписи, занумеруйте полосы снизу вверх как показано на рисунке. Верхняя надпись будет использоваться для отображения значения свойства Value полос прокрутки при перемещении их движков. Введите в процедуры соответствующих событий полос прокрутки и формы нижеприведенный код. Сохраните проект в вашей папке под именем Прокрутка. Запустите программу и посмотрите, как она работает. Разберите по описанию текст программы.

 

1. Option Explicit

 

2. Private Sub Form_Load()

3. HScroll3.Min = Asc("A")

4. HScroll3.Max = Asc("Z")

5. Label1.Caption = "Текущее значение свойства Value третьей полосы" & Chr(HScroll3.Value)

6. End Sub

 

7. Private Sub HScroll1_Change()

8. HScroll1.Min = 0

9. HScroll1.Max = 100

10. Label1.Caption = "Текущее значение свойства Value первой полосы" & HScroll1.Value

11. End Sub

 

12. Private Sub HScroll2_Change()

13. Label1.Caption = "Текущее значение свойства Value второй полосы" & Chr(HScroll2.Value)

14. End Sub

 

15. Private Sub HScroll2_GotFocus()

16. HScroll2.Min = 0

17. HScroll2.Max = 255

18. End Sub

 

19. Private Sub HScroll2_Scroll()

20. Label1.Caption = "Текущее значение свойства Value второй полосы " & Chr(HScroll2.Value)

21. End Sub

 

22. Private Sub HScroll3_Change()

23. Label1.Caption = "Поиск " & Chr(HScroll3.Value)

24. End Sub

 

25. Private Sub HScroll3_Scroll()

26. Label1.Caption = "Отпустите кнопку, чтобы выбрать букву" & Chr(HScroll3.Value)

27. End Sub

 

Строки с 2 по 6 обрабатывают событие загрузки формы. Оно используется чтобы установить начальные значения для полосы прокрутки с номером 3 (на рисунке верхняя строка). В строках 3 и 4 устанавливается минимальное и максимальное значение для крайнего левого и крайнего правого положения движка полосы прокрутки. Для этого первая буква латинского алфавита "А" и последняя буква алфавита "Z" преобразуются в свой ASCII-код с помощью функции Asc. Полученные значения присваиваются свойствам Min и Max объекта HScroll3 соответственно. В 5 строке Свойству Caption объекта Label1 присваивается текущее значение свойства Value третьей полосы прокрутки. С помощью операции конкатенации строк "сшивается" текст и текущее значение свойства Value полосы. Функция Char выполняет обратное преобразование кода ASCII в соответствующий символ, так как при загрузке движок полосы находится в крайнем левом положении, функция Char вернет минимальное значение свойства Value – букву "А" и после загрузки формы это отобразится в надписи. При перемещении движка полосы 3 изменяются буквы в надписи. С помощью такого механизма можно осуществлять алфавитный поиск в списках, каталогах и др. Нажатие стрелок на концах полосы прокрутки обрабатывается событиями Change (строки 22-24), а перетаскивание движка мышью – событием Scroll (строки 25-27). То, что при этом запускаются различные процедуры обработки событий, можно заметить по появлению различных сообщений в надписи.

Минимальное 0 и максимальное 255 значения свойств Min и Max для второй полосы устанавливается в строках 15-18 в ответ на событие получения фокуса второй полосой (GotFocus). Полоса получает фокус при ее выборе, т.е. щелчке мышью по ней. Событие получения фокуса возникает раньше, чем события Change(строки 12-14) или Scroll(строки 19-21), что дает возможность присвоить начальные значения. Обрабатываются события Change и Scroll для второй полосы точно также как и для третьей. При этом в надписи отображаются все символы с ASCII-кодами от 0 до 255. Преобразование код-символ выполняет функция Char. Так визуально можно просмотреть кодовую таблицу символов.

Для первой полосы начальные значения присваиваются прямо в процедуре события Change (строки 7-11).Полоса просто отображает все числа в диапазоне от 0 до 100. Положение движка вычисляется как процент от разности максимального и минимального значений для полосы, поэтому ширина движка на полосах прокрутки разная.

В этом примере мы познакомились с полосами прокрутки, их свойствами, примерами использования для различных целей, функциями Asc и Char, событиями полос прокрутки и очередностью их возникновения.

 

Пример 6

Разработка простейшей игровой программы "Удача"

 

 
 

Создадим игровую программу, работающую по принципу "однорукого бандита". Правда, так как игра электронная, то некуда бросать деньги. Суть игры в следующем: при нажатии кнопки Spin (вращать), изменяются числа в надписи справа от этой кнопки. Числа меняются случайным образом и, если выпадет хотя бы одна семерка, то засчитывается выигрыш, о чем программа сообщает пользователю и отображает картинку. Программа должна вести учет количества выигрышей, попыток и определять вероятность выигрыша (рейтинг). Создайте новый проект. Разместите в форме элементы управления Label для трех чисел, названия игры, счета, попыток и рейтинга. Текстовое поле Text для сообщения о выигрыше (впрочем, это может быть и элемент типа Label), командные кнопки. Установите для объекта Image свойство Visible (отображение) в False (ложь). При этом в режиме работы программы картинка перестанет быть видимой. Картинку возьмите любую из числа тех, которые есть на вашем компьютере. Она должна иметь одно из расширений bmp, wmf,gif, jpeg или ico. Введите в процедуры событий элементов управления формы нижеприведенный код. Добавьте к проекту модуль класса из меню Проект/Добавить модуль. Введите в окно кода этого модуля программный код, помеченный как код модуля класса. Сохраните проект в своей папке под именем Удача.

 

Код модуля формы

 

1. Private Sub Command1_Click()

2. Image1.Visible = False

3. Label1.Caption = Int(Rnd * 10)

4. Label2.Caption = Int(Rnd * 10)

5. Label3.Caption = Int(Rnd * 10)

6. If Label1.Caption = 7 Or Label2.Caption = 7 Or Label3.Caption = 7 Then

7. Image1.Visible = True

8. Счет = Счет + 1

9. Попытки = Попытки + 1

10. Text1.Text = "Получите выигрыш!"

11. Label5.Caption = "Счет= " & Счет

12. Label6.Caption = "Попытки= " & Попытки

13. Label7.Caption = "Рейтинг= " & Рейтинг(Счет, Попытки)

14. Beep

15. Else

16. Попытки = Попытки + 1

17. Label6.Caption = "Попытки= " & Попытки

18. Text1.Text = "Крутите барабан!"

19. End If

20. End Sub

 

21. Private Sub Command2_Click()

22. End

23. End Sub

 

24. Private Sub Form_Load()

25. Randomize

26. Text1.Text = "Жмите ""Spin"""

27. Счет =0: Попытки = 0

28. End Sub

 

Код модуля класса

 

29. Option Explicit

 

30. Public Счет As Integer, Попытки As Single

31. Function Рейтинг(a, b) As String

32. Рейтинг = Format(a / b, "0,0%")

33. End Function

 

При загрузке формы выполняется процедура в строках 24-28. В ней выполняется функция Randomize, которая обеспечивает генерацию случайных чисел, устанавливается содержимое текстового поля, приглашающее нажать кнопку вращения, обнуляются переменные Счет и Попытки. Заметим, что эти переменные описаны в модуле класса и видны всем другим модулям программы. Описаны они в модуле класса потому, что при нажатии кнопки вращения значения счета, рейтинга и количества попыток должны накапливаться, а не теряться. Если описать эти переменные в модуле формы или процедурах обработки событий, их значения будут каждый раз утрачиваться при нажатии кнопки вращения. Проверьте это самостоятельно.

При нажатии кнопки вращения происходит следующее: картинка становится невидимой, если до этого она была видимой в результате выигрыша, с помощью функций Rnd и Int в трех надписях вверху формы выводятся случайные целые числа в диапазоне от 0 до 10 (функция Rnd выдает случайные числа от 0 до 1, поэтому, чтобы увеличить диапазон умножаем их на 10. Функция Int округляет результат до целых значений). В строке 6 с помощью логического оператора Or проверяется, не выпала ли хотя бы в одном из полей семерка. Если она выпала, то картинка становится видимой, счет и количество попыток увеличивается на единицу и отображаются в соответствующих надписях, подсчитывается рейтинг и также отображается в форме, а в текстовом поле появляется текст "Получите выигрыш" и раздается звуковой сигнал, инициированный функцией Beep. Если выигрыш не выпал, то количество попыток увеличивается на единицу и отображается в надписи, а в текстовом поле появляется надпись "Крутите барабан".

В модуле класса определена процедура-функция или, как ее еще называют, пользовательская функция (строки 31-33). Она выполняет единственную операцию – рассчитывает рейтинг. Рассмотрим ее подробнее, так как с такими конструкциями мы еще не встречались. Начинается функция с ключевого слова Function и заканчивается ключевым словом End Function. За словом Function следует имя функции Рейтинг, а в скобках стоят так называемые формальные параметры, которые функция должна получить для расчета рейтинга. Тип функции описан как строковый. Формальные параметры a и b называются так потому, что они в процессе использования функции могут быть заменены реальными переменными, а в описании функции они играют роль временных переменных, назначение которых в том, чтобы просто показать что и на что делится при вычислении рейтинга. С помощью функции Format вычисляется отношение a/b, а полученный результат преобразуется в процентную форму и присваивается имени функции. Отметим, что возвращаемый функцией результат всегда должен присваиваться имени функции (строка 32). В месте использования функции (строка 13) вместо формальных параметров указаны реальные переменные Счет и Попытки, по значению которых и вычисляется рейтинг. Причем, на первом месте должна стоять переменная Счет, чтобы рейтинг вычислялся как Счет/Попытки, потому что именно на этом месте стоит формальный параметр, а в описании функции, который потом и делится на b.

Вероятность выигрыша можно резко понизить, если потребовать, чтобы выигрышной считалась ситуация, когда выпадают все три семерки. Подумайте, что и как надо изменить в программе, чтобы добиться этого. Попытайтесь сами составить сценарий подобной игры и запрограммировать его. Вы можете спроектировать интерфейс программы по своему вкусу и ввести в нее дополнительные эффекты. Возможно, вы к этому вернетесь, когда изучите дальнейший материал.

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

 

Пример 7

Date: 2016-07-25; view: 381; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию