Движение в графике - VB

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

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

Есть условие задачи: **Используя элемент управления PictureBox, изобразить парашютиста, который падает. Скорость падения и направление ветра выбирается пользователем.** Прошу дать советы или показать на примерах как ето нужно изобразить (то есть результат работы)... Зарание спасибо!!

Решение задачи: «Движение в графике»

textual
Листинг программы
  1. Option Explicit
  2. Private Const G As Double = 9.80665
  3. Dim t As Double, prs As Boolean, wnd As Double, v As Double, hgt As Double, mnHgt As Double
  4.  
  5. Private Sub Command1_Click() 'Jump
  6.    If Not Tm1.Enabled Then Call NewJump
  7. End Sub
  8.  
  9. Private Sub Command3_Click() 'Parachute
  10.    If Tm1.Enabled = True Then
  11.        prs = True
  12.        Sp4.Visible = True: Ln1.Visible = True: Ln2.Visible = True
  13.     End If
  14. End Sub
  15.  
  16. Private Sub NewJump() '
  17.    Sp1.Top = hgt + mnHgt
  18.     Sp2.Top = Sp1.Top + Sp2.Height
  19.     Sp1.Left = 0: Sp2.Left = Sp1.Left
  20.     Sp4.Top = Sp1.Top
  21.     Ln1.Y1 = Sp1.Top: Ln2.Y1 = Ln1.Y1: Ln1.Y2 = Ln1.Y1 - 100: Ln2.Y2 = Ln1.Y1 - 100
  22.     Ln1.X1 = 0: Ln2.X1 = 0: Ln1.X2 = Sp4.Width / 2: Ln2.X2 = -Sp4.Width / 2
  23.     wnd = Val(Txt.Text) / 100: hgt = Val(Txt1.Text)
  24.     Sp1.Visible = True: Sp2.Visible = True: Sp3.Visible = False: Sp4.Visible = False
  25.     Ln1.Visible = False: Ln2.Visible = False: Tm1.Enabled = True
  26. End Sub
  27.  
  28. Private Sub MovePar(tp, lf)
  29.     Sp4.Top = tp + 1300
  30.     Sp4.Left = lf - Sp4.Width / 2 + 1
  31.     Ln1.Y2 = tp + 1000: Ln2.Y2 = Ln1.Y2: Ln1.Y1 = Ln1.Y2 - 1000: Ln2.Y1 = Ln1.Y2 - 1000
  32.     Ln1.X1 = lf + 2: Ln2.X1 = Ln1.X1: Ln1.X2 = Ln1.X1 + Sp4.Width / 2 - 2: Ln2.X2 = Ln1.X1 - Sp4.Width / 2 - 1
  33. End Sub
  34.  
  35. Private Sub Form_Load()
  36.     P.Scale (-100, 10000)-(100, -100)
  37.     P.AutoRedraw = True: P.DrawWidth = 10
  38.     P.ForeColor = vbGreen: P.BackColor = RGB(220, 220, 255)
  39.     P.Line (-100, 0)-(100, 0)
  40.     Sp1.Top = 11000: Sp2.Top = Sp1.Top + Sp2.Height
  41.     Sp1.Visible = False: Sp2.Visible = False: Sp3.Visible = False
  42.     Lb1.Caption = "": Lb2.Caption = "": Lb3.Caption = ""
  43.     mnHgt = 325 '- это высота человечка в метрах,пропорции нарушены для наглядности
  44. End Sub
  45.  
  46. Private Sub Tm1_Timer()
  47.     If Not prs Then
  48.        Sp1.Top = hgt + mnHgt - (G * (t ^ 2)) / 2
  49.        v = Sqr(2 * G * (hgt + mnHgt + 1 - Sp1.Top))
  50.     Else
  51.        Sp1.Top = Sp1.Top - v
  52.        If v > 20 Then v = v / 30
  53.     End If
  54.     Sp1.Left = Sp1.Left + wnd      '
  55.    Sp2.Top = Sp1.Top + Sp2.Height: Sp2.Left = Sp1.Left
  56.     t = t + 0.1
  57.     Lb1.Caption = Fix(Sp1.Top - Sp1.Height) & " m.": Lb2.Caption = Fix(v) & " m/s.": Lb3.Caption = Round(t, 2) & " s."
  58.     If prs Then MovePar Sp1.Top, Sp1.Left '
  59.    If Sp1.Top - Sp1.Height <= 0 Then '150 Then   '
  60.       Tm1.Enabled = False: Sp4.Visible = False
  61.        Ln1.Visible = False: Ln2.Visible = False
  62.        Sp3.Left = Sp1.Left - Sp3.Width / 2
  63.        Sp3.Visible = Not prs
  64.        Sp1.Visible = prs: Sp2.Visible = prs
  65.        Lb1.Caption = 0 & " m.": Lb2.Caption = 0 & " m/s."
  66.        prs = False: t = 0
  67.     End If
  68. End Sub

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


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

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

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

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

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

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