Приложение имитировать движение КАК? - VB
Формулировка задачи:
Как??? по Visual BasicПриложение должно имитировать движение шарика "со шлейфом" внутри объекта класса PictureBox . Шарик движется за счёт изменения его координат и отражается от сторон PictureBox под углом 45°. Приложение должно иметь режим когда внутри объекта Picture1 появлялся бы прямоугольник представляющий собой дополнительное препятствие для движущегося шарика
Решение задачи: «Приложение имитировать движение КАК?»
textual
Листинг программы
Option Explicit
Private Const SIZE = 15
Private Const ITER = 100
Dim WithEvents tmr As Timer
Dim loX As Long, loY As Long
Dim lX As Long, lY As Long, lDx As Long, lDy As Long
Private Sub Form_Load()
ScaleMode = vbPixels: DrawWidth = SIZE: BackColor = 0
Set tmr = Controls.Add("VB.Timer", "tmr"): tmr.Interval = 32
lX = 180: lY = 100: lDx = 1: lDy = 1: loX = 50: loY = 50
Width = (Width - ScaleWidth * Screen.TwipsPerPixelX) + 200 * Screen.TwipsPerPixelX
Height = (Height - ScaleHeight * Screen.TwipsPerPixelY) + 200 * Screen.TwipsPerPixelY
End Sub
Private Sub DrawBall(ByVal lX As Long, ByVal lY As Long, _
ByRef lDx As Long, ByRef lDy As Long, _
ByVal lIter As Long)
If lX = ScaleWidth - SIZE Or lX = SIZE Or _
(lX = loX - SIZE And lY > loY - SIZE And lY < loY + 100 + SIZE) Or _
(lX = loX + 100 + SIZE And lY > loY - SIZE And lY < loY + 100 + SIZE) Then _
lIter = -(lIter <> ITER) * lIter: lDx = -lDx _
Else: If lY = ScaleHeight - SIZE Or lY = SIZE Or _
(lY = loY - SIZE And lX > loX - SIZE And lX < loX + 100 + SIZE) Or _
(lY = loY + 100 + SIZE And lX > loX - SIZE And lX < loX + 100 + SIZE) Then _
lIter = -(lIter <> ITER) * lIter: lDy = -lDy _
Else: PSet (lX, lY), lIter * 2
If lIter Then DrawBall lX - lDx, lY - lDy, (lDx), (lDy), lIter - 1
End Sub
Private Sub tmr_Timer()
DrawBall lX, lY, lDx, lDy, ITER
lX = lX + lDx: lY = lY + lDy
Line (loX, loY)-Step(100, 100), vbGreen, BF
End Sub