Анимация: шарик отскакивает от стенок - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д