Kniga-Online.club
» » » » Интернет-журнал "Домашняя лаборатория", 2008 №7 - Журнал «Домашняя лаборатория»

Интернет-журнал "Домашняя лаборатория", 2008 №7 - Журнал «Домашняя лаборатория»

Читать бесплатно Интернет-журнал "Домашняя лаборатория", 2008 №7 - Журнал «Домашняя лаборатория». Жанр: Газеты и журналы / Периодические издания / Сделай сам / Хобби и ремесла год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:
от запуска к запуску набор значений случайной величины менялся (а значит и созвездия), употребите разик до использования функции Rnd процедуру Randomize.

Задание 79: "Звезды в окне". Звездное небо в пределах прямоугольника.

Задание 80: "Дождь в луже". Заполните форму окружностями или эллипсами радиуса 200 в случайных местах.

Задание 81: "Мыльные пузыри". То же самое случайных радиусов и цветов.

Задание 82: "Сноп света в глаза". То есть пучок лучей, выходящих из одной точки. Реализуется множеством случайных разноцветных отрезков прямых, причем одна точка всех отрезков не случайна, а находится в центре формы.

Задание 83: "Стог сена". Множество случайных разноцветных отрезков прямых преимущественно желтоватых оттенков, причем одна точка любого отрезка находится в случайной точке левой трети стога, другая — в случайной точке правой. Размер стога — 6000 на 6000. Используйте функцию RGB со случайными аргументами.

Задание 84: "Атака абстракциониста". На экране бесконечно рисуется большое количество случайных разноцветных залитых прямоугольников или эллипсов.

Совет: Если ваш компьютер быстрый, то прямоугольники или эллипсы будут сменять друг друга с огромной скоростью, что может вам не понравиться. Чтобы замедлить работу компьютера, обычно используют таймер. Но поскольку вы с ним не знакомы, вставьте для замедления внутрь цикла оператор, который, ничего не изменяя на экране, будет выполняться достаточно долго. Обычно для этих целей используют "пустой цикл":

For j = 1 То 1000000: Next

Пока компьютер досчитает до миллиона, пройдет некая значительная доля секунды.

Задание 85: "Летающие тарелки в космосе". Они получатся, если по нажатии одной кнопки вы будете добавлять на форму очередную порцию звезд, а по нажатии другой — очередную летающую тарелку из задачи 68, но случайного размера и в случайном месте, что нелегко. Подсказка без пояснений: При рисовании тарелки не используйте Rnd внутри цикла, все случайные значения присвойте переменным выше цикла.

ПРОЦЕДУРЫ

До сих пор мы с вами имели дело только с процедурами, задающими реакцию компьютера на те или иные события. Это процедуры типа "Что делать, если…". Настала пора познакомить вас с другими процедурами — процедурами типа "Как". Будем называть их процедурами пользователя. В этой главе я на одном примере проведу вас от процедур пользователя к процедурам с параметрами.

Зачем нужны процедуры пользователя

Задача: Вы записали на диск десяток фотографий, снятых во время каникул, и решили сделать фотоальбом. Поместили на форму десяток кнопок с названиями фотографий и один PictureBox. При нажатии на кнопку нужное фото для всеобщего обозрения загружается в PictureBox, а также печатается дата снимка.

Задача легкая, мы ее уже решали в 0. Вот программа для 4 фотографий:

Private Sub Command1_Click()

    Picture1.Picture = LoadPicture("с: tempRockies.bmp")

    Picture1.Print, "21.07.2001"

End Sub

Private Sub Command2_Click()

    Picture1.Picture = LoadPicture("c: tempPorthole.bmp")

    Picture1.Print, "28.07.2001"

End Sub

Private Sub Command3_Click()

    Picture1.Picture = LoadPicture("c: tempBalloons.bmp")

    Picture1.Print, "12.08.2001"

End Sub

Private Sub Command4_Click()

    Picture1.Picture = LoadPicture("c: tempGuitar.bmp")

    Picture1.Print, "20.07.2001"

End Sub

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

Усложним задачу: Некоторые из фотографий сняли вы, некоторые — ваш друг. Вы хотите, чтобы в знак этого на ваших фото в левом верхнем углу появлялся один значок, а на фото вашего друга другой. Ваш любимый значок такой — >

а у вашего друга такой — >

Пусть они и появляются.

Давайте значки будем рисовать при помощи методов. Ваша программа станет такой:

Private Sub Cornmandl_Click ()

    Picture1.Picture = LoadPicture("c: tempRockies.bmp")

    'Это ваше фото, рисуем значок:

    Picture1.Line (100, 100)-(300, 300), vbBlue, В

    Picture1.Line (100, 100)-(300, 300), vbBlue

    Picture1.Line (100, 300)-(300, 100), vbBlue

    Picture1.Print, "21.07.2001"

End Sub

Private Sub Command2_Click()

    Picture1.Picture = LoadPicture("c: tempPorthole.bmp")

    'Это ваше фото, рисуем значок:

    Picture1.Line (100, 100)-(300, 300), vbBlue, В

    Picture1.Line (100, 100)-(300, 300), vbBlue

    Picture1.Line (100, 300)-(300, 100), vbBlue

    Picture1.Print, "28.07.2001"

End Sub

Private Sub Command3_Click()

    Picture1.Picture = LoadPicture("c: tempBalloons.bmp")

    'Это фото вашего друга, рисуем значок:

    Picture1.Circle (200, 200), 20

    Picture1.Circle (200, 200), 70

    Picture1.Circle (200, 200), 120

    Picture1.Circle (200, 200), 170

    Picture1.Print, "12.08.2001"

End Sub

Private Sub Command4_Click()

    Picture1.Picture = LoadPicture("c: tempGuitar.bmp")

    'Это фото вашего друга, рисуем значок:

    Picture1.Circle (200, 200), 20

    Picture1.Circle (200, 200), 70

    Picture1.Circle (200, 200), 120

    Picture1.Circle (200, 200), 170

    Picture1.Print, "20.07.2001"

End Sub

Программа работает нормально, но невооруженным глазом виден ее существенный недостаток — резко возросший объем. Недостаток этот особенно будет заметен, когда число фото вырастет до десятка. Это тем более обидно, что в программе есть два повторяющихся фрагмента. Это фрагмент

'Это ваше фото, рисуем значок:

Picture1.Line (100, 100)-(300, 300), vbBlue, В

Picture1.Line (100, 100)-(300, 300), vbBlue

Picture1.Line (100, 300)-(300, 100), vbBlue

и фрагмент

'Это фото вашего друга, рисуем значок:

Picture1.Circle (200, 200), 20

Picture1.Circle (200, 200), 70

Picture1.Circle (200, 200), 120

Picture1.Circle (200, 200), 170

которые в нашей программе встретились по два раза, а когда число фото вырастет, то встретятся многократно.

В этом случае программисты всего мира поступают так. Они придумывают повторяющимся фрагментам имена, например,

Рисуем_мой_значок

и

Рисуем_значок_друга

Затем они вписывают в программу специальную процедуру для каждого фрагмента с придуманным только-что именем, после чего имеют право во всей программе вместо фрагмента писать его имя. Чтобы вам было понятно, посмотрите на получившуюся программу:

Private Sub Рисуем_мой_значок() 'Это одна специальная процедура

   Picture1.Line (100, 100)-(300, 300), vbBlue, В

   Picture1.Line (100, 100)-(300, 300), vbBlue

   Picture1.Line (100, 300)-(300, 100), vbBlue

End Sub

Private Sub Рисуем_значок_друга() 'Это другая специальная процедура

    Picture1.Circle (200, 200), 20

    Picture1.Circle (200, 200), 70

    Picture1.Circle (200, 200), 120

   

Перейти на страницу:

Журнал «Домашняя лаборатория» читать все книги автора по порядку

Журнал «Домашняя лаборатория» - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Интернет-журнал "Домашняя лаборатория", 2008 №7 отзывы

Отзывы читателей о книге Интернет-журнал "Домашняя лаборатория", 2008 №7, автор: Журнал «Домашняя лаборатория». Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*