русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Массивы элементов управления


Дата добавления: 2015-06-12; просмотров: 439; Нарушение авторских прав


Задача: Выстроить вдоль нижней кромки формы на равных расстояниях друг от друга 20 автомобилей, вот так:

 

 

При нажатии кнопки эти автомобили должны прыгнуть вверх, вот так:

 

 

(самый левый остается на месте).

Трудности: Нам нужно поместить на форму 20 элементов управления Image и загрузить в них картинку автомобиля, что само по себе утомительно. Расположить их вручную на равных расстояниях тоже нелегко. Visual Basic дает возможность изящно преодолеть все эти трудности программным путем.

Ваши действия: Поместите на форму один объект Image и дайте ему имя imgАвто. Загрузите в него картинку автомобиля. Обратите внимание на его свойство Index. Оно пусто. Это значит, что данный объект пока не является элементом массива объектов. Заголовок у окна свойств такой: Properties - imgАвто. Придайте свойству Index какое-нибудь целое неотрицательное значение, например 1. Тут же заголовок у окна свойств меняется: Properties - imgАвто(1). Это значит, что данный объект стал элементом массива объектов. Пока в этом массиве один элемент - imgАвто(1).

Как создать остальные объекты массива? Можно вручную, скопировав его обычным образом, как я объснял в 11.3, но отвечая на вопрос - Yes. При этом Visual Basic будет придавать новым объектам индексы от 0 и выше. Но быстрее это сделать программным путем. Так, оператор

LoadimgАвто(4)

создаст (загрузит) на форме новый объект imgАвто с индексом 4. Значит, если применить оператор в цикле, он загрузит нам все нужные объекты и создаст их массив. Безо всякого объявления. Вот программа:

Dim i As Integer

Dim N As Integer 'Количество объектов

______________________________________________________________________

Private Sub Form_Load()

N = 20

'Загружаем на форму и делаем видимыми все объекты массива, кроме первого (который и так уже загружен):



For i = 2 To N

Load imgАвто(i)

imgАвто(i).Visible = True

Next

'Помещаем на свои места все объекты массива:

For i = 1 To N

imgАвто(i).Top = Height - 1000

imgАвто(i).Left = 300 * i

Next

End Sub

______________________________________________________________________

Private Sub Command1_Click()

'Прыжок всех объектов:

For i = 1 To N

imgАвто(i).Top = imgАвто(i).Top - 50 * (i - 1)

Next

End Sub

Пояснения: Как обычно, первой выполняется процедура Form_Load, которая все создает и расставляет. Затем процедура Command1_Click выполняет прыжок автомобилей.

 

Вот более "правильный" вариант той же программы, использующий процедуры с параметрами:

Dim i As Integer

Dim N As Integer

______________________________________________________________________

Private Sub Form_Load()

N = 20

'Загружаем на форму и делаем видимыми все объекты, кроме первого (который и так уже загружен):

For i = 2 To N

Load imgАвто(i)

imgАвто(i).Visible = True

Next

'Помещаем на место все объекты:

For i = 1 To N

Поместить_автомобиль_на_место i

Next

End Sub

______________________________________________________________________

Private Sub Command1_Click()

'Прыжок всех автомобилей:

For i = 1 To N

Прыжок_автомобиля i

Next

End Sub

______________________________________________________________________

'Процедура, помещающая на место один объект из массива с индексом Номер_автомобиля:

Private Sub Поместить_автомобиль_на_место(Номер_автомобиля As Integer)

imgАвто(Номер_автомобиля).Top = Height - 1000

imgАвто(Номер_автомобиля).Left = 300 * Номер_автомобиля

End Sub

______________________________________________________________________

'Процедура прыжка одного объекта из массива с индексом Номер_автомобиля:

Private Sub Прыжок_автомобиля Прыжок_автомобиля (Номер_автомобиля As Integer)

imgАвто(Номер_автомобиля).Top = imgАвто(Номер_автомобиля).Top - 50 * (Номер_автомобиля - 1)

End Sub

В процедуре Прыжок_автомобиля вы можете задавать разным автомобилям разное поведение. Например:

If Номер_автомобиля = 8 Then imgАвто(Номер_автомобиля).Top = 1000

If Номер_автомобиля = 14 Then imgАвто(Номер_автомобиля).Visible = False

 

Чтобы удалить (выгрузить) 4-й объект с формы, применяем оператор Unload imgАвто(4).

 

Обратите внимание, что теперь, работая в окне кода и пытаясь получить заготовку процедуры для обработки события, принадлежащего автомобилю, вы получите ее с параметром Index, значение которого равно индексу автомобиля, с которым происходит событие, в массиве. Это позволяет вам задавать разную реакцию автомобилей на одно и то же событие. Например, следующая процедура

Private Sub imgАвто_Click(Index As Integer)

If Index = 2 Then imgАвто(Index).Top = imgАвто(Index).Top + 200 Else imgАвто(Index).Visible = False

End Sub

позволяет вам превращать любой автомобиль щелчком мыши в невидимку, а 2-й автомобиль вместо этого отскакивает.

 



<== предыдущая лекция | следующая лекция ==>
Использование массивов при программировании игр | Dim a(1 To 3)


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.008 сек.