ПОНЯТНО О Visual Basic NET (том 3)


Ловец и шар наследуют PictureBox - часть 2


    End Sub

 

    Private Sub Поймали_или_нет()

        Const Дальность As Double = 10 

        If Math.Abs(x - Ловец.Xл - ((Размер_ловца - Размер_шара) / 2)) < Дальность _

        And Math.Abs(y - Ловец.Yл - ((Размер_ловца - Размер_шара) / 2)) < Дальность  _

Then RaiseEvent Я_пойман()

    End Sub

 

    Private Sub Убираем_шар()

        x = -10000 : y = -10000

        dx = 0 : dy = 0

    End Sub

……………………………………..

В классе шара нам теперь не понадобились переменные Номер_шара и Число_созданных_шаров. Это приятное сокращение произошло потому, что душа теперь не должна искать свое тело, а точнее: потому что объекту Шар(i) теперь не нужно искать по номеру свой элемент управления PictureBox. Соответственно, конструктор стал покороче и поприятнее.

В момент поимки шар генерирует событие Я_пойман. Как видно из кода конструктора, у этого события два обработчика: тот, что в коде шара, занимается делами шара, а тот, что в коде формы, занимается делами формы. Оба они заменяют бывшую одну процедуру Выход_шара_из_игры. Это лучше, чем было раньше, когда из кода шара мы обращались к счетчику непойманных шаров на форме. Функцию Поймали я переделал в процедуру Поймали_или_нет. Так мне показалось логичнее.

Вот отличия в коде формы:

    Public Sub Уменьшаем_счетчик_непойманных_шаров()

        Число_непойманных_шаров = Число_непойманных_шаров - 1

        Счетчик_непойманных_шаров.Text = Число_непойманных_шаров

    End Sub

Здесь нам также не понадобилось объявлять массив pictШар.

Новый способ позволяет широко использовать события элементов управления PictureBox. Так, вы легко можете щелчками отгонять шары от ловца.




Начало  Назад  Вперед



Книжный магазин