Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Virhe koodissa!

Feel Free [17.04.2004 12:42:08]

#

Löydättekö tästä koodsita virheitä? Minä en löydä, mutta se jää aina vaan valittamaan sitä "Et voi poistua pelialueelta!" vaikka painan mitä tahansa!
---

If PeliHemmo.Left = 0 And PeliHemmo.Top = 0 Then
    MsgBox "Et voi poistua pelialueelta!"
ElseIf PeliHemmo.Left = 0 Then
    MsgBox "Et voi poistua pelialuuelta!"
Else
    If PeliHemmo.Top = 0 Then
        MsgBox "Et voi poistua pelialueelta!"
    ElseIf PeliHemmo.Left = 5760 Then
        MsgBox "Et voi poistua pelialuuelta!"
    Else
        If PeliHemmo.Top = 4200 Then
            MsgBox "Et voi poistua pelialuuelta!"
        Else
            Select Case KeyCode
                Case vbKeyLeft
                    If PeliHemmo.Left = 120 And PeliHemmo.Top = 2040 Then
                    Unload Me
                    Else
                    PeliHemmo.Move PeliHemmo.Left - 60
                    End If
                Case vbKeyUp
                    PeliHemmo.Move PeliHemmo.Left, PeliHemmo.Top - 60
                Case vbKeyDown
                    PeliHemmo.Move PeliHemmo.Left, PeliHemmo.Top + 60
                Case vbKeyRight
                    PeliHemmo.Move PeliHemmo.Left + 60
            End Select
        End If
    End If
End If

Antti [17.04.2004 12:54:45]

#

Joo käsittelet tuota samaa ehtoa moneen kertaan. Kokeiles:

Select Case KeyCode
    Case vbKeyLeft
        If PeliHemmo.Left = 120 And PeliHemmo.Top = 2040 Then
            Unload Me
        Else
            PeliHemmo.Move PeliHemmo.Left - 60
            If PeliHemmo.Left < 0 Or PeliHemmo.Top < 0 Or PeliHemmo.Left > 5760 Or PeliHemmo.Top > 4200 Then
                MsgBox "Et voi poistua pelialueelta!"
                PeliHemmo.Move PeliHemmo.Left + 60
            End If
        End If

    Case vbKeyUp
        PeliHemmo.Move PeliHemmo.Left, PeliHemmo.Top - 60
        If PeliHemmo.Left < 0 Or PeliHemmo.Top < 0 Or PeliHemmo.Left > 5760 Or PeliHemmo.Top > 4200 Then
            MsgBox "Et voi poistua pelialueelta!"
            PeliHemmo.Move PeliHemmo.Left, PeliHemmo.Top + 60
        End If

    Case vbKeyDown
        PeliHemmo.Move PeliHemmo.Left, PeliHemmo.Top + 60
        If PeliHemmo.Left < 0 Or PeliHemmo.Top < 0 Or PeliHemmo.Left > 5760 Or PeliHemmo.Top > 4200 Then
            MsgBox "Et voi poistua pelialueelta!"
            PeliHemmo.Move PeliHemmo.Left, PeliHemmo.Top - 60
        End If

    Case vbKeyRight
        PeliHemmo.Move PeliHemmo.Left + 60
        If PeliHemmo.Left < 0 Or PeliHemmo.Top < 0 Or PeliHemmo.Left > 5760 Or PeliHemmo.Top > 4200 Then
            MsgBox "Et voi poistua pelialueelta!"
            PeliHemmo.Move PeliHemmo.Left - 60
        End If
End Select

Feel Free [17.04.2004 12:58:01]

#

ok, kokeillaan...

Feel Free [17.04.2004 13:01:35]

#

nyt toimii! Kiitos sulle!

Antti [17.04.2004 13:44:36]

#

Sinun kannattaisi kuitenkin tutkia pelialueen dynaamisia arvoja kiinteiden arvojen sijaan.

Eli jos hemmo liikkuu formilla:

If PeliHemmo.Left < Form.Left Or PeliHemmo.Top < Form.Top Or (PeliHemmo.Left+PeliHemmo.Width) > Form.ScaleWidth Or (PeliHemmo.Top+PeliHemmo.Height) > Form.ScaleHeight Then
               MsgBox "Et voi poistua pelialueelta!"
...jne...

Oheisella koodilla peliformia voi skaalata.

Feel Free [17.04.2004 15:23:06]

#

vois kai totakin joskus kokeilla

Vastaus

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

Tietoa sivustosta