Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Понятно о Visual Basic.NET. Самоучитель.Ч2.2005...docx
Скачиваний:
46
Добавлен:
25.11.2019
Размер:
4.02 Mб
Скачать
      1. Серп молодого месяца или «в час по чайной ложке»

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

Процедура Месяц небольшая, но и ее так сразу не напишешь. Начинаем с того, что записываем в окно кода ее заготовку:

Sub Месяц()

End Sub

Затем увеличиваем на один оператор главную процедуру рисования:

Private Sub Рисуем_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Рисуем.Click

Гр = Me.CreateGraphics

Звездное_небо()

Месяц()

End Sub

Запускаем проект. Ничего нового вдобавок к звездному небу, конечно, не рисуется, но мы хотя бы убеждаемся, что VB ни на что не жалуется, значит ошибок нет.

Теперь записываем в процедуру Месяц оператор, рисующий желтый круг. Вряд ли вы уже «на ты» с переменными, поэтому пишите его, не стесняясь – в числах. Запускайте проект и проверяйте, хорошо ли рисуется круг. Если все в порядке, записывайте в процедуру Месяц оператор, рисующий черный круг. Запускайте – проверяйте. Если все в порядке, переходите к замене чисел на переменные. Запускайте – проверяйте. Идея такая: выполнив маленький кусочек работы, обязательно нужно запустить проект и проверить, как он работает. Нужно это для того, чтобы обнаружить ошибку как можно раньше. Представьте ситуацию: ваш проект работал хорошо, потом вы дописали в него 10 строк, запустили – он стал работать плохо. Ясно, что виновата одна из 10 строк, но какая? Попробуйте найти ошибку в 10 строках! А если там не одна ошибка? А теперь другая ситуация: строк не 10, а 1. Ясно, что искать ошибку в 10 раз легче. Вот так: «Тише едешь …».

Вот какая у меня в конце концов получилась процедура:

Sub Месяц()

Dim x As Single = 100

Dim y As Single = 30

Dim Размер_месяца As Single = 50

Dim Толщина_серпа As Single = 10

Гр.FillEllipse(Brushes.Yellow, x, y, Размер_месяца, Размер_месяца) 'Желтый круг

Гр.FillEllipse(Brushes.Black, x - Толщина_серпа, y, Размер_месяца, Размер_месяца) 'Черный круг

End Sub

      1. Земля, пруд, три дерева и два фонаря

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

Земля. Это большой зеленый прямоугольник ниже уровня горизонта:

Sub Земля()

Гр.FillRectangle(Brushes.LightGreen, 0, Уровень_горизонта, Me.Width, Me.Height)

End Sub

Пруд. Это эллипс черного цвета с белой окантовкой:

Sub Пруд()

Dim x As Single = 400

Dim y As Single = 300

Dim Размер As Single = 200

Гр.FillEllipse(Brushes.Black, x, y, Размер, Размер / 3) 'Вода

Гр.DrawEllipse(Pens.White, x, y, Размер, Размер / 3) 'Берег

End Sub

Обратите внимание, как легко превратить эту процедуру в процедуру с параметрами. Тогда легко будет разместить в парке несколько прудов. В будущем вы сможете делать отражение звезд в пруду.

Три одиночных дерева и два одиночных фонаря. Вот когда понадобились наши Дерево и Фонарь:

Sub Три_одиночных_дерева()

Дерево(420, 240, 50)

Дерево(600, 260, 70)

Дерево(430, 260, 100)

End Sub

Sub Два_одиночных_фонаря()

Фонарь(480, 230, 60)

Фонарь(540, 260, 140)

End Sub