Анимация: шарик отскакивает от стенок - VB

Узнай цену своей работы

Формулировка задачи:

Всем привет, задали задачу по бэйсику, сделать анимацию, фигуры я нарисовал, осталось сделать анимацию.http://www.cyberforum.ru/attachments/279031d1370543469 Фигура "круг" лежащая на "отрезке" должна перемещаться 1. Сначала падает вниз 2. Передвигается в правый угол 3. От угла отталкивается и падает в центр 4. От центра отталкивается и передвигается в левый угол 5. С левого угла передвигается на первоначальную точку
Собственно как все это сделать?

Решение задачи: «Анимация: шарик отскакивает от стенок»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Type Pos
  4.     x As Single
  5.     Y As Single
  6. End Type
  7.  
  8. Dim WithEvents Tmr As Timer
  9. Dim Entity As Pos, Increment As Pos, Inc As Long
  10. Dim Follow() As Pos, FollowStep As Long
  11.  
  12. Private Sub Form_Load()
  13.     Set Tmr = Me.Controls.Add("VB.Timer", "Tmr")
  14.     Tmr.Interval = 50
  15.     Tmr.Enabled = True
  16.     Me.Width = Me.ScaleHeight
  17.     Me.AutoRedraw = True
  18.     Me.Scale (-10, 10)-(10, -10)
  19.     ReDim Follow(6)
  20.     Follow(0).x = 5: Follow(0).Y = 7
  21.     Follow(1).x = 2: Follow(1).Y = 7
  22.     Follow(2).x = 0: Follow(2).Y = -7
  23.     Follow(3).x = 7: Follow(3).Y = 0
  24.     Follow(4).x = 0: Follow(4).Y = -7
  25.     Follow(5).x = -7: Follow(5).Y = 0
  26.     Follow(6).x = 2: Follow(6).Y = 7
  27.     Entity = Follow(0)
  28.     FollowStep = 0
  29.     SetIncrement
  30. End Sub
  31. Private Sub SetIncrement()
  32.     Dim A As Double, L As Double, S As Long
  33.     Entity = Follow(FollowStep)
  34.     FollowStep = (FollowStep + 1) Mod (UBound(Follow) + 1)
  35.     L = Sqr((Follow(FollowStep).x - Entity.x) ^ 2 + (Follow(FollowStep).Y - Entity.Y) ^ 2)
  36.     Inc = L
  37.     S = IIf(-(Follow(FollowStep).Y - Entity.Y) > 0, -1, 1)
  38.     A = -(Follow(FollowStep).x - Entity.x) / L
  39.     Increment.x = -A
  40.     Increment.Y = Sqr(1 - A * A) * S
  41. End Sub
  42. Private Sub CalcScene()
  43.     If Inc Then
  44.         Entity.x = Entity.x + Increment.x
  45.         Entity.Y = Entity.Y + Increment.Y
  46.         Inc = Inc - 1
  47.     Else: SetIncrement
  48.     End If
  49. End Sub
  50. Private Sub DrawScene()
  51.     Me.Cls
  52.     Me.Line (5, 4)-Step(5, -1), , BF
  53.     Me.Circle (Entity.x, Entity.Y), 3
  54.     Me.Refresh
  55. End Sub
  56. Private Sub Tmr_Timer()
  57.     CalcScene
  58.     DrawScene
  59. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут