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