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

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

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

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

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

textual
Листинг программы
Option Explicit
Private Const G As Double = 9.80665
Dim t As Double, prs As Boolean, wnd As Double, v As Double, hgt As Double, mnHgt As Double
 
Private Sub Command1_Click() 'Jump
    If Not Tm1.Enabled Then Call NewJump
End Sub
 
Private Sub Command3_Click() 'Parachute
    If Tm1.Enabled = True Then
       prs = True
       Sp4.Visible = True: Ln1.Visible = True: Ln2.Visible = True
    End If
End Sub
 
Private Sub NewJump() '
    Sp1.Top = hgt + mnHgt
    Sp2.Top = Sp1.Top + Sp2.Height
    Sp1.Left = 0: Sp2.Left = Sp1.Left
    Sp4.Top = Sp1.Top
    Ln1.Y1 = Sp1.Top: Ln2.Y1 = Ln1.Y1: Ln1.Y2 = Ln1.Y1 - 100: Ln2.Y2 = Ln1.Y1 - 100
    Ln1.X1 = 0: Ln2.X1 = 0: Ln1.X2 = Sp4.Width / 2: Ln2.X2 = -Sp4.Width / 2
    wnd = Val(Txt.Text) / 100: hgt = Val(Txt1.Text)
    Sp1.Visible = True: Sp2.Visible = True: Sp3.Visible = False: Sp4.Visible = False
    Ln1.Visible = False: Ln2.Visible = False: Tm1.Enabled = True
End Sub
 
Private Sub MovePar(tp, lf)
    Sp4.Top = tp + 1300
    Sp4.Left = lf - Sp4.Width / 2 + 1
    Ln1.Y2 = tp + 1000: Ln2.Y2 = Ln1.Y2: Ln1.Y1 = Ln1.Y2 - 1000: Ln2.Y1 = Ln1.Y2 - 1000
    Ln1.X1 = lf + 2: Ln2.X1 = Ln1.X1: Ln1.X2 = Ln1.X1 + Sp4.Width / 2 - 2: Ln2.X2 = Ln1.X1 - Sp4.Width / 2 - 1
End Sub
 
Private Sub Form_Load()
    P.Scale (-100, 10000)-(100, -100)
    P.AutoRedraw = True: P.DrawWidth = 10
    P.ForeColor = vbGreen: P.BackColor = RGB(220, 220, 255)
    P.Line (-100, 0)-(100, 0)
    Sp1.Top = 11000: Sp2.Top = Sp1.Top + Sp2.Height
    Sp1.Visible = False: Sp2.Visible = False: Sp3.Visible = False
    Lb1.Caption = "": Lb2.Caption = "": Lb3.Caption = ""
    mnHgt = 325 '- это высота человечка в метрах,пропорции нарушены для наглядности
End Sub
 
Private Sub Tm1_Timer()
    If Not prs Then
       Sp1.Top = hgt + mnHgt - (G * (t ^ 2)) / 2
       v = Sqr(2 * G * (hgt + mnHgt + 1 - Sp1.Top))
    Else
       Sp1.Top = Sp1.Top - v
       If v > 20 Then v = v / 30
    End If
    Sp1.Left = Sp1.Left + wnd      '
    Sp2.Top = Sp1.Top + Sp2.Height: Sp2.Left = Sp1.Left
    t = t + 0.1
    Lb1.Caption = Fix(Sp1.Top - Sp1.Height) & " m.": Lb2.Caption = Fix(v) & " m/s.": Lb3.Caption = Round(t, 2) & " s."
    If prs Then MovePar Sp1.Top, Sp1.Left '
    If Sp1.Top - Sp1.Height <= 0 Then '150 Then   '
       Tm1.Enabled = False: Sp4.Visible = False
       Ln1.Visible = False: Ln2.Visible = False
       Sp3.Left = Sp1.Left - Sp3.Width / 2
       Sp3.Visible = Not prs
       Sp1.Visible = prs: Sp2.Visible = prs
       Lb1.Caption = 0 & " m.": Lb2.Caption = 0 & " m/s."
       prs = False: t = 0
    End If
End Sub

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


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

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

11   голосов , оценка 3.636 из 5
Похожие ответы