Возникает такая идея, касающаяся нашей игры «Ловец». На форме фигурки ловца и шаров представляют собой элементы управления PictureBox. Ими, как марионетками, управляют невидимые объекты Ловец и Шар(i). Получается некая раздвоенность: душа в одном месте, а тело в другом. А что если сделать классы clsЛовец и clsШар наследниками класса PictureBox? Тогда единство души и тела будет восстановлено и программа должна стать стройнее и логичнее. Попробуем!
Вот отличия в коде ловца:
Public Class clsЛовец
Inherits PictureBox
…………………………….
Public Sub New()
Me.Width = Размер_ловца
Me.Height = Размер_ловца
Me.SizeMode = PictureBoxSizeMode.StretchImage
Me.BackColor = Color.White
Me.Image = Image.FromFile("FACE02.ICO")
Форма.Controls.Add(Me) 'Добавляем новую рожицу в коллекцию формы
Me.BringToFront() 'Чтобы Поле не заслоняло рожицу
End Sub
……………………………….
Private Sub Ставим_изображение_ловца_на_место()
Me.Left = x
Me.Top = y
End Sub
…………………………………….
Конструктор вырос потому, что раньше мы фигурку ловца делали в режиме проектирования, а сейчас – программным методом.
Вот отличия в коде шара:
Public Class clsШар
Inherits PictureBox
…………………………………….
Private Event Я_пойман()
Public Sub New()
Me.Width = Размер_шара
Me.Height = Размер_шара
Me.SizeMode = PictureBoxSizeMode.StretchImage
Me.BackColor = Color.White
Me.Image = Image.FromFile("MOON06.ICO")
Форма.Controls.Add(Me)
Me.BringToFront()
AddHandler Я_пойман, AddressOf Убираем_шар
AddHandler Я_пойман, AddressOf Форма.Уменьшаем_счетчик_непойманных_шаров
End Sub
Private Sub Ставим_изображение_шара_на_место()
Me.Left = x
Me.Top = y
End Sub
Public Sub Действие()
Поймали_или_нет()
Отскок()
Шаг()
Ставим_изображение_шара_на_место()