Приложение имитировать движение КАК? - VB

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

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

Как??? по Visual BasicПриложение должно имитировать движение шарика "со шлейфом" внутри объекта класса PictureBox . Шарик движется за счёт изменения его координат и отражается от сторон PictureBox под углом 45°. Приложение должно иметь режим когда внутри объекта Picture1 появлялся бы прямоугольник представляющий собой дополнительное препятствие для движущегося шарика

Решение задачи: «Приложение имитировать движение КАК?»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Const SIZE = 15
  4. Private Const ITER = 100
  5.  
  6. Dim WithEvents tmr As Timer
  7. Dim loX As Long, loY As Long
  8. Dim lX As Long, lY As Long, lDx As Long, lDy As Long
  9.  
  10. Private Sub Form_Load()
  11.     ScaleMode = vbPixels: DrawWidth = SIZE: BackColor = 0
  12.     Set tmr = Controls.Add("VB.Timer", "tmr"): tmr.Interval = 32
  13.     lX = 180: lY = 100: lDx = 1: lDy = 1: loX = 50: loY = 50
  14.     Width = (Width - ScaleWidth * Screen.TwipsPerPixelX) + 200 * Screen.TwipsPerPixelX
  15.     Height = (Height - ScaleHeight * Screen.TwipsPerPixelY) + 200 * Screen.TwipsPerPixelY
  16. End Sub
  17.  
  18. Private Sub DrawBall(ByVal lX As Long, ByVal lY As Long, _
  19.                      ByRef lDx As Long, ByRef lDy As Long, _
  20.                      ByVal lIter As Long)
  21.  
  22.     If lX = ScaleWidth - SIZE Or lX = SIZE Or _
  23.        (lX = loX - SIZE And lY > loY - SIZE And lY < loY + 100 + SIZE) Or _
  24.        (lX = loX + 100 + SIZE And lY > loY - SIZE And lY < loY + 100 + SIZE) Then _
  25.        lIter = -(lIter <> ITER) * lIter: lDx = -lDx _
  26.     Else: If lY = ScaleHeight - SIZE Or lY = SIZE Or _
  27.        (lY = loY - SIZE And lX > loX - SIZE And lX < loX + 100 + SIZE) Or _
  28.        (lY = loY + 100 + SIZE And lX > loX - SIZE And lX < loX + 100 + SIZE) Then _
  29.        lIter = -(lIter <> ITER) * lIter: lDy = -lDy _
  30.     Else: PSet (lX, lY), lIter * 2
  31.    
  32.     If lIter Then DrawBall lX - lDx, lY - lDy, (lDx), (lDy), lIter - 1
  33.    
  34. End Sub
  35.  
  36. Private Sub tmr_Timer()
  37.     DrawBall lX, lY, lDx, lDy, ITER
  38.     lX = lX + lDx: lY = lY + lDy
  39.     Line (loX, loY)-Step(100, 100), vbGreen, BF
  40. End Sub

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


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

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

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

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

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

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