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 Sub
Module1
'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 Type
goatse ok
Aihe on jo aika vanha, joten et voi enää vastata siihen.