Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Pysähtyminen

efteri [02.01.2004 12:34:26]

#

Miten saan ukon pysähtymään esim picture2 :kakkoseen
(eli kun ukko1 koskee picture1 niin ukko1 ei pääse eteen päin ja sitten kun painaa ylös niin ukko menee ylös ja niin edeleen)
(vb:sä)

tuomas [02.01.2004 12:36:49]

#

Tämä on antin koodin pätkä!
ei minun...


Tässä on toimiva koodi. Laita formille kaksi PictureBoxia, joiden nimet ovat pEste ja pPelaaja. Formin KeyPreview-ominaisuuden täytyy olla True, jotta näppäinohjaus toimii kunnolla, ja formin sekä molempien PictureBoxien ScaleModen täytyy olla 3 eli Pixel.

Dim x As Integer, y As Integer

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   Dim ux As Integer, uy As Integer
   ux = x
   uy = y
   Select Case KeyCode
   Case vbKeyLeft
       ux = ux - 1
   Case vbKeyUp
       uy = uy - 1
   Case vbKeyRight
       ux = ux + 1
   Case vbKeyDown
       uy = uy + 1
   End Select
   If ux + pPelaaja.Width > pEste.Left And ux < pEste.Left + pEste.Width Then
       If uy + pPelaaja.Height > pEste.Top And uy < pEste.Top + pEste.Height Then
           Exit Sub
       End If
   End If
   x = ux
   y = uy
   pPelaaja.Move x, y
End Sub

Private Sub Form_Load()
   x = 0
   y = 0
   pPelaaja.Move x, y
End Sub

Mitä nuo kummalliset If-lauseet sitten tekevät? Ensimmäinen tarkistaa, onko pPelaaja pEsteen sisällä vaakasuunnassa ja jälkimmäinen tarkistaa, onko pPelaaja pEsteen sisällä pystysuunnassa. Jos kummatkin ehdot ovat tosia, liikkuminen ei ole mahdollista, minkä vuoksi poistutaan aliohjelmasta.

efteri [02.01.2004 18:10:51]

#

siinä on se vikana että se ei toimi!

Antti Laaksonen [02.01.2004 18:36:40]

#

Poistin vähän turhia viestejä välistä. Tuo koodinpätkä toimii kyllä (testattu Visual Basic 6.0:lla), jos seuraat alussa olevia ohjeita. Ja jos ei kuitenkaan toimi, sinun täytyy kuvata ongelmasi tarkasti eikä pelkästään sanoa "ei toimi".

efteri [02.01.2004 18:57:50]

#

Mutta sitä tuskin on testattu Visual Basic 3:mosessa
(on minulla kutonenkin mutta sillä ei pysty tekemään exe:ä niin siitä ei ole hyöty joten tarvitsen koodin pätkän joka toimii Visual Basic 3:mosessa)

Antti Laaksonen [02.01.2004 19:41:57]

#

Kolmosversiossa toimii muuten suoraan, mutta näppäinvakioiden tilalla täytyy käyttää näppäinkoodeja. Eli muuta Select-rakennetta näin:

Select Case KeyCode
    Case 37          'vasemmalle
        ux = ux - 1
    Case 38          'ylös
        uy = uy - 1
    Case 39          'oikealle
        ux = ux + 1
    Case 40          'alas
        uy = uy + 1
End Select

Toinen vaihtoehto on määrittää vakiot itse ohjelman alussa:

Const vbKeyLeft = 37
Const vbKeyUp = 38
Const vbKeyRight = 39
Const vbKeyDown = 40

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta