Dim flagVertikal ' Флаг за промяна на посоката по вертикала
Dim flagHorizontal ' Флаг за промяна на посоката по хоризонтала


Private Sub Command1_Click()
flagVertikal = 1 ' Задавам посоката по вертикала
flagHorizontal = 1 ' Задавам посока по хоризонтала
Timer1.Enabled = True ' Пускам таймер1, който задвижва топчето по хоризонтала
Timer2.Enabled = True ' Пускам таймер2, който задвижва топчето по вертикала
Command1.Visible = False ' Правя невидим бутона за стартиране
End Sub


Private Sub Timer1_Timer()
If Shape1.Top <= 0 Then flagVertikal = 1 ' Ако височината на топчето стане отрицателно число сменям посоката по вертикала
If Shape1.Top >= Line1.Y1 - Shape1.Height Then flagVertikal = -1 ' Ако височината на топчето достигне черната линия отново сменям посоката по вертикала
Shape1.Top = Shape1.Top + 50 * flagVertikal ' Реалното преместване на топчето по вертикала
If flagVertikal = 1 Then ' Следва комбинация от IF-ове за смяна цвета на топчето в зависимост от флаговете
If flagHorizontal = 1 Then
Shape1.FillColor = vbBlue
Else
Shape1.FillColor = vbGreen
End If
Else
If flagHorizontal = 1 Then
Shape1.FillColor = vbRed
Else
Shape1.FillColor = vbYellow
End If
End If
End Sub


Private Sub Timer2_Timer()
If Shape1.Left <= 0 Then flagHorizontal = 1 ' Ако разстоянието отляво на топчето стане равно на 0 сменям посоката по хоризонтала
If Shape1.Left >= Line1.X2 - Shape1.Width Then flagHorizontal = -1 'Ако разстоянието отляво стане равно на линията минус ширината на топчето сменям пак посоката
Shape1.Left = Shape1.Left + 50 * flagHorizontal 'Реално преместване на топчето по хоризонталата
End Sub


Private Sub Form_Click()
Timer1.Enabled = False ' Спирам таймера за преместване по вертикалата
Timer2.Enabled = False ' Спирам таймера за преместване по хоризонталата
Command1.Visible = True ' Правя видим бутона за стартиране на таймерите
End Sub


Private Sub Form_Resize()
Line1.X2 = Form1.Width - 250 ' При преозразмеряване на формата променям дължината на линията
End Sub