Tällä koodilla voi liikuttaa tiettyä objektia sulavasti. Liike alkaa nopeutuen ja pysähtyy hidastumalla, ei "seinään". Luo formille kaksi nappia (command1,command2) ja yksi timer (timer1). Luo myös moduuli, omaa tietotyyppiämme varten. Muuttujien käyttö on kuvattu kommenteissa.
Jos haluat nopeusmittarin, laita formille ProgressBar (progressbar1) ja lisää tämä koodi:
Timeriin:
ProgressBar1.Value = (100 / maksimiNopeus) * nopeus
Form-onLoadiin:
ProgressBar1.Min = 0
ProgressBar1.Max = 100
25.syys.-04 18:56 Muutettu koodia hiukan. Laitoin väli-ilmansuunnat ja reset-napin.
25.syys.-04 19:16 Laitoin if:ien tilalle select case:n ja kontrollien määrittelyyn enum:in.
Form1
'Alustetaan muuttujat
Dim nopeus As Integer
Dim mennaanX As Integer
Dim mennaanY As Integer
Dim näppäinYlhäällä As Integer
Dim maksimiNopeus As Integer
Dim nappiSivuPituus As Integer
'Määritellään näppäimet joita käytetään
Enum kontrollit
ylös = vbKeyNumpad8
alas = vbKeyNumpad2
vasen = vbKeyNumpad4
oikea = vbKeyNumpad6
koillinen = vbKeyNumpad9
kaakko = vbKeyNumpad3
lounas = vbKeyNumpad1
luode = vbKeyNumpad7
End Enum
'Alustetaan muuttuja, joka pitää sisällään tiedon käytettävistä kontrolleista
Dim kontrollit As ohjaus
Private Sub Command2_Click()
nopeus = 0
mennaanX = 0
mennaanY = 0
näppäinYlhäällä = 1
Command1.Top = 100
Command1.Left = 100
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'Tutkitaan mitä näppäintä käyttäjä painaa, otetaan käytettävät kontrollit selville omasta tietotyypistämme
Select Case KeyCode
Case kontrollit.vasen
näppäinYlhäällä = 0
mennaanX = -1
mennaanY = 0
Case kontrollit.ylös
näppäinYlhäällä = 0
mennaanX = 0
mennaanY = -1
Case kontrollit.oikea
näppäinYlhäällä = 0
mennaanX = 1
mennaanY = 0
Case kontrollit.alas
näppäinYlhäällä = 0
mennaanY = 1
mennaanX = 0
Case kontrollit.koillinen
näppäinYlhäällä = 0
mennaanY = -1
mennaanX = 1
Case kontrollit.kaakko
näppäinYlhäällä = 0
mennaanY = 1
mennaanX = 1
Case kontrollit.lounas
näppäinYlhäällä = 0
mennaanY = 1
mennaanX = -1
Case kontrollit.luode
näppäinYlhäällä = 0
mennaanY = -1
mennaanX = -1
End Select
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
'Käyttäjä päästi näppäimen ylös
näppäinYlhäällä = 1
End Sub
Private Sub Form_Load()
'Nopeus on aluksi nolla
nopeus = 0
'Miten usein päivitetään napin paikkaa, mitä pienempi, sitä useammin päivitetään
Timer1.Interval = 1
'Oletamme, että kaikki näppäimet ovat ylhäällä aluksi
näppäinYlhäällä = 1
'Miten nopeasti nappi voi liikkua
maksimiNopeus = 30
'Napin sivun pituus
nappiSivuPituus = 30
'Määritellään formin tietoja
Form1.AutoRedraw = True
Form1.ScaleMode = 3
Form1.Caption = "Ohjaa nappia käyttämällä numeronäppäimistöä"
Form1.KeyPreview = True
'Määritellään nappien tietoja
Command1.Height = nappiSivuPituus
Command1.Width = nappiSivuPituus
Command1.Top = 100
Command1.Left = 100
Command1.Caption = "[ ]"
Command2.Caption = "Reset"
End Sub
Private Sub Timer1_Timer()
'Liikutetaan nappia
If näppäinYlhäällä = 0 Then
'Valvotaan, ettei maksiminopeutta ylitetä
If nopeus < maksimiNopeus Then
'Lisätään nopeutta
nopeus = nopeus + 1
End If
If mennaanY = -1 Then
Command1.Top = Command1.Top - nopeus
ElseIf mennaanY = 1 Then
Command1.Top = Command1.Top + nopeus
End If
If mennaanX = -1 Then
Command1.Left = Command1.Left - nopeus
ElseIf mennaanX = 1 Then
Command1.Left = Command1.Left + nopeus
End If
ElseIf näppäinYlhäällä = 1 And nopeus > 0 Then
'Käyttäjä vapautti näppäimen, hidastetaan napin nopeutta
nopeus = nopeus - 1
If mennaanY = -1 Then
Command1.Top = Command1.Top - nopeus
ElseIf mennaanY = 1 Then
Command1.Top = Command1.Top + nopeus
End If
If mennaanX = -1 Then
Command1.Left = Command1.Left - nopeus
ElseIf mennaanX = 1 Then
Command1.Left = Command1.Left + nopeus
End If
End If
End SubModule1
'Määritellään ohjaus-tyyppi
Type ohjaus
ylös As Integer
alas As Integer
oikea As Integer
vasen As Integer
koillinen As Integer
kaakko As Integer
lounas As Integer
luode As Integer
End Typegoatse ok
Aihe on jo aika vanha, joten et voi enää vastata siihen.