Анимация: шарик отскакивает от стенок - VB
Формулировка задачи:
Всем привет, задали задачу по бэйсику, сделать анимацию, фигуры я нарисовал, осталось сделать анимацию.http://www.cyberforum.ru/attachments/279031d1370543469
Фигура "круг" лежащая на "отрезке" должна перемещаться
1. Сначала падает вниз
2. Передвигается в правый угол
3. От угла отталкивается и падает в центр
4. От центра отталкивается и передвигается в левый угол
5. С левого угла передвигается на первоначальную точку
Собственно как все это сделать?
Решение задачи: «Анимация: шарик отскакивает от стенок»
textual
Листинг программы
- Option Explicit
- Private Type Pos
- x As Single
- Y As Single
- End Type
- Dim WithEvents Tmr As Timer
- Dim Entity As Pos, Increment As Pos, Inc As Long
- Dim Follow() As Pos, FollowStep As Long
- Private Sub Form_Load()
- Set Tmr = Me.Controls.Add("VB.Timer", "Tmr")
- Tmr.Interval = 50
- Tmr.Enabled = True
- Me.Width = Me.ScaleHeight
- Me.AutoRedraw = True
- Me.Scale (-10, 10)-(10, -10)
- ReDim Follow(6)
- Follow(0).x = 5: Follow(0).Y = 7
- Follow(1).x = 2: Follow(1).Y = 7
- Follow(2).x = 0: Follow(2).Y = -7
- Follow(3).x = 7: Follow(3).Y = 0
- Follow(4).x = 0: Follow(4).Y = -7
- Follow(5).x = -7: Follow(5).Y = 0
- Follow(6).x = 2: Follow(6).Y = 7
- Entity = Follow(0)
- FollowStep = 0
- SetIncrement
- End Sub
- Private Sub SetIncrement()
- Dim A As Double, L As Double, S As Long
- Entity = Follow(FollowStep)
- FollowStep = (FollowStep + 1) Mod (UBound(Follow) + 1)
- L = Sqr((Follow(FollowStep).x - Entity.x) ^ 2 + (Follow(FollowStep).Y - Entity.Y) ^ 2)
- Inc = L
- S = IIf(-(Follow(FollowStep).Y - Entity.Y) > 0, -1, 1)
- A = -(Follow(FollowStep).x - Entity.x) / L
- Increment.x = -A
- Increment.Y = Sqr(1 - A * A) * S
- End Sub
- Private Sub CalcScene()
- If Inc Then
- Entity.x = Entity.x + Increment.x
- Entity.Y = Entity.Y + Increment.Y
- Inc = Inc - 1
- Else: SetIncrement
- End If
- End Sub
- Private Sub DrawScene()
- Me.Cls
- Me.Line (5, 4)-Step(5, -1), , BF
- Me.Circle (Entity.x, Entity.Y), 3
- Me.Refresh
- End Sub
- Private Sub Tmr_Timer()
- CalcScene
- DrawScene
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д