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