Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Onkelma

CoDeR [07.06.2004 14:06:46]

#

Eli mulla on tässä tällanen koodi:

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Dim abc As Boolean 'Tätä ei ole pakko käyttää, mutta suositeltavaa
Dim x2 As Integer
Dim y2 As Integer



Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
abc = True

x2 = Picture1.Left

Select Case KeyCode

Case vbKeyRight And abc 'Oikealle
   x = Picture1.Left
   y = Picture1.Top
   Picture1.Left = Picture1.Left + 5
   x2 = x2 + 5
   Form1.Caption = x2 & ", " & y2
   abc = False


Case vbKeyLeft And abc 'Vasemmalle
   x = Picture1.Left
   y = Picture1.Top
   Picture1.Left = Picture1.Left - 5
   x2 = x2 - 5
   Form1.Caption = x2 & ", " & y2
   abc = False


Case vbKeyUp And abc  'ylös
   x = Picture1.Left
   y = Picture1.Top
   Picture1.Top = Picture1.Top - 5
   y2 = y2 - 5
   Form1.Caption = x2 & ", " & y2
   abc = False

Case vbKeyDown And abc 'alas
   x = Picture1.Left
   y = Picture1.Top
   Picture1.Top = Picture1.Top + 5
   y2 = y2 + 5
   Form1.Caption = x2 & ", " & y2
   abc = False


End Select


If Picture1.Left + Picture1.Width > Picture2.Left Then
 If Picture1.Left < Picture2.Left + Picture2.Width Then
     If Picture1.Top + Picture1.Height > Picture2.Top Then
         If Picture1.Top < Picture2.Top + Picture2.Height Then
              Picture1.Left = x
              Picture1.Top = y
         End If
     End If
 End If
End If
End Sub


Private Sub Form_Load()
Form1.Width = 15360
Form1.Height = 11520
x2 = 0
y2 = 0


End Sub

Private Sub mnuLopeta_Click()
End
End Sub

..ja tässä tuo sama on exenä: www.freewebs.com/apoch/harkka.exe

Ja ongelma on se että kun tossa ohjelmassa kun kulkee ukon kanssa valkoisen laatikon yläpuolelle ja kävelee sitä päin (alas päin nuoli pohjassa) niin ukko kyllä pysähtyy mutta y:n arvo jatkaa vain kasvamistaan. (sama toimii myös alhaalta päin)
....mutta tuo sama virhe ei kuitenkaan toistu kun ukolla kulkee boxia päin sivu suunnassa.

apuva???!

Antti Laaksonen [07.06.2004 14:22:26]

#

Koodiasi voi aika lailla lyhentää, esim. seuraavalla tavalla. Tosin kannattaisi ehkä ensin tarkistaa, että liikkuminen on mahdollista, ja sitten vasta liikuttaa kuvaa.

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    x = Picture1.Left
    y = Picture1.Top

    Select Case KeyCode
        Case vbKeyRight
            Picture1.Left = Picture1.Left + 5
        Case vbKeyLeft
            Picture1.Left = Picture1.Left - 5
        Case vbKeyUp
            Picture1.Top = Picture1.Top - 5
        Case vbKeyDown
            Picture1.Top = Picture1.Top + 5
    End Select

    If Picture1.Left + Picture1.Width > Picture2.Left Then
        If Picture1.Left < Picture2.Left + Picture2.Width Then
            If Picture1.Top + Picture1.Height > Picture2.Top Then
                If Picture1.Top < Picture2.Top + Picture2.Height Then
                    Picture1.Left = x
                    Picture1.Top = y
                End If
            End If
        End If
    End If

    Form1.Caption = Picture1.Left & ", " & Picture1.Top
End Sub

Private Sub Form_Load()
    Form1.Width = 15360
    Form1.Height = 11520
End Sub

Private Sub mnuLopeta_Click()
    End
End Sub

PS. Muista ensi kerralla kirjoittaa viestille kunnollinen otsikko ja laittaa koodin ympärille kooditagit.

CoDeR [07.06.2004 14:27:10]

#

kooditagit?

Anssi V [07.06.2004 14:29:01]

#

CoDeR kirjoitti:

kooditagit?

Lue ohjeet.

https://www.ohjelmointiputka.net/ohje.php?tunnus­=kohjeet

rndprogy [07.06.2004 14:29:09]

#

https://www.ohjelmointiputka.net/ohje.php?tunnus­=kohjeet
RTFM!!!

edit: Ajoissa sentään...

CoDeR [07.06.2004 14:32:41]

#

joo joo

Vastaus

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

Tietoa sivustosta