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


Создаем шары Завершаем проект - часть 6


Остальные дополнения, сделанные в коде формы, очевидны. Разберитесь в них самостоятельно. Я думаю, что комментариев достаточно.

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

Сначала о главном. Совершенно аналогично модулю ловца здесь имеется два метода – Начальная_установка и Действие.

Метод Действие определяет, что должен делать шар в каждое мгновение своего полета. Он должен знать, поймали его или нет, и пора ли отскакивать от бортика. Этому и посвящены первые две из четырех строк процедуры Действие. Третья строка – Шаг – вычисляет  в соответствии со значениями dx и dy координаты x и y, а четвертая строка ставит в вычисленное место изображение шара.  Все, больше ничего во время движения шара делать не нужно.

Теперь посмотрим, что происходит при нажатии на кнопку «Начинай сначала». Выполняется процедура формы Начинай_сначала_Click и после пары прыжков по процедурам VB передает управление процедуре Начальная_установка каждого шара. Здесь трудности у вас может вызвать вычисление dx и dy. Поскольку значение Rnd есть случайное число в диапазоне от 0 до 1, то легко видеть, что как dx, так и dy будут случайными числами в диапазоне от -1.8 до 1.8. Этого достаточно, чтобы шар полетел с небольшой случайной скоростью в случайном направлении. Если скорость шаров вам кажется маловатой, увеличьте Макс_шаг.

Вычисление координат x и y исходной позиции шара совершенно аналогично вычислению таких же координат ловца.

Функции Шар_у_горизонтального_бортика и Шар_у_вертикального_бортика совершенно аналогичны «половинкам» функции ловца Ловец_у_бортика.

Теперь насчет процедуры Отскок. Возможно, тем, кто не очень силен в математике и физике, покажется удивительным, что для отскока от горизонтальной преграды достаточно выполнить единственный оператор  dy = -dy, то есть поменять вертикальную составляющую шага на ее противоположное значение. «Но это действительно так!» Аналогично, достаточно выполнить оператор dx = -dx для отскока от вертикальной преграды. Чтобы лучше понять этот факт, запустите проект при Макс_шаг = 30 и Число_шаров = 1 в режиме прерывания, установив точки прерывания на процедурах Отскок и Шаг. При этом проследите внимательно за dx и dy, x и y.




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