Visual Basic – Animacja wektorowa

Transkrypt

Visual Basic – Animacja wektorowa
Visual Basic – Animacja wektorowa
Lądowanie i start samolotu
Nazwy formantów:
shpSamolot, shpOgon
grpTrybPracy
rbLadowanie, rbStart
linPas, linGranica
btnUruchom
btnZatrzymaj
btnPowrot
timTimer
Public Class Form1
'
'
Deklaracje zmiennych wykorzystywanych w całym programie
Dim PoczatekLadowania, PoczatekStartu As Point
'
'
Deklaracje stałych zmian współrzędnych w kroku animacji
Const dX = 20, dY = 10
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
'
'
Określenie początkowych punktów dla lądowania i startu
PoczatekLadowania.X = linPas.X1
PoczatekLadowania.Y = 40
PoczatekStartu.X = linPas.X1
PoczatekStartu.Y = linPas.Y1 - shpSamolot.Height
'
'
Ustawienie samolotu w punkcie początkowym lądowania
'
(wariant domyślny w związku z zaznaczeniem [rbLadowanie])
shpSamolot.Location = PoczatekLadowania
shpOgon.Top = PoczatekLadowania.Y - shpOgon.Height
shpOgon.Left = PoczatekLadowania.X
End Sub
Private Sub btnUruchom_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnUruchom.Click
'
'
Wyłączenie możliwości zmiany trybu pracy
grpTrybPracy.Enabled = False
'
'
Uruchomienie animacji
timTimer.Enabled = True
End Sub
Private Sub btnZatrzymaj_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnZatrzymaj.Click
'
'
Zatrzymanie animacji
timTimer.Enabled = False
'
'
Włączenie możliwości zmiany trybu pracy
grpTrybPracy.Enabled = True
End Sub
Private Sub timTimer_Tick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles timTimer.Tick
'
'
Wykonanie kroku animacji, zależnie od wyboru trybu pracy
'
'
1. Lądowanie
If rbLadowanie.Checked = True Then
If shpSamolot.Top + shpSamolot.Height + dY < linPas.Y1 Then
'
'
Przed przyziemieniem
shpSamolot.Top = shpSamolot.Top + dY
shpOgon.Top = shpSamolot.Top - shpOgon.Height
shpSamolot.Left = shpSamolot.Left + dX
shpOgon.Left = shpSamolot.Left
Else
'
'
Dobieg po przyziemieniu
shpSamolot.Top = linPas.Y1 - shpSamolot.Height
shpOgon.Top = shpSamolot.Top - shpOgon.Height
If shpSamolot.Left + shpSamolot.Width + dX < linPas.X2 Then
shpSamolot.Left = shpSamolot.Left + dX
shpOgon.Left = shpSamolot.Left
Else
'
'
Zatrzymanie na końcu pasa i wyłączenie animacji
shpSamolot.Left = linPas.X2 - shpSamolot.Width
shpOgon.Left = shpSamolot.Left
'
timTimer.Enabled = False
grpTrybPracy.Enabled = True
End If
End If
Else
'
2. Start
'
'
Rozbieg po pasie
shpSamolot.Left = shpSamolot.Left + dX
shpOgon.Left = shpSamolot.Left
'
'
Oderwanie się od pasa i wznoszenie
If shpSamolot.Left + shpSamolot.Width + dX > linGranica.X1 Then
shpSamolot.Top = shpSamolot.Top - dY
shpOgon.Top = shpSamolot.Top - shpOgon.Height
End If
End If
End Sub
Private Sub btnPowrot_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnPowrot.Click
'
'
Powrót samolotu na pozycję początkową dla wybranego trybu pracy
If rbLadowanie.Checked Then
' Lądowanie
shpSamolot.Location = PoczatekLadowania
shpOgon.Left = PoczatekLadowania.X
shpOgon.Top = PoczatekLadowania.Y - shpOgon.Height
Else
' Start
shpSamolot.Location = PoczatekStartu
shpOgon.Left = PoczatekStartu.X
shpOgon.Top = PoczatekStartu.Y - shpOgon.Height
End If
End Sub
Private Sub rbLadowanie_CheckedChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles rbLadowanie.CheckedChanged
'
'
Sprawdzenie początkowego położenia samolotu i ewentualna korekta
If rbLadowanie.Checked = True Then
If shpSamolot.Location <> PoczatekLadowania Then
shpSamolot.Location = PoczatekLadowania
shpOgon.Left = shpSamolot.Left
shpOgon.Top = shpSamolot.Top - shpOgon.Height
End If
Else
If shpSamolot.Location <> PoczatekStartu Then
shpSamolot.Location = PoczatekStartu
shpOgon.Left = shpSamolot.Left
shpOgon.Top = shpSamolot.Top - shpOgon.Height
End If
End If
End Sub
End Class

Podobne dokumenty